Adding implementation of KEP-3335, StatefulSetSlice

This commit is contained in:
Peter Schuurman 2022-09-26 18:34:03 -07:00
parent 2b7b5245ea
commit 7b3d77a41a
37 changed files with 1804 additions and 507 deletions

View File

@ -1624,6 +1624,17 @@
}
]
},
"io.k8s.api.apps.v1.StatefulSetOrdinals": {
"description": "StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet.",
"properties": {
"start": {
"description": "Start is the number representing the first index that is used to represent replica ordinals. Defaults to 0. If set, replica ordinals will be numbered [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).",
"format": "int32",
"type": "integer"
}
},
"type": "object"
},
"io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy": {
"description": "StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.",
"properties": {
@ -1646,6 +1657,10 @@
"format": "int32",
"type": "integer"
},
"ordinals": {
"$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSetOrdinals",
"description": "Ordinals controls how the stateful set creates pod and persistent volume claim names. The default behavior assigns a number starting with zero and incremented by one for each additional replica requested. This requires the StatefulSetSlice feature gate to be enabled, which is alpha."
},
"persistentVolumeClaimRetentionPolicy": {
"$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy",
"description": "persistentVolumeClaimRetentionPolicy describes the lifecycle of persistent volume claims created from volumeClaimTemplates. By default, all persistent volume claims are created as needed and retained until manually deleted. This policy allows the lifecycle to be altered, for example by deleting persistent volume claims when their stateful set is deleted, or when their pod is scaled down. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha. +optional"

View File

@ -1044,6 +1044,18 @@
}
]
},
"io.k8s.api.apps.v1.StatefulSetOrdinals": {
"description": "StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet.",
"properties": {
"start": {
"default": 0,
"description": "Start is the number representing the first index that is used to represent replica ordinals. Defaults to 0. If set, replica ordinals will be numbered [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).",
"format": "int32",
"type": "integer"
}
},
"type": "object"
},
"io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy": {
"description": "StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.",
"properties": {
@ -1066,6 +1078,14 @@
"format": "int32",
"type": "integer"
},
"ordinals": {
"allOf": [
{
"$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetOrdinals"
}
],
"description": "Ordinals controls how the stateful set creates pod and persistent volume claim names. The default behavior assigns a number starting with zero and incremented by one for each additional replica requested. This requires the StatefulSetSlice feature gate to be enabled, which is alpha."
},
"persistentVolumeClaimRetentionPolicy": {
"allOf": [
{

View File

@ -143,6 +143,17 @@ type StatefulSetPersistentVolumeClaimRetentionPolicy struct {
WhenScaled PersistentVolumeClaimRetentionPolicyType
}
// StatefulSetOrdinals describes the policy used for replica ordinal assignment
// in this StatefulSet.
type StatefulSetOrdinals struct {
// Start is the number representing the first index that is used to represent
// replica ordinals. Defaults to 0.
// If set, replica ordinals will be numbered
// [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).
// +optional
Start int32
}
// A StatefulSetSpec is the specification of a StatefulSet.
type StatefulSetSpec struct {
// Replicas is the desired number of replicas of the given Template.
@ -215,6 +226,14 @@ type StatefulSetSpec struct {
// StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.
// +optional
PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy
// Ordinals controls how the stateful set creates pod and persistent volume
// claim names.
// The default behavior assigns a number starting with zero and incremented by
// one for each additional replica requested. This requires the
// StatefulSetSlice feature gate to be enabled, which is alpha.
// +optional
Ordinals *StatefulSetOrdinals
}
// StatefulSetStatus represents the current state of a StatefulSet.

View File

@ -1206,6 +1206,7 @@ func autoConvert_v1_StatefulSetSpec_To_apps_StatefulSetSpec(in *v1.StatefulSetSp
out.RevisionHistoryLimit = (*int32)(unsafe.Pointer(in.RevisionHistoryLimit))
out.MinReadySeconds = in.MinReadySeconds
out.PersistentVolumeClaimRetentionPolicy = (*apps.StatefulSetPersistentVolumeClaimRetentionPolicy)(unsafe.Pointer(in.PersistentVolumeClaimRetentionPolicy))
// WARNING: in.Ordinals requires manual conversion: does not exist in peer-type
return nil
}
@ -1226,6 +1227,7 @@ func autoConvert_apps_StatefulSetSpec_To_v1_StatefulSetSpec(in *apps.StatefulSet
out.RevisionHistoryLimit = (*int32)(unsafe.Pointer(in.RevisionHistoryLimit))
out.MinReadySeconds = in.MinReadySeconds
out.PersistentVolumeClaimRetentionPolicy = (*v1.StatefulSetPersistentVolumeClaimRetentionPolicy)(unsafe.Pointer(in.PersistentVolumeClaimRetentionPolicy))
// WARNING: in.ReplicaStartOrdinal requires manual conversion: does not exist in peer-type
return nil
}

View File

@ -870,6 +870,7 @@ func autoConvert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec(in *v1beta1.Sta
out.RevisionHistoryLimit = (*int32)(unsafe.Pointer(in.RevisionHistoryLimit))
out.MinReadySeconds = in.MinReadySeconds
out.PersistentVolumeClaimRetentionPolicy = (*apps.StatefulSetPersistentVolumeClaimRetentionPolicy)(unsafe.Pointer(in.PersistentVolumeClaimRetentionPolicy))
// WARNING: in.Ordinals requires manual conversion: does not exist in peer-type
return nil
}
@ -890,6 +891,7 @@ func autoConvert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec(in *apps.Statef
out.RevisionHistoryLimit = (*int32)(unsafe.Pointer(in.RevisionHistoryLimit))
out.MinReadySeconds = in.MinReadySeconds
out.PersistentVolumeClaimRetentionPolicy = (*v1beta1.StatefulSetPersistentVolumeClaimRetentionPolicy)(unsafe.Pointer(in.PersistentVolumeClaimRetentionPolicy))
// WARNING: in.ReplicaStartOrdinal requires manual conversion: does not exist in peer-type
return nil
}

View File

@ -1302,6 +1302,7 @@ func autoConvert_v1beta2_StatefulSetSpec_To_apps_StatefulSetSpec(in *v1beta2.Sta
out.RevisionHistoryLimit = (*int32)(unsafe.Pointer(in.RevisionHistoryLimit))
out.MinReadySeconds = in.MinReadySeconds
out.PersistentVolumeClaimRetentionPolicy = (*apps.StatefulSetPersistentVolumeClaimRetentionPolicy)(unsafe.Pointer(in.PersistentVolumeClaimRetentionPolicy))
// WARNING: in.Ordinals requires manual conversion: does not exist in peer-type
return nil
}
@ -1322,6 +1323,7 @@ func autoConvert_apps_StatefulSetSpec_To_v1beta2_StatefulSetSpec(in *apps.Statef
out.RevisionHistoryLimit = (*int32)(unsafe.Pointer(in.RevisionHistoryLimit))
out.MinReadySeconds = in.MinReadySeconds
out.PersistentVolumeClaimRetentionPolicy = (*v1beta2.StatefulSetPersistentVolumeClaimRetentionPolicy)(unsafe.Pointer(in.PersistentVolumeClaimRetentionPolicy))
// WARNING: in.ReplicaStartOrdinal requires manual conversion: does not exist in peer-type
return nil
}

View File

@ -28,9 +28,11 @@ import (
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/kubernetes/pkg/apis/apps"
api "k8s.io/kubernetes/pkg/apis/core"
apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/features"
)
// ValidateStatefulSetName can be used to check whether the given StatefulSet name is valid.
@ -128,6 +130,12 @@ func ValidateStatefulSetSpec(spec *apps.StatefulSetSpec, fldPath *field.Path, op
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(spec.Replicas), fldPath.Child("replicas"))...)
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(spec.MinReadySeconds), fldPath.Child("minReadySeconds"))...)
if utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetSlice) {
if spec.Ordinals != nil {
replicaStartOrdinal := spec.Ordinals.Start
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(replicaStartOrdinal), fldPath.Child("ordinals.start"))...)
}
}
if spec.Selector == nil {
allErrs = append(allErrs, field.Required(fldPath.Child("selector"), ""))
@ -177,11 +185,18 @@ func ValidateStatefulSetUpdate(statefulSet, oldStatefulSet *apps.StatefulSet, op
newStatefulSetClone.Spec.Template = oldStatefulSet.Spec.Template // +k8s:verify-mutation:reason=clone
newStatefulSetClone.Spec.UpdateStrategy = oldStatefulSet.Spec.UpdateStrategy // +k8s:verify-mutation:reason=clone
newStatefulSetClone.Spec.MinReadySeconds = oldStatefulSet.Spec.MinReadySeconds // +k8s:verify-mutation:reason=clone
if utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetSlice) {
newStatefulSetClone.Spec.Ordinals = oldStatefulSet.Spec.Ordinals // +k8s:verify-mutation:reason=clone
}
newStatefulSetClone.Spec.PersistentVolumeClaimRetentionPolicy = oldStatefulSet.Spec.PersistentVolumeClaimRetentionPolicy // +k8s:verify-mutation:reason=clone
if !apiequality.Semantic.DeepEqual(newStatefulSetClone.Spec, oldStatefulSet.Spec) {
if utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetSlice) {
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec"), "updates to statefulset spec for fields other than 'replicas', 'ordinals', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden"))
} else {
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec"), "updates to statefulset spec for fields other than 'replicas', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden"))
}
}
return allErrs
}

View File

@ -86,6 +86,8 @@ func TestValidateStatefulSet(t *testing.T) {
const enableStatefulSetAutoDeletePVC = "[enable StatefulSetAutoDeletePVC]"
const enableStatefulSetSlice = "[enable StatefulSetSlice]"
type testCase struct {
name string
set apps.StatefulSet
@ -193,6 +195,20 @@ func TestValidateStatefulSet(t *testing.T) {
},
},
},
{
name: "ordinals.start positive value " + enableStatefulSetSlice,
set: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.ParallelPodManagement,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
Replicas: 3,
Ordinals: &apps.StatefulSetOrdinals{Start: 2},
},
},
},
}
errorCases := []testCase{
@ -635,6 +651,23 @@ func TestValidateStatefulSet(t *testing.T) {
field.Invalid(field.NewPath("spec", "updateStrategy", "rollingUpdate", "maxUnavailable"), nil, ""),
},
},
{
name: "invalid ordinals.start " + enableStatefulSetSlice,
set: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.ParallelPodManagement,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
Replicas: 3,
Ordinals: &apps.StatefulSetOrdinals{Start: -2},
},
},
errs: field.ErrorList{
field.Invalid(field.NewPath("spec", "ordinals.start"), nil, ""),
},
},
}
cmpOpts := []cmp.Option{cmpopts.IgnoreFields(field.Error{}, "BadValue", "Detail"), cmpopts.SortSlices(func(a, b *field.Error) bool { return a.Error() < b.Error() })}
@ -651,6 +684,9 @@ func TestValidateStatefulSet(t *testing.T) {
if strings.Contains(name, enableStatefulSetAutoDeletePVC) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.StatefulSetAutoDeletePVC, true)()
}
if strings.Contains(name, enableStatefulSetSlice) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.StatefulSetSlice, true)()
}
errs := ValidateStatefulSet(&testCase.set, pod.GetValidationOptionsFromPodTemplate(&testCase.set.Spec.Template, nil))
wantErrs := testCase.errs

View File

@ -303,52 +303,53 @@ func (ssc *defaultStatefulSetControl) updateStatefulSet(
*status.CollisionCount = collisionCount
replicaCount := int(*set.Spec.Replicas)
// slice that will contain all Pods such that 0 <= getOrdinal(pod) < set.Spec.Replicas
// slice that will contain all Pods such that getStartOrdinal(set) <= getOrdinal(pod) <= getEndOrdinal(set)
replicas := make([]*v1.Pod, replicaCount)
// slice that will contain all Pods such that set.Spec.Replicas <= getOrdinal(pod)
// slice that will contain all Pods such that getOrdinal(pod) < getStartOrdinal(set) OR getOrdinal(pod) > getEndOrdinal(set)
condemned := make([]*v1.Pod, 0, len(pods))
unhealthy := 0
var firstUnhealthyPod *v1.Pod
// First we partition pods into two lists valid replicas and condemned Pods
for i := range pods {
for _, pod := range pods {
status.Replicas++
// count the number of running and ready replicas
if isRunningAndReady(pods[i]) {
if isRunningAndReady(pod) {
status.ReadyReplicas++
// count the number of running and available replicas
if isRunningAndAvailable(pods[i], set.Spec.MinReadySeconds) {
if isRunningAndAvailable(pod, set.Spec.MinReadySeconds) {
status.AvailableReplicas++
}
}
// count the number of current and update replicas
if isCreated(pods[i]) && !isTerminating(pods[i]) {
if getPodRevision(pods[i]) == currentRevision.Name {
if isCreated(pod) && !isTerminating(pod) {
if getPodRevision(pod) == currentRevision.Name {
status.CurrentReplicas++
}
if getPodRevision(pods[i]) == updateRevision.Name {
if getPodRevision(pod) == updateRevision.Name {
status.UpdatedReplicas++
}
}
if ord := getOrdinal(pods[i]); 0 <= ord && ord < replicaCount {
if podInOrdinalRange(pod, set) {
// if the ordinal of the pod is within the range of the current number of replicas,
// insert it at the indirection of its ordinal
replicas[ord] = pods[i]
} else if ord >= replicaCount {
// if the ordinal is greater than the number of replicas add it to the condemned list
condemned = append(condemned, pods[i])
replicas[getOrdinal(pod)-getStartOrdinal(set)] = pod
} else if getOrdinal(pod) >= 0 {
// if the ordinal is valid, but not within the range add it to the condemned list
condemned = append(condemned, pod)
}
// If the ordinal could not be parsed (ord < 0), ignore the Pod.
}
// for any empty indices in the sequence [0,set.Spec.Replicas) create a new Pod at the correct revision
for ord := 0; ord < replicaCount; ord++ {
if replicas[ord] == nil {
replicas[ord] = newVersionedStatefulSetPod(
for ord := getStartOrdinal(set); ord <= getEndOrdinal(set); ord++ {
replicaIdx := ord - getStartOrdinal(set)
if replicas[replicaIdx] == nil {
replicas[replicaIdx] = newVersionedStatefulSetPod(
currentSet,
updateSet,
currentRevision.Name,
@ -409,12 +410,13 @@ func (ssc *defaultStatefulSetControl) updateStatefulSet(
status.UpdatedReplicas--
}
status.Replicas--
replicaOrd := i + getStartOrdinal(set)
replicas[i] = newVersionedStatefulSetPod(
currentSet,
updateSet,
currentRevision.Name,
updateRevision.Name,
i)
replicaOrd)
}
// If we find a Pod that has not been created we create the Pod
if !isCreated(replicas[i]) {
@ -501,7 +503,7 @@ func (ssc *defaultStatefulSetControl) updateStatefulSet(
// At this point, all of the current Replicas are Running, Ready and Available, we can consider termination.
// We will wait for all predecessors to be Running and Ready prior to attempting a deletion.
// We will terminate Pods in a monotonically decreasing order over [len(pods),set.Spec.Replicas).
// We will terminate Pods in a monotonically decreasing order.
// Note that we do not resurrect Pods in this interval. Also note that scaling will take precedence over
// updates.
for target := len(condemned) - 1; target >= 0; target-- {
@ -614,7 +616,7 @@ func updateStatefulSetAfterInvariantEstablished(
}
}
// Collect all targets in the range between the 0 and Spec.Replicas. Count any targets in that range
// Collect all targets in the range between getStartOrdinal(set) and getEndOrdinal(set). Count any targets in that range
// that are unhealthy i.e. terminated or not running and ready as unavailable). Select the
// (MaxUnavailable - Unavailable) Pods, in order with respect to their ordinal for termination. Delete
// those pods and count the successful deletions. Update the status with the correct number of deletions.

View File

@ -559,6 +559,74 @@ func PodRecreateDeleteFailure(t *testing.T, set *apps.StatefulSet, invariants in
}
}
func emptyInvaraints(set *apps.StatefulSet, om *fakeObjectManager) error {
return nil
}
func TestStatefulSetControlWithStartOrdinal(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.StatefulSetSlice, true)()
simpleSetFn := func() *apps.StatefulSet {
statefulSet := newStatefulSet(3)
statefulSet.Spec.Ordinals = &apps.StatefulSetOrdinals{Start: int32(2)}
return statefulSet
}
testCases := []struct {
fn func(*testing.T, *apps.StatefulSet, invariantFunc)
obj func() *apps.StatefulSet
}{
{CreatesPodsWithStartOrdinal, simpleSetFn},
}
for _, testCase := range testCases {
testObj := testCase.obj
testFn := testCase.fn
set := testObj()
testFn(t, set, emptyInvaraints)
}
}
func CreatesPodsWithStartOrdinal(t *testing.T, set *apps.StatefulSet, invariants invariantFunc) {
client := fake.NewSimpleClientset(set)
om, _, ssc := setupController(client)
if err := scaleUpStatefulSetControl(set, ssc, om, invariants); err != nil {
t.Errorf("Failed to turn up StatefulSet : %s", err)
}
var err error
set, err = om.setsLister.StatefulSets(set.Namespace).Get(set.Name)
if err != nil {
t.Fatalf("Error getting updated StatefulSet: %v", err)
}
if set.Status.Replicas != 3 {
t.Error("Failed to scale statefulset to 3 replicas")
}
if set.Status.ReadyReplicas != 3 {
t.Error("Failed to set ReadyReplicas correctly")
}
if set.Status.UpdatedReplicas != 3 {
t.Error("Failed to set UpdatedReplicas correctly")
}
selector, err := metav1.LabelSelectorAsSelector(set.Spec.Selector)
if err != nil {
t.Error(err)
}
pods, err := om.podsLister.Pods(set.Namespace).List(selector)
if err != nil {
t.Error(err)
}
sort.Sort(ascendingOrdinal(pods))
for i, pod := range pods {
expectedOrdinal := 2 + i
actualPodOrdinal := getOrdinal(pod)
if actualPodOrdinal != expectedOrdinal {
t.Errorf("Expected pod ordinal %d. Got %d", expectedOrdinal, actualPodOrdinal)
}
}
}
func TestStatefulSetControlScaleDownDeleteError(t *testing.T) {
runTestOverPVCRetentionPolicies(
t, "", func(t *testing.T, policy *apps.StatefulSetPersistentVolumeClaimRetentionPolicy) {
@ -2299,6 +2367,16 @@ func (om *fakeObjectManager) SetDeleteStatefulPodError(err error, after int) {
om.deletePodTracker.after = after
}
func findPodByOrdinal(pods []*v1.Pod, ordinal int) *v1.Pod {
for _, pod := range pods {
if getOrdinal(pod) == ordinal {
return pod.DeepCopy()
}
}
return nil
}
func (om *fakeObjectManager) setPodPending(set *apps.StatefulSet, ordinal int) ([]*v1.Pod, error) {
selector, err := metav1.LabelSelectorAsSelector(set.Spec.Selector)
if err != nil {
@ -2308,11 +2386,10 @@ func (om *fakeObjectManager) setPodPending(set *apps.StatefulSet, ordinal int) (
if err != nil {
return nil, err
}
if 0 > ordinal || ordinal >= len(pods) {
return nil, fmt.Errorf("ordinal %d out of range [0,%d)", ordinal, len(pods))
pod := findPodByOrdinal(pods, ordinal)
if pod == nil {
return nil, fmt.Errorf("setPodPending: pod ordinal %d not found", ordinal)
}
sort.Sort(ascendingOrdinal(pods))
pod := pods[ordinal].DeepCopy()
pod.Status.Phase = v1.PodPending
fakeResourceVersion(pod)
om.podsIndexer.Update(pod)
@ -2328,11 +2405,10 @@ func (om *fakeObjectManager) setPodRunning(set *apps.StatefulSet, ordinal int) (
if err != nil {
return nil, err
}
if 0 > ordinal || ordinal >= len(pods) {
return nil, fmt.Errorf("ordinal %d out of range [0,%d)", ordinal, len(pods))
pod := findPodByOrdinal(pods, ordinal)
if pod == nil {
return nil, fmt.Errorf("setPodRunning: pod ordinal %d not found", ordinal)
}
sort.Sort(ascendingOrdinal(pods))
pod := pods[ordinal].DeepCopy()
pod.Status.Phase = v1.PodRunning
fakeResourceVersion(pod)
om.podsIndexer.Update(pod)
@ -2348,11 +2424,10 @@ func (om *fakeObjectManager) setPodReady(set *apps.StatefulSet, ordinal int) ([]
if err != nil {
return nil, err
}
if 0 > ordinal || ordinal >= len(pods) {
return nil, fmt.Errorf("ordinal %d out of range [0,%d)", ordinal, len(pods))
pod := findPodByOrdinal(pods, ordinal)
if pod == nil {
return nil, fmt.Errorf("setPodReady: pod ordinal %d not found", ordinal)
}
sort.Sort(ascendingOrdinal(pods))
pod := pods[ordinal].DeepCopy()
condition := v1.PodCondition{Type: v1.PodReady, Status: v1.ConditionTrue}
podutil.UpdatePodCondition(&pod.Status, &condition)
fakeResourceVersion(pod)
@ -2369,11 +2444,10 @@ func (om *fakeObjectManager) setPodAvailable(set *apps.StatefulSet, ordinal int,
if err != nil {
return nil, err
}
if 0 > ordinal || ordinal >= len(pods) {
return nil, fmt.Errorf("ordinal %d out of range [0,%d)", ordinal, len(pods))
pod := findPodByOrdinal(pods, ordinal)
if pod == nil {
return nil, fmt.Errorf("setPodAvailable: pod ordinal %d not found", ordinal)
}
sort.Sort(ascendingOrdinal(pods))
pod := pods[ordinal].DeepCopy()
condition := v1.PodCondition{Type: v1.PodReady, Status: v1.ConditionTrue, LastTransitionTime: metav1.Time{Time: lastTransitionTime}}
_, existingCondition := podutil.GetPodCondition(&pod.Status, condition.Type)
if existingCondition != nil {
@ -2467,28 +2541,28 @@ func assertMonotonicInvariants(set *apps.StatefulSet, om *fakeObjectManager) err
return err
}
sort.Sort(ascendingOrdinal(pods))
for ord := 0; ord < len(pods); ord++ {
if ord > 0 && isRunningAndReady(pods[ord]) && !isRunningAndReady(pods[ord-1]) {
return fmt.Errorf("successor %s is Running and Ready while %s is not", pods[ord].Name, pods[ord-1].Name)
for idx := 0; idx < len(pods); idx++ {
if idx > 0 && isRunningAndReady(pods[idx]) && !isRunningAndReady(pods[idx-1]) {
return fmt.Errorf("successor %s is Running and Ready while %s is not", pods[idx].Name, pods[idx-1].Name)
}
if getOrdinal(pods[ord]) != ord {
return fmt.Errorf("pods %s deployed in the wrong order %d", pods[ord].Name, ord)
if ord := idx + getStartOrdinal(set); getOrdinal(pods[idx]) != ord {
return fmt.Errorf("pods %s deployed in the wrong order %d", pods[idx].Name, ord)
}
if !storageMatches(set, pods[ord]) {
return fmt.Errorf("pods %s does not match the storage specification of StatefulSet %s ", pods[ord].Name, set.Name)
if !storageMatches(set, pods[idx]) {
return fmt.Errorf("pods %s does not match the storage specification of StatefulSet %s ", pods[idx].Name, set.Name)
}
for _, claim := range getPersistentVolumeClaims(set, pods[ord]) {
for _, claim := range getPersistentVolumeClaims(set, pods[idx]) {
claim, _ := om.claimsLister.PersistentVolumeClaims(set.Namespace).Get(claim.Name)
if err := checkClaimInvarients(set, pods[ord], claim, ord); err != nil {
if err := checkClaimInvarients(set, pods[idx], claim); err != nil {
return err
}
}
if !identityMatches(set, pods[ord]) {
return fmt.Errorf("pods %s does not match the identity specification of StatefulSet %s ", pods[ord].Name, set.Name)
if !identityMatches(set, pods[idx]) {
return fmt.Errorf("pods %s does not match the identity specification of StatefulSet %s ", pods[idx].Name, set.Name)
}
}
return nil
@ -2504,24 +2578,24 @@ func assertBurstInvariants(set *apps.StatefulSet, om *fakeObjectManager) error {
return err
}
sort.Sort(ascendingOrdinal(pods))
for ord := 0; ord < len(pods); ord++ {
if !storageMatches(set, pods[ord]) {
return fmt.Errorf("pods %s does not match the storage specification of StatefulSet %s ", pods[ord].Name, set.Name)
for _, pod := range pods {
if !storageMatches(set, pod) {
return fmt.Errorf("pods %s does not match the storage specification of StatefulSet %s ", pod.Name, set.Name)
}
for _, claim := range getPersistentVolumeClaims(set, pods[ord]) {
for _, claim := range getPersistentVolumeClaims(set, pod) {
claim, err := om.claimsLister.PersistentVolumeClaims(set.Namespace).Get(claim.Name)
if err != nil {
return err
}
if err := checkClaimInvarients(set, pods[ord], claim, ord); err != nil {
if err := checkClaimInvarients(set, pod, claim); err != nil {
return err
}
}
if !identityMatches(set, pods[ord]) {
if !identityMatches(set, pod) {
return fmt.Errorf("pods %s does not match the identity specification of StatefulSet %s ",
pods[ord].Name,
pod.Name,
set.Name)
}
}
@ -2538,24 +2612,24 @@ func assertUpdateInvariants(set *apps.StatefulSet, om *fakeObjectManager) error
return err
}
sort.Sort(ascendingOrdinal(pods))
for ord := 0; ord < len(pods); ord++ {
for _, pod := range pods {
if !storageMatches(set, pods[ord]) {
return fmt.Errorf("pod %s does not match the storage specification of StatefulSet %s ", pods[ord].Name, set.Name)
if !storageMatches(set, pod) {
return fmt.Errorf("pod %s does not match the storage specification of StatefulSet %s ", pod.Name, set.Name)
}
for _, claim := range getPersistentVolumeClaims(set, pods[ord]) {
for _, claim := range getPersistentVolumeClaims(set, pod) {
claim, err := om.claimsLister.PersistentVolumeClaims(set.Namespace).Get(claim.Name)
if err != nil {
return err
}
if err := checkClaimInvarients(set, pods[ord], claim, ord); err != nil {
if err := checkClaimInvarients(set, pod, claim); err != nil {
return err
}
}
if !identityMatches(set, pods[ord]) {
return fmt.Errorf("pod %s does not match the identity specification of StatefulSet %s ", pods[ord].Name, set.Name)
if !identityMatches(set, pod) {
return fmt.Errorf("pod %s does not match the identity specification of StatefulSet %s ", pod.Name, set.Name)
}
}
if set.Spec.UpdateStrategy.Type == apps.OnDeleteStatefulSetStrategyType {
@ -2576,7 +2650,7 @@ func assertUpdateInvariants(set *apps.StatefulSet, om *fakeObjectManager) error
return nil
}
func checkClaimInvarients(set *apps.StatefulSet, pod *v1.Pod, claim *v1.PersistentVolumeClaim, ordinal int) error {
func checkClaimInvarients(set *apps.StatefulSet, pod *v1.Pod, claim *v1.PersistentVolumeClaim) error {
policy := apps.StatefulSetPersistentVolumeClaimRetentionPolicy{
WhenScaled: apps.RetainPersistentVolumeClaimRetentionPolicyType,
WhenDeleted: apps.RetainPersistentVolumeClaimRetentionPolicyType,
@ -2618,14 +2692,14 @@ func checkClaimInvarients(set *apps.StatefulSet, pod *v1.Pod, claim *v1.Persiste
if hasOwnerRef(claim, set) {
return fmt.Errorf("claim %s has unexpected owner ref on %s for scaledown only", claim.Name, set.Name)
}
if ordinal >= int(*set.Spec.Replicas) && !hasOwnerRef(claim, pod) {
if !podInOrdinalRange(pod, set) && !hasOwnerRef(claim, pod) {
return fmt.Errorf("claim %s does not have owner ref on condemned pod %s for scaledown delete", claim.Name, pod.Name)
}
if ordinal < int(*set.Spec.Replicas) && hasOwnerRef(claim, pod) {
return fmt.Errorf("claim %s has unexpected owner ref on condemned pod %s for scaledown delete", claim.Name, pod.Name)
if podInOrdinalRange(pod, set) && hasOwnerRef(claim, pod) {
return fmt.Errorf("claim %s has unexpected owner ref on condemned pod %s for scaledown delete. ordinal: %d, [%d,%d]", claim.Name, pod.Name, getOrdinal(pod), getStartOrdinal(set), getEndOrdinal(set))
}
case policy.WhenScaled == delete && policy.WhenDeleted == delete:
if ordinal >= int(*set.Spec.Replicas) {
if !podInOrdinalRange(pod, set) {
if !hasOwnerRef(claim, pod) || hasOwnerRef(claim, set) {
return fmt.Errorf("condemned claim %s has bad owner refs: %v", claim.Name, claim.GetOwnerReferences())
}
@ -2666,9 +2740,9 @@ func scaleUpStatefulSetControl(set *apps.StatefulSet,
sort.Sort(ascendingOrdinal(pods))
// ensure all pods are valid (have a phase)
for ord, pod := range pods {
for _, pod := range pods {
if pod.Status.Phase == "" {
if pods, err = om.setPodPending(set, ord); err != nil {
if pods, err = om.setPodPending(set, getOrdinal(pod)); err != nil {
return err
}
break
@ -2677,15 +2751,15 @@ func scaleUpStatefulSetControl(set *apps.StatefulSet,
// select one of the pods and move it forward in status
if len(pods) > 0 {
ord := int(rand.Int63n(int64(len(pods))))
pod := pods[ord]
idx := int(rand.Int63n(int64(len(pods))))
pod := pods[idx]
switch pod.Status.Phase {
case v1.PodPending:
if pods, err = om.setPodRunning(set, ord); err != nil {
if pods, err = om.setPodRunning(set, getOrdinal(pod)); err != nil {
return err
}
case v1.PodRunning:
if pods, err = om.setPodReady(set, ord); err != nil {
if pods, err = om.setPodReady(set, getOrdinal(pod)); err != nil {
return err
}
default:
@ -2720,7 +2794,7 @@ func scaleDownStatefulSetControl(set *apps.StatefulSet, ssc StatefulSetControlIn
return err
}
sort.Sort(ascendingOrdinal(pods))
if ordinal := len(pods) - 1; ordinal >= 0 {
if idx := len(pods) - 1; idx >= 0 {
if _, err := ssc.UpdateStatefulSet(context.TODO(), set, pods); err != nil {
return err
}
@ -2728,7 +2802,7 @@ func scaleDownStatefulSetControl(set *apps.StatefulSet, ssc StatefulSetControlIn
if err != nil {
return err
}
if pods, err = om.addTerminatingPod(set, ordinal); err != nil {
if pods, err = om.addTerminatingPod(set, getOrdinal(pods[idx])); err != nil {
return err
}
if _, err = ssc.UpdateStatefulSet(context.TODO(), set, pods); err != nil {
@ -2860,9 +2934,9 @@ func updateStatefulSetControl(set *apps.StatefulSet,
}
sort.Sort(ascendingOrdinal(pods))
initialized := false
for ord, pod := range pods {
for _, pod := range pods {
if pod.Status.Phase == "" {
if pods, err = om.setPodPending(set, ord); err != nil {
if pods, err = om.setPodPending(set, getOrdinal(pod)); err != nil {
return err
}
break
@ -2873,15 +2947,15 @@ func updateStatefulSetControl(set *apps.StatefulSet,
}
if len(pods) > 0 {
ord := int(rand.Int63n(int64(len(pods))))
pod := pods[ord]
idx := int(rand.Int63n(int64(len(pods))))
pod := pods[idx]
switch pod.Status.Phase {
case v1.PodPending:
if pods, err = om.setPodRunning(set, ord); err != nil {
if pods, err = om.setPodRunning(set, getOrdinal(pod)); err != nil {
return err
}
case v1.PodRunning:
if pods, err = om.setPodReady(set, ord); err != nil {
if pods, err = om.setPodReady(set, getOrdinal(pod)); err != nil {
return err
}
default:

View File

@ -29,11 +29,13 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/strategicpatch"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/klog/v2"
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller/history"
"k8s.io/kubernetes/pkg/features"
)
var patchCodec = scheme.Codecs.LegacyCodec(apps.SchemeGroupVersion)
@ -85,6 +87,29 @@ func getOrdinal(pod *v1.Pod) int {
return ordinal
}
// getStartOrdinal gets the first possible ordinal (inclusive).
// Returns spec.ordinals.start if spec.ordinals is set, otherwise returns 0.
func getStartOrdinal(set *apps.StatefulSet) int {
if utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetSlice) {
if set.Spec.Ordinals != nil {
return int(set.Spec.Ordinals.Start)
}
}
return 0
}
// getEndOrdinal gets the last possible ordinal (inclusive).
func getEndOrdinal(set *apps.StatefulSet) int {
return getStartOrdinal(set) + int(*set.Spec.Replicas) - 1
}
// podInOrdinalRange returns true if the pod ordinal is within the allowed
// range of ordinals that this StatefulSet is set to control.
func podInOrdinalRange(pod *v1.Pod, set *apps.StatefulSet) bool {
ordinal := getOrdinal(pod)
return ordinal >= getStartOrdinal(set) && ordinal <= getEndOrdinal(set)
}
// getPodName gets the name of set's child Pod with an ordinal index of ordinal
func getPodName(set *apps.StatefulSet, ordinal int) string {
return fmt.Sprintf("%s-%d", set.Name, ordinal)
@ -170,12 +195,12 @@ func claimOwnerMatchesSetAndPod(claim *v1.PersistentVolumeClaim, set *apps.State
if hasOwnerRef(claim, set) {
return false
}
podScaledDown := getOrdinal(pod) >= int(*set.Spec.Replicas)
podScaledDown := !podInOrdinalRange(pod, set)
if podScaledDown != hasOwnerRef(claim, pod) {
return false
}
case policy.WhenScaled == delete && policy.WhenDeleted == delete:
podScaledDown := getOrdinal(pod) >= int(*set.Spec.Replicas)
podScaledDown := !podInOrdinalRange(pod, set)
// If a pod is scaled down, there should be no set ref and a pod ref;
// if the pod is not scaled down it's the other way around.
if podScaledDown == hasOwnerRef(claim, set) {
@ -226,7 +251,7 @@ func updateClaimOwnerRefForSetAndPod(claim *v1.PersistentVolumeClaim, set *apps.
needsUpdate = removeOwnerRef(claim, pod) || needsUpdate
case policy.WhenScaled == delete && policy.WhenDeleted == retain:
needsUpdate = removeOwnerRef(claim, set) || needsUpdate
podScaledDown := getOrdinal(pod) >= int(*set.Spec.Replicas)
podScaledDown := !podInOrdinalRange(pod, set)
if podScaledDown {
needsUpdate = setOwnerRef(claim, pod, &podMeta) || needsUpdate
}
@ -234,7 +259,7 @@ func updateClaimOwnerRefForSetAndPod(claim *v1.PersistentVolumeClaim, set *apps.
needsUpdate = removeOwnerRef(claim, pod) || needsUpdate
}
case policy.WhenScaled == delete && policy.WhenDeleted == delete:
podScaledDown := getOrdinal(pod) >= int(*set.Spec.Replicas)
podScaledDown := !podInOrdinalRange(pod, set)
if podScaledDown {
needsUpdate = removeOwnerRef(claim, set) || needsUpdate
needsUpdate = setOwnerRef(claim, pod, &podMeta) || needsUpdate
@ -440,8 +465,8 @@ func newStatefulSetPod(set *apps.StatefulSet, ordinal int) *v1.Pod {
// returned error is nil, the returned Pod is valid.
func newVersionedStatefulSetPod(currentSet, updateSet *apps.StatefulSet, currentRevision, updateRevision string, ordinal int) *v1.Pod {
if currentSet.Spec.UpdateStrategy.Type == apps.RollingUpdateStatefulSetStrategyType &&
(currentSet.Spec.UpdateStrategy.RollingUpdate == nil && ordinal < int(currentSet.Status.CurrentReplicas)) ||
(currentSet.Spec.UpdateStrategy.RollingUpdate != nil && ordinal < int(*currentSet.Spec.UpdateStrategy.RollingUpdate.Partition)) {
(currentSet.Spec.UpdateStrategy.RollingUpdate == nil && ordinal < (getStartOrdinal(currentSet)+int(currentSet.Status.CurrentReplicas))) ||
(currentSet.Spec.UpdateStrategy.RollingUpdate != nil && ordinal < (getStartOrdinal(currentSet)+int(*currentSet.Spec.UpdateStrategy.RollingUpdate.Partition))) {
pod := newStatefulSetPod(currentSet, ordinal)
setPodRevision(pod, currentRevision)
return pod

View File

@ -766,6 +766,12 @@ const (
// StatefulSetMinReadySeconds allows minReadySeconds to be respected by StatefulSet controller
StatefulSetMinReadySeconds featuregate.Feature = "StatefulSetMinReadySeconds"
// owner: @psch
// alpha: v1.26
//
// Enables a StatefulSet to start from an arbitrary non zero ordinal
StatefulSetSlice featuregate.Feature = "StatefulSetSlice"
// owner: @robscott
// kep: https://kep.k8s.io/2433
// alpha: v1.21
@ -1075,6 +1081,8 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
StatefulSetMinReadySeconds: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.27
StatefulSetSlice: {Default: false, PreRelease: featuregate.Alpha},
TopologyAwareHints: {Default: true, PreRelease: featuregate.Beta},
TopologyManager: {Default: true, PreRelease: featuregate.Beta},

View File

@ -100,6 +100,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
"k8s.io/api/apps/v1.StatefulSet": schema_k8sio_api_apps_v1_StatefulSet(ref),
"k8s.io/api/apps/v1.StatefulSetCondition": schema_k8sio_api_apps_v1_StatefulSetCondition(ref),
"k8s.io/api/apps/v1.StatefulSetList": schema_k8sio_api_apps_v1_StatefulSetList(ref),
"k8s.io/api/apps/v1.StatefulSetOrdinals": schema_k8sio_api_apps_v1_StatefulSetOrdinals(ref),
"k8s.io/api/apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy": schema_k8sio_api_apps_v1_StatefulSetPersistentVolumeClaimRetentionPolicy(ref),
"k8s.io/api/apps/v1.StatefulSetSpec": schema_k8sio_api_apps_v1_StatefulSetSpec(ref),
"k8s.io/api/apps/v1.StatefulSetStatus": schema_k8sio_api_apps_v1_StatefulSetStatus(ref),
@ -122,6 +123,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
"k8s.io/api/apps/v1beta1.StatefulSet": schema_k8sio_api_apps_v1beta1_StatefulSet(ref),
"k8s.io/api/apps/v1beta1.StatefulSetCondition": schema_k8sio_api_apps_v1beta1_StatefulSetCondition(ref),
"k8s.io/api/apps/v1beta1.StatefulSetList": schema_k8sio_api_apps_v1beta1_StatefulSetList(ref),
"k8s.io/api/apps/v1beta1.StatefulSetOrdinals": schema_k8sio_api_apps_v1beta1_StatefulSetOrdinals(ref),
"k8s.io/api/apps/v1beta1.StatefulSetPersistentVolumeClaimRetentionPolicy": schema_k8sio_api_apps_v1beta1_StatefulSetPersistentVolumeClaimRetentionPolicy(ref),
"k8s.io/api/apps/v1beta1.StatefulSetSpec": schema_k8sio_api_apps_v1beta1_StatefulSetSpec(ref),
"k8s.io/api/apps/v1beta1.StatefulSetStatus": schema_k8sio_api_apps_v1beta1_StatefulSetStatus(ref),
@ -154,6 +156,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
"k8s.io/api/apps/v1beta2.StatefulSet": schema_k8sio_api_apps_v1beta2_StatefulSet(ref),
"k8s.io/api/apps/v1beta2.StatefulSetCondition": schema_k8sio_api_apps_v1beta2_StatefulSetCondition(ref),
"k8s.io/api/apps/v1beta2.StatefulSetList": schema_k8sio_api_apps_v1beta2_StatefulSetList(ref),
"k8s.io/api/apps/v1beta2.StatefulSetOrdinals": schema_k8sio_api_apps_v1beta2_StatefulSetOrdinals(ref),
"k8s.io/api/apps/v1beta2.StatefulSetPersistentVolumeClaimRetentionPolicy": schema_k8sio_api_apps_v1beta2_StatefulSetPersistentVolumeClaimRetentionPolicy(ref),
"k8s.io/api/apps/v1beta2.StatefulSetSpec": schema_k8sio_api_apps_v1beta2_StatefulSetSpec(ref),
"k8s.io/api/apps/v1beta2.StatefulSetStatus": schema_k8sio_api_apps_v1beta2_StatefulSetStatus(ref),
@ -4857,6 +4860,27 @@ func schema_k8sio_api_apps_v1_StatefulSetList(ref common.ReferenceCallback) comm
}
}
func schema_k8sio_api_apps_v1_StatefulSetOrdinals(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
Description: "StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet.",
Type: []string{"object"},
Properties: map[string]spec.Schema{
"start": {
SchemaProps: spec.SchemaProps{
Description: "Start is the number representing the first index that is used to represent replica ordinals. Defaults to 0. If set, replica ordinals will be numbered [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).",
Default: 0,
Type: []string{"integer"},
Format: "int32",
},
},
},
},
},
}
}
func schema_k8sio_api_apps_v1_StatefulSetPersistentVolumeClaimRetentionPolicy(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
@ -4967,12 +4991,18 @@ func schema_k8sio_api_apps_v1_StatefulSetSpec(ref common.ReferenceCallback) comm
Ref: ref("k8s.io/api/apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy"),
},
},
"ordinals": {
SchemaProps: spec.SchemaProps{
Description: "Ordinals controls how the stateful set creates pod and persistent volume claim names. The default behavior assigns a number starting with zero and incremented by one for each additional replica requested. This requires the StatefulSetSlice feature gate to be enabled, which is alpha.",
Ref: ref("k8s.io/api/apps/v1.StatefulSetOrdinals"),
},
},
},
Required: []string{"selector", "template", "serviceName"},
},
},
Dependencies: []string{
"k8s.io/api/apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy", "k8s.io/api/apps/v1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaim", "k8s.io/api/core/v1.PodTemplateSpec", "k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"},
"k8s.io/api/apps/v1.StatefulSetOrdinals", "k8s.io/api/apps/v1.StatefulSetPersistentVolumeClaimRetentionPolicy", "k8s.io/api/apps/v1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaim", "k8s.io/api/core/v1.PodTemplateSpec", "k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"},
}
}
@ -5965,6 +5995,27 @@ func schema_k8sio_api_apps_v1beta1_StatefulSetList(ref common.ReferenceCallback)
}
}
func schema_k8sio_api_apps_v1beta1_StatefulSetOrdinals(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
Description: "StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet.",
Type: []string{"object"},
Properties: map[string]spec.Schema{
"start": {
SchemaProps: spec.SchemaProps{
Description: "Start is the number representing the first index that is used to represent replica ordinals. Defaults to 0. If set, replica ordinals will be numbered [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).",
Default: 0,
Type: []string{"integer"},
Format: "int32",
},
},
},
},
},
}
}
func schema_k8sio_api_apps_v1beta1_StatefulSetPersistentVolumeClaimRetentionPolicy(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
@ -6075,12 +6126,18 @@ func schema_k8sio_api_apps_v1beta1_StatefulSetSpec(ref common.ReferenceCallback)
Ref: ref("k8s.io/api/apps/v1beta1.StatefulSetPersistentVolumeClaimRetentionPolicy"),
},
},
"ordinals": {
SchemaProps: spec.SchemaProps{
Description: "Ordinals controls how the stateful set creates pod and persistent volume claim names. The default behavior assigns a number starting with zero and incremented by one for each additional replica requested. This requires the StatefulSetSlice feature gate to be enabled, which is alpha.",
Ref: ref("k8s.io/api/apps/v1beta1.StatefulSetOrdinals"),
},
},
},
Required: []string{"template", "serviceName"},
},
},
Dependencies: []string{
"k8s.io/api/apps/v1beta1.StatefulSetPersistentVolumeClaimRetentionPolicy", "k8s.io/api/apps/v1beta1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaim", "k8s.io/api/core/v1.PodTemplateSpec", "k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"},
"k8s.io/api/apps/v1beta1.StatefulSetOrdinals", "k8s.io/api/apps/v1beta1.StatefulSetPersistentVolumeClaimRetentionPolicy", "k8s.io/api/apps/v1beta1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaim", "k8s.io/api/core/v1.PodTemplateSpec", "k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"},
}
}
@ -7622,6 +7679,27 @@ func schema_k8sio_api_apps_v1beta2_StatefulSetList(ref common.ReferenceCallback)
}
}
func schema_k8sio_api_apps_v1beta2_StatefulSetOrdinals(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
Description: "StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet.",
Type: []string{"object"},
Properties: map[string]spec.Schema{
"start": {
SchemaProps: spec.SchemaProps{
Description: "Start is the number representing the first index that is used to represent replica ordinals. Defaults to 0. If set, replica ordinals will be numbered [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).",
Default: 0,
Type: []string{"integer"},
Format: "int32",
},
},
},
},
},
}
}
func schema_k8sio_api_apps_v1beta2_StatefulSetPersistentVolumeClaimRetentionPolicy(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
@ -7732,12 +7810,18 @@ func schema_k8sio_api_apps_v1beta2_StatefulSetSpec(ref common.ReferenceCallback)
Ref: ref("k8s.io/api/apps/v1beta2.StatefulSetPersistentVolumeClaimRetentionPolicy"),
},
},
"ordinals": {
SchemaProps: spec.SchemaProps{
Description: "Ordinals controls how the stateful set creates pod and persistent volume claim names. The default behavior assigns a number starting with zero and incremented by one for each additional replica requested. This requires the StatefulSetSlice feature gate to be enabled, which is alpha.",
Ref: ref("k8s.io/api/apps/v1beta2.StatefulSetOrdinals"),
},
},
},
Required: []string{"selector", "template", "serviceName"},
},
},
Dependencies: []string{
"k8s.io/api/apps/v1beta2.StatefulSetPersistentVolumeClaimRetentionPolicy", "k8s.io/api/apps/v1beta2.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaim", "k8s.io/api/core/v1.PodTemplateSpec", "k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"},
"k8s.io/api/apps/v1beta2.StatefulSetOrdinals", "k8s.io/api/apps/v1beta2.StatefulSetPersistentVolumeClaimRetentionPolicy", "k8s.io/api/apps/v1beta2.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaim", "k8s.io/api/core/v1.PodTemplateSpec", "k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"},
}
}

View File

@ -128,6 +128,10 @@ func dropStatefulSetDisabledFields(newSS *apps.StatefulSet, oldSS *apps.Stateful
newSS.Spec.UpdateStrategy.RollingUpdate.MaxUnavailable = nil
}
}
if !utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetSlice) {
// Reset Spec.Ordinals to the default value (nil).
newSS.Spec.Ordinals = nil
}
}
// Validate validates a new StatefulSet.

View File

@ -748,12 +748,40 @@ func (m *StatefulSetList) XXX_DiscardUnknown() {
var xxx_messageInfo_StatefulSetList proto.InternalMessageInfo
func (m *StatefulSetOrdinals) Reset() { *m = StatefulSetOrdinals{} }
func (*StatefulSetOrdinals) ProtoMessage() {}
func (*StatefulSetOrdinals) Descriptor() ([]byte, []int) {
return fileDescriptor_e1014cab6f31e43b, []int{25}
}
func (m *StatefulSetOrdinals) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *StatefulSetOrdinals) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
func (m *StatefulSetOrdinals) XXX_Merge(src proto.Message) {
xxx_messageInfo_StatefulSetOrdinals.Merge(m, src)
}
func (m *StatefulSetOrdinals) XXX_Size() int {
return m.Size()
}
func (m *StatefulSetOrdinals) XXX_DiscardUnknown() {
xxx_messageInfo_StatefulSetOrdinals.DiscardUnknown(m)
}
var xxx_messageInfo_StatefulSetOrdinals proto.InternalMessageInfo
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Reset() {
*m = StatefulSetPersistentVolumeClaimRetentionPolicy{}
}
func (*StatefulSetPersistentVolumeClaimRetentionPolicy) ProtoMessage() {}
func (*StatefulSetPersistentVolumeClaimRetentionPolicy) Descriptor() ([]byte, []int) {
return fileDescriptor_e1014cab6f31e43b, []int{25}
return fileDescriptor_e1014cab6f31e43b, []int{26}
}
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -781,7 +809,7 @@ var xxx_messageInfo_StatefulSetPersistentVolumeClaimRetentionPolicy proto.Intern
func (m *StatefulSetSpec) Reset() { *m = StatefulSetSpec{} }
func (*StatefulSetSpec) ProtoMessage() {}
func (*StatefulSetSpec) Descriptor() ([]byte, []int) {
return fileDescriptor_e1014cab6f31e43b, []int{26}
return fileDescriptor_e1014cab6f31e43b, []int{27}
}
func (m *StatefulSetSpec) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -809,7 +837,7 @@ var xxx_messageInfo_StatefulSetSpec proto.InternalMessageInfo
func (m *StatefulSetStatus) Reset() { *m = StatefulSetStatus{} }
func (*StatefulSetStatus) ProtoMessage() {}
func (*StatefulSetStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_e1014cab6f31e43b, []int{27}
return fileDescriptor_e1014cab6f31e43b, []int{28}
}
func (m *StatefulSetStatus) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -837,7 +865,7 @@ var xxx_messageInfo_StatefulSetStatus proto.InternalMessageInfo
func (m *StatefulSetUpdateStrategy) Reset() { *m = StatefulSetUpdateStrategy{} }
func (*StatefulSetUpdateStrategy) ProtoMessage() {}
func (*StatefulSetUpdateStrategy) Descriptor() ([]byte, []int) {
return fileDescriptor_e1014cab6f31e43b, []int{28}
return fileDescriptor_e1014cab6f31e43b, []int{29}
}
func (m *StatefulSetUpdateStrategy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -888,6 +916,7 @@ func init() {
proto.RegisterType((*StatefulSet)(nil), "k8s.io.api.apps.v1.StatefulSet")
proto.RegisterType((*StatefulSetCondition)(nil), "k8s.io.api.apps.v1.StatefulSetCondition")
proto.RegisterType((*StatefulSetList)(nil), "k8s.io.api.apps.v1.StatefulSetList")
proto.RegisterType((*StatefulSetOrdinals)(nil), "k8s.io.api.apps.v1.StatefulSetOrdinals")
proto.RegisterType((*StatefulSetPersistentVolumeClaimRetentionPolicy)(nil), "k8s.io.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy")
proto.RegisterType((*StatefulSetSpec)(nil), "k8s.io.api.apps.v1.StatefulSetSpec")
proto.RegisterType((*StatefulSetStatus)(nil), "k8s.io.api.apps.v1.StatefulSetStatus")
@ -899,142 +928,146 @@ func init() {
}
var fileDescriptor_e1014cab6f31e43b = []byte{
// 2160 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1c, 0xb7,
0x15, 0xd7, 0xec, 0x87, 0xb4, 0xa2, 0x2c, 0xc9, 0xa6, 0x54, 0x69, 0x63, 0x37, 0xbb, 0xee, 0xd6,
0x75, 0x94, 0x38, 0xde, 0xad, 0x1d, 0x27, 0x08, 0xe2, 0x22, 0x81, 0x66, 0x95, 0xa6, 0x69, 0x24,
0x59, 0xa5, 0x2c, 0x07, 0x70, 0xd3, 0xa2, 0xd4, 0x2c, 0xbd, 0x9a, 0x68, 0xbe, 0x30, 0xc3, 0x51,
0x2c, 0xf4, 0x52, 0x14, 0xe8, 0xad, 0x87, 0xfe, 0x27, 0x45, 0x51, 0x34, 0xb7, 0x20, 0x08, 0x7a,
0xf1, 0xa5, 0x68, 0xd0, 0x4b, 0x73, 0x5a, 0xd4, 0x9b, 0x53, 0x51, 0xf4, 0xd6, 0x5e, 0x7c, 0x69,
0x41, 0x0e, 0xe7, 0x9b, 0xa3, 0x5d, 0xc9, 0xb1, 0xf2, 0x01, 0xdf, 0xb4, 0xe4, 0xef, 0xfd, 0xf8,
0x48, 0xbe, 0xc7, 0xf7, 0x23, 0x47, 0xe0, 0xe6, 0xfe, 0xab, 0x5e, 0x5b, 0xb7, 0x3b, 0xfb, 0xfe,
0x2e, 0x71, 0x2d, 0x42, 0x89, 0xd7, 0x39, 0x20, 0x56, 0xcf, 0x76, 0x3b, 0xa2, 0x03, 0x3b, 0x7a,
0x07, 0x3b, 0x8e, 0xd7, 0x39, 0xb8, 0xd6, 0xe9, 0x13, 0x8b, 0xb8, 0x98, 0x92, 0x5e, 0xdb, 0x71,
0x6d, 0x6a, 0x43, 0x18, 0x60, 0xda, 0xd8, 0xd1, 0xdb, 0x0c, 0xd3, 0x3e, 0xb8, 0x76, 0xfe, 0x6a,
0x5f, 0xa7, 0x7b, 0xfe, 0x6e, 0x5b, 0xb3, 0xcd, 0x4e, 0xdf, 0xee, 0xdb, 0x1d, 0x0e, 0xdd, 0xf5,
0xef, 0xf1, 0x5f, 0xfc, 0x07, 0xff, 0x2b, 0xa0, 0x38, 0xdf, 0x4a, 0x0c, 0xa3, 0xd9, 0x2e, 0x91,
0x0c, 0x73, 0xfe, 0x46, 0x8c, 0x31, 0xb1, 0xb6, 0xa7, 0x5b, 0xc4, 0x3d, 0xec, 0x38, 0xfb, 0x7d,
0xd6, 0xe0, 0x75, 0x4c, 0x42, 0xb1, 0xcc, 0xaa, 0x53, 0x64, 0xe5, 0xfa, 0x16, 0xd5, 0x4d, 0x92,
0x33, 0x78, 0x65, 0x94, 0x81, 0xa7, 0xed, 0x11, 0x13, 0xe7, 0xec, 0x5e, 0x2a, 0xb2, 0xf3, 0xa9,
0x6e, 0x74, 0x74, 0x8b, 0x7a, 0xd4, 0xcd, 0x1a, 0xb5, 0xfe, 0xab, 0x00, 0xd8, 0xb5, 0x2d, 0xea,
0xda, 0x86, 0x41, 0x5c, 0x44, 0x0e, 0x74, 0x4f, 0xb7, 0x2d, 0xf8, 0x0b, 0x50, 0x63, 0xf3, 0xe9,
0x61, 0x8a, 0xeb, 0xca, 0x45, 0x65, 0x65, 0xe6, 0xfa, 0xf7, 0xdb, 0xf1, 0x22, 0x47, 0xf4, 0x6d,
0x67, 0xbf, 0xcf, 0x1a, 0xbc, 0x36, 0x43, 0xb7, 0x0f, 0xae, 0xb5, 0x6f, 0xed, 0xbe, 0x4f, 0x34,
0xba, 0x41, 0x28, 0x56, 0xe1, 0x83, 0x41, 0x73, 0x62, 0x38, 0x68, 0x82, 0xb8, 0x0d, 0x45, 0xac,
0xf0, 0x16, 0xa8, 0x70, 0xf6, 0x12, 0x67, 0xbf, 0x5a, 0xc8, 0x2e, 0x26, 0xdd, 0x46, 0xf8, 0x83,
0x37, 0xef, 0x53, 0x62, 0x31, 0xf7, 0xd4, 0x33, 0x82, 0xba, 0xb2, 0x86, 0x29, 0x46, 0x9c, 0x08,
0xbe, 0x08, 0x6a, 0xae, 0x70, 0xbf, 0x5e, 0xbe, 0xa8, 0xac, 0x94, 0xd5, 0xb3, 0x02, 0x55, 0x0b,
0xa7, 0x85, 0x22, 0x44, 0xeb, 0xcf, 0x0a, 0x58, 0xca, 0xcf, 0x7b, 0x5d, 0xf7, 0x28, 0x7c, 0x2f,
0x37, 0xf7, 0xf6, 0x78, 0x73, 0x67, 0xd6, 0x7c, 0xe6, 0xd1, 0xc0, 0x61, 0x4b, 0x62, 0xde, 0xef,
0x80, 0xaa, 0x4e, 0x89, 0xe9, 0xd5, 0x4b, 0x17, 0xcb, 0x2b, 0x33, 0xd7, 0x2f, 0xb7, 0xf3, 0xb1,
0xdb, 0xce, 0x3b, 0xa6, 0xce, 0x0a, 0xca, 0xea, 0xdb, 0xcc, 0x18, 0x05, 0x1c, 0xad, 0xff, 0x29,
0x60, 0x7a, 0x0d, 0x13, 0xd3, 0xb6, 0xb6, 0x09, 0x3d, 0x85, 0x4d, 0xeb, 0x82, 0x8a, 0xe7, 0x10,
0x4d, 0x6c, 0xda, 0x77, 0x64, 0xbe, 0x47, 0xee, 0x6c, 0x3b, 0x44, 0x8b, 0x37, 0x8a, 0xfd, 0x42,
0xdc, 0x18, 0xbe, 0x03, 0x26, 0x3d, 0x8a, 0xa9, 0xef, 0xf1, 0x6d, 0x9a, 0xb9, 0xfe, 0xdd, 0xa3,
0x69, 0x38, 0x54, 0x9d, 0x13, 0x44, 0x93, 0xc1, 0x6f, 0x24, 0x28, 0x5a, 0xff, 0x2c, 0x01, 0x18,
0x61, 0xbb, 0xb6, 0xd5, 0xd3, 0x29, 0x8b, 0xdf, 0xd7, 0x40, 0x85, 0x1e, 0x3a, 0x84, 0x2f, 0xc3,
0xb4, 0x7a, 0x39, 0xf4, 0xe2, 0xf6, 0xa1, 0x43, 0x1e, 0x0d, 0x9a, 0x4b, 0x79, 0x0b, 0xd6, 0x83,
0xb8, 0x0d, 0x5c, 0x8f, 0xfc, 0x2b, 0x71, 0xeb, 0x1b, 0xe9, 0xa1, 0x1f, 0x0d, 0x9a, 0x92, 0xc3,
0xa2, 0x1d, 0x31, 0xa5, 0x1d, 0x84, 0x07, 0x00, 0x1a, 0xd8, 0xa3, 0xb7, 0x5d, 0x6c, 0x79, 0xc1,
0x48, 0xba, 0x49, 0xc4, 0xcc, 0x5f, 0x18, 0x6f, 0x7b, 0x98, 0x85, 0x7a, 0x5e, 0x78, 0x01, 0xd7,
0x73, 0x6c, 0x48, 0x32, 0x02, 0xbc, 0x0c, 0x26, 0x5d, 0x82, 0x3d, 0xdb, 0xaa, 0x57, 0xf8, 0x2c,
0xa2, 0x05, 0x44, 0xbc, 0x15, 0x89, 0x5e, 0xf8, 0x3c, 0x98, 0x32, 0x89, 0xe7, 0xe1, 0x3e, 0xa9,
0x57, 0x39, 0x70, 0x5e, 0x00, 0xa7, 0x36, 0x82, 0x66, 0x14, 0xf6, 0xb7, 0xfe, 0xa0, 0x80, 0xd9,
0x68, 0xe5, 0x4e, 0x21, 0x55, 0xd4, 0x74, 0xaa, 0x3c, 0x7b, 0x64, 0x9c, 0x14, 0x64, 0xc8, 0xc7,
0xe5, 0x84, 0xcf, 0x2c, 0x08, 0xe1, 0xcf, 0x40, 0xcd, 0x23, 0x06, 0xd1, 0xa8, 0xed, 0x0a, 0x9f,
0x5f, 0x1a, 0xd3, 0x67, 0xbc, 0x4b, 0x8c, 0x6d, 0x61, 0xaa, 0x9e, 0x61, 0x4e, 0x87, 0xbf, 0x50,
0x44, 0x09, 0x7f, 0x02, 0x6a, 0x94, 0x98, 0x8e, 0x81, 0x29, 0x11, 0x69, 0x92, 0x8a, 0x6f, 0x16,
0x2e, 0x8c, 0x6c, 0xcb, 0xee, 0xdd, 0x16, 0x30, 0x9e, 0x28, 0xd1, 0x3a, 0x84, 0xad, 0x28, 0xa2,
0x81, 0xfb, 0x60, 0xce, 0x77, 0x7a, 0x0c, 0x49, 0xd9, 0xd1, 0xdd, 0x3f, 0x14, 0xe1, 0x73, 0xe5,
0xc8, 0x05, 0xd9, 0x49, 0x99, 0xa8, 0x4b, 0x62, 0x80, 0xb9, 0x74, 0x3b, 0xca, 0x50, 0xc3, 0x55,
0x30, 0x6f, 0xea, 0x16, 0x22, 0xb8, 0x77, 0xb8, 0x4d, 0x34, 0xdb, 0xea, 0x79, 0x3c, 0x80, 0xaa,
0xea, 0xb2, 0x20, 0x98, 0xdf, 0x48, 0x77, 0xa3, 0x2c, 0x1e, 0xae, 0x83, 0xc5, 0xf0, 0x9c, 0xfd,
0x91, 0xee, 0x51, 0xdb, 0x3d, 0x5c, 0xd7, 0x4d, 0x9d, 0xd6, 0x27, 0x39, 0x4f, 0x7d, 0x38, 0x68,
0x2e, 0x22, 0x49, 0x3f, 0x92, 0x5a, 0xb5, 0x7e, 0x3b, 0x09, 0xe6, 0x33, 0xa7, 0x01, 0xbc, 0x03,
0x96, 0x34, 0xdf, 0x75, 0x89, 0x45, 0x37, 0x7d, 0x73, 0x97, 0xb8, 0xdb, 0xda, 0x1e, 0xe9, 0xf9,
0x06, 0xe9, 0xf1, 0x1d, 0xad, 0xaa, 0x0d, 0xe1, 0xeb, 0x52, 0x57, 0x8a, 0x42, 0x05, 0xd6, 0xf0,
0xc7, 0x00, 0x5a, 0xbc, 0x69, 0x43, 0xf7, 0xbc, 0x88, 0xb3, 0xc4, 0x39, 0xa3, 0x04, 0xdc, 0xcc,
0x21, 0x90, 0xc4, 0x8a, 0xf9, 0xd8, 0x23, 0x9e, 0xee, 0x92, 0x5e, 0xd6, 0xc7, 0x72, 0xda, 0xc7,
0x35, 0x29, 0x0a, 0x15, 0x58, 0xc3, 0x97, 0xc1, 0x4c, 0x30, 0x1a, 0x5f, 0x73, 0xb1, 0x39, 0x0b,
0x82, 0x6c, 0x66, 0x33, 0xee, 0x42, 0x49, 0x1c, 0x9b, 0x9a, 0xbd, 0xeb, 0x11, 0xf7, 0x80, 0xf4,
0xde, 0x0a, 0x34, 0x00, 0x2b, 0x94, 0x55, 0x5e, 0x28, 0xa3, 0xa9, 0xdd, 0xca, 0x21, 0x90, 0xc4,
0x8a, 0x4d, 0x2d, 0x88, 0x9a, 0xdc, 0xd4, 0x26, 0xd3, 0x53, 0xdb, 0x91, 0xa2, 0x50, 0x81, 0x35,
0x8b, 0xbd, 0xc0, 0xe5, 0xd5, 0x03, 0xac, 0x1b, 0x78, 0xd7, 0x20, 0xf5, 0xa9, 0x74, 0xec, 0x6d,
0xa6, 0xbb, 0x51, 0x16, 0x0f, 0xdf, 0x02, 0xe7, 0x82, 0xa6, 0x1d, 0x0b, 0x47, 0x24, 0x35, 0x4e,
0xf2, 0x8c, 0x20, 0x39, 0xb7, 0x99, 0x05, 0xa0, 0xbc, 0x0d, 0x7c, 0x0d, 0xcc, 0x69, 0xb6, 0x61,
0xf0, 0x78, 0xec, 0xda, 0xbe, 0x45, 0xeb, 0xd3, 0x9c, 0x05, 0xb2, 0x1c, 0xea, 0xa6, 0x7a, 0x50,
0x06, 0x09, 0xef, 0x02, 0xa0, 0x85, 0xe5, 0xc0, 0xab, 0x83, 0xe2, 0x42, 0x9f, 0xaf, 0x43, 0x71,
0x01, 0x8e, 0x9a, 0x3c, 0x94, 0x60, 0x6b, 0x7d, 0xac, 0x80, 0xe5, 0x82, 0x1c, 0x87, 0x6f, 0xa4,
0xaa, 0xde, 0x95, 0x4c, 0xd5, 0xbb, 0x50, 0x60, 0x96, 0x28, 0x7d, 0x1a, 0x98, 0x65, 0xba, 0x43,
0xb7, 0xfa, 0x01, 0x44, 0x9c, 0x60, 0x2f, 0xc8, 0x7c, 0x47, 0x49, 0x60, 0x7c, 0x0c, 0x9f, 0x1b,
0x0e, 0x9a, 0xb3, 0xa9, 0x3e, 0x94, 0xe6, 0x6c, 0xfd, 0xba, 0x04, 0xc0, 0x1a, 0x71, 0x0c, 0xfb,
0xd0, 0x24, 0xd6, 0x69, 0xa8, 0x96, 0xb5, 0x94, 0x6a, 0x69, 0x49, 0x37, 0x22, 0xf2, 0xa7, 0x50,
0xb6, 0xac, 0x67, 0x64, 0xcb, 0xa5, 0x11, 0x3c, 0x47, 0xeb, 0x96, 0xbf, 0x97, 0xc1, 0x42, 0x0c,
0x8e, 0x85, 0xcb, 0xcd, 0xd4, 0x16, 0x3e, 0x97, 0xd9, 0xc2, 0x65, 0x89, 0xc9, 0x13, 0x53, 0x2e,
0xef, 0x83, 0x39, 0xa6, 0x2b, 0x82, 0x5d, 0xe3, 0xaa, 0x65, 0xf2, 0xd8, 0xaa, 0x25, 0xaa, 0x3a,
0xeb, 0x29, 0x26, 0x94, 0x61, 0x2e, 0x50, 0x49, 0x53, 0x5f, 0x47, 0x95, 0xf4, 0x47, 0x05, 0xcc,
0xc5, 0xdb, 0x74, 0x0a, 0x32, 0xa9, 0x9b, 0x96, 0x49, 0x8d, 0xa3, 0xe3, 0xb2, 0x40, 0x27, 0xfd,
0xad, 0x92, 0xf4, 0x9a, 0x0b, 0xa5, 0x15, 0x76, 0xa1, 0x72, 0x0c, 0x5d, 0xc3, 0x9e, 0x28, 0xab,
0x67, 0x82, 0xcb, 0x54, 0xd0, 0x86, 0xa2, 0xde, 0x94, 0xa4, 0x2a, 0x3d, 0x59, 0x49, 0x55, 0xfe,
0x62, 0x24, 0xd5, 0x6d, 0x50, 0xf3, 0x42, 0x31, 0x55, 0xe1, 0x94, 0x97, 0x47, 0xa5, 0xb3, 0xd0,
0x51, 0x11, 0x6b, 0xa4, 0xa0, 0x22, 0x26, 0x99, 0x76, 0xaa, 0x7e, 0x99, 0xda, 0x89, 0x85, 0xb7,
0x83, 0x7d, 0x8f, 0xf4, 0x78, 0x2a, 0xd5, 0xe2, 0xf0, 0xde, 0xe2, 0xad, 0x48, 0xf4, 0xc2, 0x1d,
0xb0, 0xec, 0xb8, 0x76, 0xdf, 0x25, 0x9e, 0xb7, 0x46, 0x70, 0xcf, 0xd0, 0x2d, 0x12, 0x4e, 0x20,
0xa8, 0x7a, 0x17, 0x86, 0x83, 0xe6, 0xf2, 0x96, 0x1c, 0x82, 0x8a, 0x6c, 0x5b, 0x1f, 0x55, 0xc0,
0xd9, 0xec, 0x89, 0x58, 0x20, 0x44, 0x94, 0x13, 0x09, 0x91, 0x17, 0x13, 0x21, 0x1a, 0xa8, 0xb4,
0xc4, 0x9d, 0x3f, 0x17, 0xa6, 0xab, 0x60, 0x5e, 0x08, 0x8f, 0xb0, 0x53, 0x48, 0xb1, 0x68, 0x7b,
0x76, 0xd2, 0xdd, 0x28, 0x8b, 0x87, 0x37, 0xc1, 0xac, 0xcb, 0xb5, 0x55, 0x48, 0x10, 0xe8, 0x93,
0x6f, 0x09, 0x82, 0x59, 0x94, 0xec, 0x44, 0x69, 0x2c, 0xd3, 0x26, 0xb1, 0xe4, 0x08, 0x09, 0x2a,
0x69, 0x6d, 0xb2, 0x9a, 0x05, 0xa0, 0xbc, 0x0d, 0xdc, 0x00, 0x0b, 0xbe, 0x95, 0xa7, 0x0a, 0x62,
0xed, 0x82, 0xa0, 0x5a, 0xd8, 0xc9, 0x43, 0x90, 0xcc, 0x0e, 0xfe, 0x34, 0x25, 0x57, 0x26, 0xf9,
0x29, 0xf2, 0xdc, 0xd1, 0xe9, 0x30, 0xb6, 0x5e, 0x91, 0xe8, 0xa8, 0xda, 0xb8, 0x3a, 0xaa, 0xf5,
0xa1, 0x02, 0x60, 0x3e, 0x05, 0x47, 0x5e, 0xee, 0x73, 0x16, 0x89, 0x12, 0xd9, 0x93, 0x2b, 0x9c,
0x2b, 0xa3, 0x15, 0x4e, 0x7c, 0x82, 0x8e, 0x27, 0x71, 0xc4, 0xf2, 0x9e, 0xce, 0xc3, 0xcc, 0x18,
0x12, 0x27, 0xf6, 0xe7, 0xf1, 0x24, 0x4e, 0x82, 0xe7, 0x68, 0x89, 0xf3, 0xaf, 0x12, 0x58, 0x88,
0xc1, 0x63, 0x4b, 0x1c, 0x89, 0xc9, 0xd3, 0xc7, 0x99, 0xf1, 0x64, 0x47, 0xbc, 0x74, 0x5f, 0x11,
0xd9, 0x11, 0x3b, 0x54, 0x20, 0x3b, 0x7e, 0x5f, 0x4a, 0x7a, 0x7d, 0x4c, 0xd9, 0xf1, 0x05, 0x3c,
0x55, 0x7c, 0xed, 0x94, 0x4b, 0xeb, 0x93, 0x32, 0x38, 0x9b, 0x4d, 0xc1, 0x54, 0x1d, 0x54, 0x46,
0xd6, 0xc1, 0x2d, 0xb0, 0x78, 0xcf, 0x37, 0x8c, 0x43, 0x3e, 0x87, 0x44, 0x31, 0x0c, 0x2a, 0xe8,
0xb7, 0x85, 0xe5, 0xe2, 0x0f, 0x25, 0x18, 0x24, 0xb5, 0xcc, 0x97, 0xc5, 0xca, 0xe3, 0x96, 0xc5,
0xea, 0x09, 0xca, 0xa2, 0x5c, 0x59, 0x94, 0x4f, 0xa4, 0x2c, 0xc6, 0xae, 0x89, 0x92, 0xe3, 0x6a,
0xe4, 0x1d, 0x7e, 0xa8, 0x80, 0x25, 0xf9, 0xf5, 0x19, 0x1a, 0x60, 0xce, 0xc4, 0xf7, 0x93, 0x8f,
0x17, 0xa3, 0x0a, 0x86, 0x4f, 0x75, 0xa3, 0x1d, 0x7c, 0xdd, 0x69, 0xbf, 0x6d, 0xd1, 0x5b, 0xee,
0x36, 0x75, 0x75, 0xab, 0x1f, 0x14, 0xd8, 0x8d, 0x14, 0x17, 0xca, 0x70, 0xc3, 0xbb, 0xa0, 0x66,
0xe2, 0xfb, 0xdb, 0xbe, 0xdb, 0x0f, 0x0b, 0xe1, 0xf1, 0xc7, 0xe1, 0xb1, 0xbf, 0x21, 0x58, 0x50,
0xc4, 0xd7, 0xfa, 0x5c, 0x01, 0xcb, 0x05, 0x15, 0xf4, 0x1b, 0x34, 0xcb, 0x8f, 0x14, 0x70, 0x31,
0x35, 0x4b, 0x96, 0x91, 0xe4, 0x9e, 0x6f, 0xf0, 0xe4, 0x14, 0x82, 0xe5, 0x0a, 0x98, 0x76, 0xb0,
0x4b, 0xf5, 0x48, 0xe9, 0x56, 0xd5, 0xd9, 0xe1, 0xa0, 0x39, 0xbd, 0x15, 0x36, 0xa2, 0xb8, 0x5f,
0xb2, 0x36, 0xa5, 0x27, 0xb7, 0x36, 0xad, 0xdf, 0x94, 0xc0, 0x4c, 0xc2, 0xe5, 0x53, 0x90, 0x2a,
0x6f, 0xa6, 0xa4, 0x8a, 0xf4, 0xe3, 0x4f, 0x72, 0x0d, 0x8b, 0xb4, 0xca, 0x46, 0x46, 0xab, 0x7c,
0x6f, 0x14, 0xd1, 0xd1, 0x62, 0xe5, 0xdf, 0x25, 0xb0, 0x98, 0x40, 0xc7, 0x6a, 0xe5, 0x07, 0x29,
0xb5, 0xb2, 0x92, 0x51, 0x2b, 0x75, 0x99, 0xcd, 0x53, 0xb9, 0x32, 0x5a, 0xae, 0xfc, 0x49, 0x01,
0xf3, 0x89, 0xb5, 0x3b, 0x05, 0xbd, 0xb2, 0x96, 0xd6, 0x2b, 0xcd, 0x11, 0xf1, 0x52, 0x20, 0x58,
0xfe, 0xa3, 0x80, 0x4e, 0x02, 0xb5, 0x45, 0x5c, 0x4f, 0xf7, 0x28, 0xb1, 0xe8, 0x1d, 0xdb, 0xf0,
0x4d, 0xd2, 0x35, 0xb0, 0x6e, 0x22, 0xc2, 0x1a, 0x74, 0xdb, 0xda, 0xb2, 0x0d, 0x5d, 0x3b, 0x84,
0x18, 0xcc, 0x7c, 0xb0, 0x47, 0xac, 0x35, 0x62, 0x10, 0x2a, 0x3e, 0x51, 0x4c, 0xab, 0x6f, 0x84,
0x2f, 0xf6, 0xef, 0xc6, 0x5d, 0x8f, 0x06, 0xcd, 0x95, 0x71, 0x18, 0x79, 0x80, 0x25, 0x39, 0xe1,
0xcf, 0x01, 0x60, 0x3f, 0xb7, 0x35, 0x1c, 0x7e, 0xb0, 0x98, 0x56, 0x5f, 0x0f, 0xd3, 0xf0, 0xdd,
0xa8, 0xe7, 0x58, 0x03, 0x24, 0x18, 0x5b, 0x7f, 0x9d, 0x4a, 0x6d, 0xd7, 0x37, 0xfe, 0x7d, 0xe8,
0x97, 0x60, 0xf1, 0x20, 0x5e, 0x9d, 0x10, 0xc0, 0x74, 0x0d, 0x8b, 0x9d, 0xe7, 0xa5, 0xf4, 0xb2,
0x75, 0x8d, 0xd5, 0xd4, 0x1d, 0x09, 0x1d, 0x92, 0x0e, 0x02, 0x5f, 0x06, 0x33, 0x4c, 0x8f, 0xe8,
0x1a, 0xd9, 0xc4, 0x66, 0x98, 0x4a, 0xd1, 0x17, 0x9e, 0xed, 0xb8, 0x0b, 0x25, 0x71, 0x70, 0x0f,
0x2c, 0x38, 0x76, 0x6f, 0x03, 0x5b, 0xb8, 0x4f, 0x58, 0x95, 0x0d, 0xb6, 0x92, 0xbf, 0x1c, 0x4d,
0xab, 0xaf, 0x84, 0xaf, 0x02, 0x5b, 0x79, 0x08, 0xbb, 0x75, 0x49, 0x9a, 0x79, 0x10, 0xc8, 0x28,
0xa1, 0x99, 0xfb, 0x20, 0x39, 0x95, 0xfb, 0x2f, 0x0e, 0x59, 0x4e, 0x9d, 0xf0, 0x93, 0x64, 0xd1,
0x9b, 0x58, 0xed, 0x44, 0x6f, 0x62, 0x92, 0x5b, 0xc3, 0xf4, 0x31, 0x6f, 0x0d, 0x9f, 0x28, 0xe0,
0x92, 0x33, 0x46, 0x1a, 0xd5, 0x01, 0x5f, 0x96, 0xee, 0x88, 0x65, 0x19, 0x27, 0x23, 0xd5, 0x95,
0xe1, 0xa0, 0x79, 0x69, 0x1c, 0x24, 0x1a, 0xcb, 0xb5, 0xd6, 0x87, 0x55, 0x70, 0x2e, 0x57, 0x1e,
0xbf, 0xc4, 0xc7, 0xb9, 0xdc, 0x15, 0xa2, 0x7c, 0x8c, 0x2b, 0xc4, 0x2a, 0x98, 0x17, 0x5f, 0x74,
0x33, 0x37, 0x90, 0x68, 0x4f, 0xbb, 0xe9, 0x6e, 0x94, 0xc5, 0xcb, 0x1e, 0x07, 0xab, 0xc7, 0x7c,
0x1c, 0x4c, 0x7a, 0x21, 0xfe, 0x11, 0x29, 0x48, 0xbe, 0xbc, 0x17, 0xe2, 0xff, 0x91, 0xb2, 0x78,
0xf8, 0x7a, 0x98, 0x59, 0x11, 0xc3, 0x14, 0x67, 0xc8, 0xa4, 0x4a, 0x44, 0x90, 0x41, 0x3f, 0xd6,
0x57, 0xcb, 0xf7, 0x24, 0x5f, 0x2d, 0x57, 0x46, 0x84, 0xee, 0xf8, 0xef, 0x80, 0xd2, 0x5b, 0xde,
0xcc, 0xf1, 0x6f, 0x79, 0xad, 0xbf, 0x28, 0xe0, 0x99, 0xc2, 0x33, 0x05, 0xae, 0xa6, 0xe4, 0xda,
0xd5, 0x8c, 0x5c, 0x7b, 0xb6, 0xd0, 0x30, 0xa1, 0xd9, 0x4c, 0xf9, 0x13, 0xe1, 0x8d, 0x91, 0x4f,
0x84, 0x12, 0xe9, 0x3f, 0xfa, 0xad, 0x50, 0x7d, 0xf5, 0xc1, 0xc3, 0xc6, 0xc4, 0xa7, 0x0f, 0x1b,
0x13, 0x9f, 0x3d, 0x6c, 0x4c, 0xfc, 0x6a, 0xd8, 0x50, 0x1e, 0x0c, 0x1b, 0xca, 0xa7, 0xc3, 0x86,
0xf2, 0xd9, 0xb0, 0xa1, 0xfc, 0x63, 0xd8, 0x50, 0x7e, 0xf7, 0x79, 0x63, 0xe2, 0x2e, 0xcc, 0xff,
0x1b, 0xe4, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x92, 0xcf, 0x5d, 0xcc, 0x34, 0x29, 0x00, 0x00,
// 2213 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcb, 0x6f, 0x1b, 0xc7,
0x19, 0xd7, 0xf2, 0x21, 0x51, 0x43, 0x4b, 0xb2, 0x47, 0xaa, 0xc4, 0xd8, 0x0d, 0xe9, 0x6e, 0x5d,
0x5b, 0x89, 0x63, 0xb2, 0x76, 0x9c, 0x20, 0x88, 0x8b, 0x18, 0x22, 0x95, 0xa6, 0x69, 0xf4, 0xea,
0xd0, 0x72, 0x00, 0x37, 0x2d, 0x3a, 0x22, 0xc7, 0xd4, 0x46, 0xfb, 0xc2, 0xee, 0x50, 0x31, 0xd1,
0x4b, 0x51, 0xa0, 0xb7, 0x1e, 0xfa, 0x37, 0xf4, 0x1f, 0x28, 0x8a, 0xa2, 0xb9, 0x05, 0x41, 0xd0,
0x8b, 0x2f, 0x05, 0x82, 0x5e, 0x9a, 0x13, 0x51, 0x33, 0xa7, 0xa2, 0xe8, 0xad, 0xbd, 0xf8, 0xd2,
0x62, 0x66, 0x67, 0xdf, 0xb3, 0x22, 0x25, 0xc7, 0xca, 0x03, 0xbe, 0x71, 0x67, 0x7e, 0xdf, 0x6f,
0xbf, 0x99, 0xf9, 0xbe, 0xf9, 0x7e, 0x33, 0x4b, 0x70, 0xeb, 0xe0, 0x35, 0xb7, 0xae, 0x59, 0x8d,
0x83, 0xfe, 0x1e, 0x71, 0x4c, 0x42, 0x89, 0xdb, 0x38, 0x24, 0x66, 0xd7, 0x72, 0x1a, 0xa2, 0x03,
0xdb, 0x5a, 0x03, 0xdb, 0xb6, 0xdb, 0x38, 0xbc, 0xde, 0xe8, 0x11, 0x93, 0x38, 0x98, 0x92, 0x6e,
0xdd, 0x76, 0x2c, 0x6a, 0x41, 0xe8, 0x61, 0xea, 0xd8, 0xd6, 0xea, 0x0c, 0x53, 0x3f, 0xbc, 0x7e,
0xfe, 0x5a, 0x4f, 0xa3, 0xfb, 0xfd, 0xbd, 0x7a, 0xc7, 0x32, 0x1a, 0x3d, 0xab, 0x67, 0x35, 0x38,
0x74, 0xaf, 0x7f, 0x9f, 0x3f, 0xf1, 0x07, 0xfe, 0xcb, 0xa3, 0x38, 0xaf, 0x46, 0x5e, 0xd3, 0xb1,
0x1c, 0x22, 0x79, 0xcd, 0xf9, 0x9b, 0x21, 0xc6, 0xc0, 0x9d, 0x7d, 0xcd, 0x24, 0xce, 0xa0, 0x61,
0x1f, 0xf4, 0x58, 0x83, 0xdb, 0x30, 0x08, 0xc5, 0x32, 0xab, 0x46, 0x96, 0x95, 0xd3, 0x37, 0xa9,
0x66, 0x90, 0x94, 0xc1, 0xab, 0xe3, 0x0c, 0xdc, 0xce, 0x3e, 0x31, 0x70, 0xca, 0xee, 0xe5, 0x2c,
0xbb, 0x3e, 0xd5, 0xf4, 0x86, 0x66, 0x52, 0x97, 0x3a, 0x49, 0x23, 0xf5, 0xbf, 0x0a, 0x80, 0x2d,
0xcb, 0xa4, 0x8e, 0xa5, 0xeb, 0xc4, 0x41, 0xe4, 0x50, 0x73, 0x35, 0xcb, 0x84, 0xbf, 0x00, 0x25,
0x36, 0x9e, 0x2e, 0xa6, 0xb8, 0xa2, 0x5c, 0x54, 0x56, 0xcb, 0x37, 0xbe, 0x5f, 0x0f, 0x27, 0x39,
0xa0, 0xaf, 0xdb, 0x07, 0x3d, 0xd6, 0xe0, 0xd6, 0x19, 0xba, 0x7e, 0x78, 0xbd, 0xbe, 0xbd, 0xf7,
0x3e, 0xe9, 0xd0, 0x4d, 0x42, 0x71, 0x13, 0x3e, 0x1c, 0xd6, 0xa6, 0x46, 0xc3, 0x1a, 0x08, 0xdb,
0x50, 0xc0, 0x0a, 0xb7, 0x41, 0x81, 0xb3, 0xe7, 0x38, 0xfb, 0xb5, 0x4c, 0x76, 0x31, 0xe8, 0x3a,
0xc2, 0x1f, 0xbc, 0xf9, 0x80, 0x12, 0x93, 0xb9, 0xd7, 0x3c, 0x23, 0xa8, 0x0b, 0xeb, 0x98, 0x62,
0xc4, 0x89, 0xe0, 0x4b, 0xa0, 0xe4, 0x08, 0xf7, 0x2b, 0xf9, 0x8b, 0xca, 0x6a, 0xbe, 0x79, 0x56,
0xa0, 0x4a, 0xfe, 0xb0, 0x50, 0x80, 0x50, 0xff, 0xa2, 0x80, 0xe5, 0xf4, 0xb8, 0x37, 0x34, 0x97,
0xc2, 0xf7, 0x52, 0x63, 0xaf, 0x4f, 0x36, 0x76, 0x66, 0xcd, 0x47, 0x1e, 0xbc, 0xd8, 0x6f, 0x89,
0x8c, 0xfb, 0x1d, 0x50, 0xd4, 0x28, 0x31, 0xdc, 0x4a, 0xee, 0x62, 0x7e, 0xb5, 0x7c, 0xe3, 0x72,
0x3d, 0x1d, 0xbb, 0xf5, 0xb4, 0x63, 0xcd, 0x39, 0x41, 0x59, 0x7c, 0x9b, 0x19, 0x23, 0x8f, 0x43,
0xfd, 0x9f, 0x02, 0x66, 0xd7, 0x31, 0x31, 0x2c, 0xb3, 0x4d, 0xe8, 0x29, 0x2c, 0x5a, 0x0b, 0x14,
0x5c, 0x9b, 0x74, 0xc4, 0xa2, 0x7d, 0x47, 0xe6, 0x7b, 0xe0, 0x4e, 0xdb, 0x26, 0x9d, 0x70, 0xa1,
0xd8, 0x13, 0xe2, 0xc6, 0xf0, 0x1d, 0x30, 0xed, 0x52, 0x4c, 0xfb, 0x2e, 0x5f, 0xa6, 0xf2, 0x8d,
0xef, 0x1e, 0x4d, 0xc3, 0xa1, 0xcd, 0x79, 0x41, 0x34, 0xed, 0x3d, 0x23, 0x41, 0xa1, 0xfe, 0x33,
0x07, 0x60, 0x80, 0x6d, 0x59, 0x66, 0x57, 0xa3, 0x2c, 0x7e, 0x5f, 0x07, 0x05, 0x3a, 0xb0, 0x09,
0x9f, 0x86, 0xd9, 0xe6, 0x65, 0xdf, 0x8b, 0x3b, 0x03, 0x9b, 0x3c, 0x1e, 0xd6, 0x96, 0xd3, 0x16,
0xac, 0x07, 0x71, 0x1b, 0xb8, 0x11, 0xf8, 0x97, 0xe3, 0xd6, 0x37, 0xe3, 0xaf, 0x7e, 0x3c, 0xac,
0x49, 0x36, 0x8b, 0x7a, 0xc0, 0x14, 0x77, 0x10, 0x1e, 0x02, 0xa8, 0x63, 0x97, 0xde, 0x71, 0xb0,
0xe9, 0x7a, 0x6f, 0xd2, 0x0c, 0x22, 0x46, 0xfe, 0xe2, 0x64, 0xcb, 0xc3, 0x2c, 0x9a, 0xe7, 0x85,
0x17, 0x70, 0x23, 0xc5, 0x86, 0x24, 0x6f, 0x80, 0x97, 0xc1, 0xb4, 0x43, 0xb0, 0x6b, 0x99, 0x95,
0x02, 0x1f, 0x45, 0x30, 0x81, 0x88, 0xb7, 0x22, 0xd1, 0x0b, 0x5f, 0x00, 0x33, 0x06, 0x71, 0x5d,
0xdc, 0x23, 0x95, 0x22, 0x07, 0x2e, 0x08, 0xe0, 0xcc, 0xa6, 0xd7, 0x8c, 0xfc, 0x7e, 0xf5, 0x8f,
0x0a, 0x98, 0x0b, 0x66, 0xee, 0x14, 0x52, 0xa5, 0x19, 0x4f, 0x95, 0xe7, 0x8f, 0x8c, 0x93, 0x8c,
0x0c, 0xf9, 0x38, 0x1f, 0xf1, 0x99, 0x05, 0x21, 0xfc, 0x19, 0x28, 0xb9, 0x44, 0x27, 0x1d, 0x6a,
0x39, 0xc2, 0xe7, 0x97, 0x27, 0xf4, 0x19, 0xef, 0x11, 0xbd, 0x2d, 0x4c, 0x9b, 0x67, 0x98, 0xd3,
0xfe, 0x13, 0x0a, 0x28, 0xe1, 0x4f, 0x40, 0x89, 0x12, 0xc3, 0xd6, 0x31, 0x25, 0x22, 0x4d, 0x62,
0xf1, 0xcd, 0xc2, 0x85, 0x91, 0xed, 0x58, 0xdd, 0x3b, 0x02, 0xc6, 0x13, 0x25, 0x98, 0x07, 0xbf,
0x15, 0x05, 0x34, 0xf0, 0x00, 0xcc, 0xf7, 0xed, 0x2e, 0x43, 0x52, 0xb6, 0x75, 0xf7, 0x06, 0x22,
0x7c, 0xae, 0x1e, 0x39, 0x21, 0xbb, 0x31, 0x93, 0xe6, 0xb2, 0x78, 0xc1, 0x7c, 0xbc, 0x1d, 0x25,
0xa8, 0xe1, 0x1a, 0x58, 0x30, 0x34, 0x13, 0x11, 0xdc, 0x1d, 0xb4, 0x49, 0xc7, 0x32, 0xbb, 0x2e,
0x0f, 0xa0, 0x62, 0x73, 0x45, 0x10, 0x2c, 0x6c, 0xc6, 0xbb, 0x51, 0x12, 0x0f, 0x37, 0xc0, 0x92,
0xbf, 0xcf, 0xfe, 0x48, 0x73, 0xa9, 0xe5, 0x0c, 0x36, 0x34, 0x43, 0xa3, 0x95, 0x69, 0xce, 0x53,
0x19, 0x0d, 0x6b, 0x4b, 0x48, 0xd2, 0x8f, 0xa4, 0x56, 0xea, 0x6f, 0xa7, 0xc1, 0x42, 0x62, 0x37,
0x80, 0x77, 0xc1, 0x72, 0xa7, 0xef, 0x38, 0xc4, 0xa4, 0x5b, 0x7d, 0x63, 0x8f, 0x38, 0xed, 0xce,
0x3e, 0xe9, 0xf6, 0x75, 0xd2, 0xe5, 0x2b, 0x5a, 0x6c, 0x56, 0x85, 0xaf, 0xcb, 0x2d, 0x29, 0x0a,
0x65, 0x58, 0xc3, 0x1f, 0x03, 0x68, 0xf2, 0xa6, 0x4d, 0xcd, 0x75, 0x03, 0xce, 0x1c, 0xe7, 0x0c,
0x12, 0x70, 0x2b, 0x85, 0x40, 0x12, 0x2b, 0xe6, 0x63, 0x97, 0xb8, 0x9a, 0x43, 0xba, 0x49, 0x1f,
0xf3, 0x71, 0x1f, 0xd7, 0xa5, 0x28, 0x94, 0x61, 0x0d, 0x5f, 0x01, 0x65, 0xef, 0x6d, 0x7c, 0xce,
0xc5, 0xe2, 0x2c, 0x0a, 0xb2, 0xf2, 0x56, 0xd8, 0x85, 0xa2, 0x38, 0x36, 0x34, 0x6b, 0xcf, 0x25,
0xce, 0x21, 0xe9, 0xbe, 0xe5, 0x69, 0x00, 0x56, 0x28, 0x8b, 0xbc, 0x50, 0x06, 0x43, 0xdb, 0x4e,
0x21, 0x90, 0xc4, 0x8a, 0x0d, 0xcd, 0x8b, 0x9a, 0xd4, 0xd0, 0xa6, 0xe3, 0x43, 0xdb, 0x95, 0xa2,
0x50, 0x86, 0x35, 0x8b, 0x3d, 0xcf, 0xe5, 0xb5, 0x43, 0xac, 0xe9, 0x78, 0x4f, 0x27, 0x95, 0x99,
0x78, 0xec, 0x6d, 0xc5, 0xbb, 0x51, 0x12, 0x0f, 0xdf, 0x02, 0xe7, 0xbc, 0xa6, 0x5d, 0x13, 0x07,
0x24, 0x25, 0x4e, 0xf2, 0x9c, 0x20, 0x39, 0xb7, 0x95, 0x04, 0xa0, 0xb4, 0x0d, 0x7c, 0x1d, 0xcc,
0x77, 0x2c, 0x5d, 0xe7, 0xf1, 0xd8, 0xb2, 0xfa, 0x26, 0xad, 0xcc, 0x72, 0x16, 0xc8, 0x72, 0xa8,
0x15, 0xeb, 0x41, 0x09, 0x24, 0xbc, 0x07, 0x40, 0xc7, 0x2f, 0x07, 0x6e, 0x05, 0x64, 0x17, 0xfa,
0x74, 0x1d, 0x0a, 0x0b, 0x70, 0xd0, 0xe4, 0xa2, 0x08, 0x9b, 0xfa, 0xb1, 0x02, 0x56, 0x32, 0x72,
0x1c, 0xde, 0x8e, 0x55, 0xbd, 0xab, 0x89, 0xaa, 0x77, 0x21, 0xc3, 0x2c, 0x52, 0xfa, 0x3a, 0x60,
0x8e, 0xe9, 0x0e, 0xcd, 0xec, 0x79, 0x10, 0xb1, 0x83, 0xbd, 0x28, 0xf3, 0x1d, 0x45, 0x81, 0xe1,
0x36, 0x7c, 0x6e, 0x34, 0xac, 0xcd, 0xc5, 0xfa, 0x50, 0x9c, 0x53, 0xfd, 0x75, 0x0e, 0x80, 0x75,
0x62, 0xeb, 0xd6, 0xc0, 0x20, 0xe6, 0x69, 0xa8, 0x96, 0xf5, 0x98, 0x6a, 0x51, 0xa5, 0x0b, 0x11,
0xf8, 0x93, 0x29, 0x5b, 0x36, 0x12, 0xb2, 0xe5, 0xd2, 0x18, 0x9e, 0xa3, 0x75, 0xcb, 0xdf, 0xf3,
0x60, 0x31, 0x04, 0x87, 0xc2, 0xe5, 0x56, 0x6c, 0x09, 0xaf, 0x24, 0x96, 0x70, 0x45, 0x62, 0xf2,
0xd4, 0x94, 0xcb, 0xfb, 0x60, 0x9e, 0xe9, 0x0a, 0x6f, 0xd5, 0xb8, 0x6a, 0x99, 0x3e, 0xb6, 0x6a,
0x09, 0xaa, 0xce, 0x46, 0x8c, 0x09, 0x25, 0x98, 0x33, 0x54, 0xd2, 0xcc, 0xd7, 0x51, 0x25, 0xfd,
0x49, 0x01, 0xf3, 0xe1, 0x32, 0x9d, 0x82, 0x4c, 0x6a, 0xc5, 0x65, 0x52, 0xf5, 0xe8, 0xb8, 0xcc,
0xd0, 0x49, 0x7f, 0x2b, 0x44, 0xbd, 0xe6, 0x42, 0x69, 0x95, 0x1d, 0xa8, 0x6c, 0x5d, 0xeb, 0x60,
0x57, 0x94, 0xd5, 0x33, 0xde, 0x61, 0xca, 0x6b, 0x43, 0x41, 0x6f, 0x4c, 0x52, 0xe5, 0x9e, 0xae,
0xa4, 0xca, 0x7f, 0x31, 0x92, 0xea, 0x0e, 0x28, 0xb9, 0xbe, 0x98, 0x2a, 0x70, 0xca, 0xcb, 0xe3,
0xd2, 0x59, 0xe8, 0xa8, 0x80, 0x35, 0x50, 0x50, 0x01, 0x93, 0x4c, 0x3b, 0x15, 0xbf, 0x4c, 0xed,
0xc4, 0xc2, 0xdb, 0xc6, 0x7d, 0x97, 0x74, 0x79, 0x2a, 0x95, 0xc2, 0xf0, 0xde, 0xe1, 0xad, 0x48,
0xf4, 0xc2, 0x5d, 0xb0, 0x62, 0x3b, 0x56, 0xcf, 0x21, 0xae, 0xbb, 0x4e, 0x70, 0x57, 0xd7, 0x4c,
0xe2, 0x0f, 0xc0, 0xab, 0x7a, 0x17, 0x46, 0xc3, 0xda, 0xca, 0x8e, 0x1c, 0x82, 0xb2, 0x6c, 0xd5,
0x8f, 0x0a, 0xe0, 0x6c, 0x72, 0x47, 0xcc, 0x10, 0x22, 0xca, 0x89, 0x84, 0xc8, 0x4b, 0x91, 0x10,
0xf5, 0x54, 0x5a, 0xe4, 0xcc, 0x9f, 0x0a, 0xd3, 0x35, 0xb0, 0x20, 0x84, 0x87, 0xdf, 0x29, 0xa4,
0x58, 0xb0, 0x3c, 0xbb, 0xf1, 0x6e, 0x94, 0xc4, 0xc3, 0x5b, 0x60, 0xce, 0xe1, 0xda, 0xca, 0x27,
0xf0, 0xf4, 0xc9, 0xb7, 0x04, 0xc1, 0x1c, 0x8a, 0x76, 0xa2, 0x38, 0x96, 0x69, 0x93, 0x50, 0x72,
0xf8, 0x04, 0x85, 0xb8, 0x36, 0x59, 0x4b, 0x02, 0x50, 0xda, 0x06, 0x6e, 0x82, 0xc5, 0xbe, 0x99,
0xa6, 0xf2, 0x62, 0xed, 0x82, 0xa0, 0x5a, 0xdc, 0x4d, 0x43, 0x90, 0xcc, 0x0e, 0xfe, 0x34, 0x26,
0x57, 0xa6, 0xf9, 0x2e, 0x72, 0xe5, 0xe8, 0x74, 0x98, 0x58, 0xaf, 0x48, 0x74, 0x54, 0x69, 0x52,
0x1d, 0xa5, 0x7e, 0xa8, 0x00, 0x98, 0x4e, 0xc1, 0xb1, 0x87, 0xfb, 0x94, 0x45, 0xa4, 0x44, 0x76,
0xe5, 0x0a, 0xe7, 0xea, 0x78, 0x85, 0x13, 0xee, 0xa0, 0x93, 0x49, 0x1c, 0x31, 0xbd, 0xa7, 0x73,
0x31, 0x33, 0x81, 0xc4, 0x09, 0xfd, 0x79, 0x32, 0x89, 0x13, 0xe1, 0x39, 0x5a, 0xe2, 0xfc, 0x2b,
0x07, 0x16, 0x43, 0xf0, 0xc4, 0x12, 0x47, 0x62, 0xf2, 0xec, 0x72, 0x66, 0x32, 0xd9, 0x11, 0x4e,
0xdd, 0x57, 0x44, 0x76, 0x84, 0x0e, 0x65, 0xc8, 0x8e, 0x3f, 0xe4, 0xa2, 0x5e, 0x1f, 0x53, 0x76,
0x7c, 0x01, 0x57, 0x15, 0x5f, 0x3b, 0xe5, 0xa2, 0x7e, 0x92, 0x07, 0x67, 0x93, 0x29, 0x18, 0xab,
0x83, 0xca, 0xd8, 0x3a, 0xb8, 0x03, 0x96, 0xee, 0xf7, 0x75, 0x7d, 0xc0, 0xc7, 0x10, 0x29, 0x86,
0x5e, 0x05, 0xfd, 0xb6, 0xb0, 0x5c, 0xfa, 0xa1, 0x04, 0x83, 0xa4, 0x96, 0xe9, 0xb2, 0x58, 0x78,
0xd2, 0xb2, 0x58, 0x3c, 0x41, 0x59, 0x94, 0x2b, 0x8b, 0xfc, 0x89, 0x94, 0xc5, 0xc4, 0x35, 0x51,
0xb2, 0x5d, 0x8d, 0x3d, 0xc3, 0x8f, 0x14, 0xb0, 0x2c, 0x3f, 0x3e, 0x43, 0x1d, 0xcc, 0x1b, 0xf8,
0x41, 0xf4, 0xf2, 0x62, 0x5c, 0xc1, 0xe8, 0x53, 0x4d, 0xaf, 0x7b, 0x5f, 0x77, 0xea, 0x6f, 0x9b,
0x74, 0xdb, 0x69, 0x53, 0x47, 0x33, 0x7b, 0x5e, 0x81, 0xdd, 0x8c, 0x71, 0xa1, 0x04, 0x37, 0xbc,
0x07, 0x4a, 0x06, 0x7e, 0xd0, 0xee, 0x3b, 0x3d, 0xbf, 0x10, 0x1e, 0xff, 0x3d, 0x3c, 0xf6, 0x37,
0x05, 0x0b, 0x0a, 0xf8, 0xd4, 0xcf, 0x15, 0xb0, 0x92, 0x51, 0x41, 0xbf, 0x41, 0xa3, 0xfc, 0x48,
0x01, 0x17, 0x63, 0xa3, 0x64, 0x19, 0x49, 0xee, 0xf7, 0x75, 0x9e, 0x9c, 0x42, 0xb0, 0x5c, 0x05,
0xb3, 0x36, 0x76, 0xa8, 0x16, 0x28, 0xdd, 0x62, 0x73, 0x6e, 0x34, 0xac, 0xcd, 0xee, 0xf8, 0x8d,
0x28, 0xec, 0x97, 0xcc, 0x4d, 0xee, 0xe9, 0xcd, 0x8d, 0xfa, 0x9b, 0x1c, 0x28, 0x47, 0x5c, 0x3e,
0x05, 0xa9, 0xf2, 0x66, 0x4c, 0xaa, 0x48, 0x3f, 0xfe, 0x44, 0xe7, 0x30, 0x4b, 0xab, 0x6c, 0x26,
0xb4, 0xca, 0xf7, 0xc6, 0x11, 0x1d, 0x2d, 0x56, 0xfe, 0x9d, 0x03, 0x4b, 0x11, 0x74, 0xa8, 0x56,
0x7e, 0x10, 0x53, 0x2b, 0xab, 0x09, 0xb5, 0x52, 0x91, 0xd9, 0x3c, 0x93, 0x2b, 0xe3, 0xe5, 0xca,
0x9f, 0x15, 0xb0, 0x10, 0x99, 0xbb, 0x53, 0xd0, 0x2b, 0xeb, 0x71, 0xbd, 0x52, 0x1b, 0x13, 0x2f,
0x19, 0x82, 0xe5, 0x2e, 0x58, 0x8c, 0x80, 0xb6, 0x9d, 0xae, 0x66, 0x62, 0xdd, 0x85, 0xb7, 0xc1,
0xa2, 0x28, 0xaf, 0x6d, 0x8a, 0x1d, 0xbf, 0xdd, 0xcf, 0x75, 0x9f, 0x89, 0xf7, 0x21, 0x19, 0x52,
0xfd, 0x8f, 0x02, 0x1a, 0x11, 0xe2, 0x1d, 0xe2, 0xb8, 0x9a, 0x4b, 0x89, 0x49, 0xef, 0x5a, 0x7a,
0xdf, 0x20, 0x2d, 0x1d, 0x6b, 0x06, 0x22, 0xac, 0x41, 0xb3, 0xcc, 0x1d, 0x4b, 0xd7, 0x3a, 0x03,
0x88, 0x41, 0xf9, 0x83, 0x7d, 0x62, 0xae, 0x13, 0x9d, 0x50, 0xf1, 0xe9, 0x63, 0xb6, 0x79, 0xdb,
0xff, 0x12, 0xf0, 0x6e, 0xd8, 0xf5, 0x78, 0x58, 0x5b, 0x9d, 0x84, 0x91, 0x07, 0x6e, 0x94, 0x13,
0xfe, 0x1c, 0x00, 0xf6, 0xd8, 0xee, 0x60, 0xff, 0x43, 0xc8, 0x6c, 0xf3, 0x0d, 0x3f, 0xbd, 0xdf,
0x0d, 0x7a, 0x8e, 0xf5, 0x82, 0x08, 0xa3, 0xfa, 0xfb, 0x52, 0x2c, 0x0c, 0xbe, 0xf1, 0xf7, 0x4e,
0xbf, 0x04, 0x4b, 0x87, 0xe1, 0xec, 0xf8, 0x00, 0xa6, 0x97, 0x58, 0x4c, 0xbe, 0x20, 0xa5, 0x97,
0xcd, 0x6b, 0xa8, 0xd2, 0xee, 0x4a, 0xe8, 0x90, 0xf4, 0x25, 0xf0, 0x15, 0x50, 0x66, 0x3a, 0x47,
0xeb, 0x90, 0x2d, 0x6c, 0xf8, 0x29, 0x1a, 0x7c, 0x39, 0x6a, 0x87, 0x5d, 0x28, 0x8a, 0x83, 0xfb,
0x60, 0xd1, 0xb6, 0xba, 0x9b, 0xd8, 0xc4, 0x3d, 0xc2, 0xaa, 0xb7, 0xb7, 0x94, 0xfc, 0x46, 0x6a,
0xb6, 0xf9, 0xaa, 0x7f, 0xdb, 0xb0, 0x93, 0x86, 0xb0, 0xd3, 0x9c, 0xa4, 0x99, 0x07, 0x81, 0x8c,
0x12, 0x1a, 0xa9, 0x0f, 0x9d, 0x33, 0xa9, 0x7f, 0x87, 0xc8, 0x72, 0xf5, 0x84, 0x9f, 0x3a, 0xb3,
0xee, 0xda, 0x4a, 0x27, 0xba, 0x6b, 0x93, 0x9c, 0x46, 0x66, 0x8f, 0x79, 0x1a, 0xf9, 0x44, 0x01,
0x97, 0xec, 0x09, 0xd2, 0xa8, 0x02, 0xf8, 0xb4, 0xb4, 0xc6, 0x4c, 0xcb, 0x24, 0x19, 0xd9, 0x5c,
0x1d, 0x0d, 0x6b, 0x97, 0x26, 0x41, 0xa2, 0x89, 0x5c, 0x63, 0x49, 0x63, 0x89, 0x5d, 0xb1, 0x52,
0xe6, 0x6e, 0x5e, 0x19, 0xe3, 0xa6, 0xbf, 0x89, 0x7a, 0x79, 0xe8, 0x3f, 0xa1, 0x80, 0x46, 0xfd,
0xb0, 0x08, 0xce, 0xa5, 0x2a, 0xf9, 0x97, 0x78, 0x8f, 0x98, 0x3a, 0xed, 0xe4, 0x8f, 0x71, 0xda,
0x59, 0x03, 0x0b, 0xe2, 0xe3, 0x73, 0xe2, 0xb0, 0x14, 0x84, 0x49, 0x2b, 0xde, 0x8d, 0x92, 0x78,
0xd9, 0x3d, 0x66, 0xf1, 0x98, 0xf7, 0x98, 0x51, 0x2f, 0xc4, 0x7f, 0xa6, 0xbc, 0x7c, 0x4e, 0x7b,
0x21, 0xfe, 0x3a, 0x95, 0xc4, 0xc3, 0x37, 0xfc, 0x64, 0x0d, 0x18, 0x66, 0x38, 0x43, 0x22, 0xfb,
0x02, 0x82, 0x04, 0xfa, 0x89, 0x3e, 0xb0, 0xbe, 0x27, 0xf9, 0xc0, 0xba, 0x3a, 0x26, 0xcc, 0x26,
0xbf, 0xb2, 0x94, 0x1e, 0x48, 0xcb, 0xc7, 0x3f, 0x90, 0xaa, 0x7f, 0x55, 0xc0, 0x73, 0x99, 0xdb,
0x14, 0x5c, 0x8b, 0x29, 0xcb, 0x6b, 0x09, 0x65, 0xf9, 0x7c, 0xa6, 0x61, 0x44, 0x5e, 0x1a, 0xf2,
0xdb, 0xcc, 0x9b, 0x63, 0x6f, 0x33, 0x25, 0xa7, 0x94, 0xf1, 0xd7, 0x9a, 0xcd, 0xd7, 0x1e, 0x3e,
0xaa, 0x4e, 0x7d, 0xfa, 0xa8, 0x3a, 0xf5, 0xd9, 0xa3, 0xea, 0xd4, 0xaf, 0x46, 0x55, 0xe5, 0xe1,
0xa8, 0xaa, 0x7c, 0x3a, 0xaa, 0x2a, 0x9f, 0x8d, 0xaa, 0xca, 0x3f, 0x46, 0x55, 0xe5, 0x77, 0x9f,
0x57, 0xa7, 0xee, 0xc1, 0xf4, 0x3f, 0x36, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x67, 0x59, 0x8d,
0x9b, 0xdf, 0x29, 0x00, 0x00,
}
func (m *ControllerRevision) Marshal() (dAtA []byte, err error) {
@ -2341,6 +2374,32 @@ func (m *StatefulSetList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *StatefulSetOrdinals) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *StatefulSetOrdinals) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *StatefulSetOrdinals) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
i = encodeVarintGenerated(dAtA, i, uint64(m.Start))
i--
dAtA[i] = 0x8
return len(dAtA) - i, nil
}
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -2394,6 +2453,18 @@ func (m *StatefulSetSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if m.Ordinals != nil {
{
size, err := m.Ordinals.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintGenerated(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x5a
}
if m.PersistentVolumeClaimRetentionPolicy != nil {
{
size, err := m.PersistentVolumeClaimRetentionPolicy.MarshalToSizedBuffer(dAtA[:i])
@ -3054,6 +3125,16 @@ func (m *StatefulSetList) Size() (n int) {
return n
}
func (m *StatefulSetOrdinals) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
n += 1 + sovGenerated(uint64(m.Start))
return n
}
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Size() (n int) {
if m == nil {
return 0
@ -3102,6 +3183,10 @@ func (m *StatefulSetSpec) Size() (n int) {
l = m.PersistentVolumeClaimRetentionPolicy.Size()
n += 1 + l + sovGenerated(uint64(l))
}
if m.Ordinals != nil {
l = m.Ordinals.Size()
n += 1 + l + sovGenerated(uint64(l))
}
return n
}
@ -3516,6 +3601,16 @@ func (this *StatefulSetList) String() string {
}, "")
return s
}
func (this *StatefulSetOrdinals) String() string {
if this == nil {
return "nil"
}
s := strings.Join([]string{`&StatefulSetOrdinals{`,
`Start:` + fmt.Sprintf("%v", this.Start) + `,`,
`}`,
}, "")
return s
}
func (this *StatefulSetPersistentVolumeClaimRetentionPolicy) String() string {
if this == nil {
return "nil"
@ -3547,6 +3642,7 @@ func (this *StatefulSetSpec) String() string {
`RevisionHistoryLimit:` + valueToStringGenerated(this.RevisionHistoryLimit) + `,`,
`MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`,
`PersistentVolumeClaimRetentionPolicy:` + strings.Replace(this.PersistentVolumeClaimRetentionPolicy.String(), "StatefulSetPersistentVolumeClaimRetentionPolicy", "StatefulSetPersistentVolumeClaimRetentionPolicy", 1) + `,`,
`Ordinals:` + strings.Replace(this.Ordinals.String(), "StatefulSetOrdinals", "StatefulSetOrdinals", 1) + `,`,
`}`,
}, "")
return s
@ -7626,6 +7722,75 @@ func (m *StatefulSetList) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *StatefulSetOrdinals) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: StatefulSetOrdinals: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: StatefulSetOrdinals: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field Start", wireType)
}
m.Start = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.Start |= int32(b&0x7F) << shift
if b < 0x80 {
break
}
}
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthGenerated
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@ -8064,6 +8229,42 @@ func (m *StatefulSetSpec) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
case 11:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Ordinals", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthGenerated
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthGenerated
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Ordinals == nil {
m.Ordinals = &StatefulSetOrdinals{}
}
if err := m.Ordinals.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])

View File

@ -622,6 +622,17 @@ message StatefulSetList {
repeated StatefulSet items = 2;
}
// StatefulSetOrdinals describes the policy used for replica ordinal assignment
// in this StatefulSet.
message StatefulSetOrdinals {
// Start is the number representing the first index that is used to represent
// replica ordinals. Defaults to 0.
// If set, replica ordinals will be numbered
// [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).
// +optional
optional int32 replicaStartOrdinal = 1;
}
// StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs
// created from the StatefulSet VolumeClaimTemplates.
message StatefulSetPersistentVolumeClaimRetentionPolicy {
@ -713,6 +724,14 @@ message StatefulSetSpec {
// down. This requires the StatefulSetAutoDeletePVC feature gate to be enabled,
// which is alpha. +optional
optional StatefulSetPersistentVolumeClaimRetentionPolicy persistentVolumeClaimRetentionPolicy = 10;
// Ordinals controls how the stateful set creates pod and persistent volume
// claim names.
// The default behavior assigns a number starting with zero and incremented by
// one for each additional replica requested. This requires the
// StatefulSetSlice feature gate to be enabled, which is alpha.
// +optional
optional StatefulSetOrdinals ordinals = 11;
}
// StatefulSetStatus represents the current state of a StatefulSet.

View File

@ -163,6 +163,17 @@ type StatefulSetPersistentVolumeClaimRetentionPolicy struct {
WhenScaled PersistentVolumeClaimRetentionPolicyType `json:"whenScaled,omitempty" protobuf:"bytes,2,opt,name=whenScaled,casttype=PersistentVolumeClaimRetentionPolicyType"`
}
// StatefulSetOrdinals describes the policy used for replica ordinal assignment
// in this StatefulSet.
type StatefulSetOrdinals struct {
// Start is the number representing the first index that is used to represent
// replica ordinals. Defaults to 0.
// If set, replica ordinals will be numbered
// [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).
// +optional
Start int32 `json:"start" protobuf:"varint,1,opt,name=start"`
}
// A StatefulSetSpec is the specification of a StatefulSet.
type StatefulSetSpec struct {
// replicas is the desired number of replicas of the given Template.
@ -237,6 +248,14 @@ type StatefulSetSpec struct {
// down. This requires the StatefulSetAutoDeletePVC feature gate to be enabled,
// which is alpha. +optional
PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy `json:"persistentVolumeClaimRetentionPolicy,omitempty" protobuf:"bytes,10,opt,name=persistentVolumeClaimRetentionPolicy"`
// Ordinals controls how the stateful set creates pod and persistent volume
// claim names.
// The default behavior assigns a number starting with zero and incremented by
// one for each additional replica requested. This requires the
// StatefulSetSlice feature gate to be enabled, which is alpha.
// +optional
Ordinals *StatefulSetOrdinals `json:"ordinals,omitempty" protobuf:"bytes,11,opt,name=ordinals"`
}
// StatefulSetStatus represents the current state of a StatefulSet.

View File

@ -324,6 +324,15 @@ func (StatefulSetList) SwaggerDoc() map[string]string {
return map_StatefulSetList
}
var map_StatefulSetOrdinals = map[string]string{
"": "StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet.",
"start": "Start is the number representing the first index that is used to represent replica ordinals. Defaults to 0. If set, replica ordinals will be numbered [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).",
}
func (StatefulSetOrdinals) SwaggerDoc() map[string]string {
return map_StatefulSetOrdinals
}
var map_StatefulSetPersistentVolumeClaimRetentionPolicy = map[string]string{
"": "StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.",
"whenDeleted": "WhenDeleted specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is deleted. The default policy of `Retain` causes PVCs to not be affected by StatefulSet deletion. The `Delete` policy causes those PVCs to be deleted.",
@ -346,6 +355,7 @@ var map_StatefulSetSpec = map[string]string{
"revisionHistoryLimit": "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.",
"minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)",
"persistentVolumeClaimRetentionPolicy": "persistentVolumeClaimRetentionPolicy describes the lifecycle of persistent volume claims created from volumeClaimTemplates. By default, all persistent volume claims are created as needed and retained until manually deleted. This policy allows the lifecycle to be altered, for example by deleting persistent volume claims when their stateful set is deleted, or when their pod is scaled down. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha. +optional",
"ordinals": "Ordinals controls how the stateful set creates pod and persistent volume claim names. The default behavior assigns a number starting with zero and incremented by one for each additional replica requested. This requires the StatefulSetSlice feature gate to be enabled, which is alpha.",
}
func (StatefulSetSpec) SwaggerDoc() map[string]string {

View File

@ -693,6 +693,22 @@ func (in *StatefulSetList) DeepCopyObject() runtime.Object {
return nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StatefulSetOrdinals) DeepCopyInto(out *StatefulSetOrdinals) {
*out = *in
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetOrdinals.
func (in *StatefulSetOrdinals) DeepCopy() *StatefulSetOrdinals {
if in == nil {
return nil
}
out := new(StatefulSetOrdinals)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StatefulSetPersistentVolumeClaimRetentionPolicy) DeepCopyInto(out *StatefulSetPersistentVolumeClaimRetentionPolicy) {
*out = *in
@ -741,6 +757,11 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) {
*out = new(StatefulSetPersistentVolumeClaimRetentionPolicy)
**out = **in
}
if in.Ordinals != nil {
in, out := &in.Ordinals, &out.Ordinals
*out = new(StatefulSetOrdinals)
**out = **in
}
return
}

View File

@ -553,12 +553,40 @@ func (m *StatefulSetList) XXX_DiscardUnknown() {
var xxx_messageInfo_StatefulSetList proto.InternalMessageInfo
func (m *StatefulSetOrdinals) Reset() { *m = StatefulSetOrdinals{} }
func (*StatefulSetOrdinals) ProtoMessage() {}
func (*StatefulSetOrdinals) Descriptor() ([]byte, []int) {
return fileDescriptor_2a07313e8f66e805, []int{18}
}
func (m *StatefulSetOrdinals) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *StatefulSetOrdinals) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
func (m *StatefulSetOrdinals) XXX_Merge(src proto.Message) {
xxx_messageInfo_StatefulSetOrdinals.Merge(m, src)
}
func (m *StatefulSetOrdinals) XXX_Size() int {
return m.Size()
}
func (m *StatefulSetOrdinals) XXX_DiscardUnknown() {
xxx_messageInfo_StatefulSetOrdinals.DiscardUnknown(m)
}
var xxx_messageInfo_StatefulSetOrdinals proto.InternalMessageInfo
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Reset() {
*m = StatefulSetPersistentVolumeClaimRetentionPolicy{}
}
func (*StatefulSetPersistentVolumeClaimRetentionPolicy) ProtoMessage() {}
func (*StatefulSetPersistentVolumeClaimRetentionPolicy) Descriptor() ([]byte, []int) {
return fileDescriptor_2a07313e8f66e805, []int{18}
return fileDescriptor_2a07313e8f66e805, []int{19}
}
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -586,7 +614,7 @@ var xxx_messageInfo_StatefulSetPersistentVolumeClaimRetentionPolicy proto.Intern
func (m *StatefulSetSpec) Reset() { *m = StatefulSetSpec{} }
func (*StatefulSetSpec) ProtoMessage() {}
func (*StatefulSetSpec) Descriptor() ([]byte, []int) {
return fileDescriptor_2a07313e8f66e805, []int{19}
return fileDescriptor_2a07313e8f66e805, []int{20}
}
func (m *StatefulSetSpec) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -614,7 +642,7 @@ var xxx_messageInfo_StatefulSetSpec proto.InternalMessageInfo
func (m *StatefulSetStatus) Reset() { *m = StatefulSetStatus{} }
func (*StatefulSetStatus) ProtoMessage() {}
func (*StatefulSetStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_2a07313e8f66e805, []int{20}
return fileDescriptor_2a07313e8f66e805, []int{21}
}
func (m *StatefulSetStatus) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -642,7 +670,7 @@ var xxx_messageInfo_StatefulSetStatus proto.InternalMessageInfo
func (m *StatefulSetUpdateStrategy) Reset() { *m = StatefulSetUpdateStrategy{} }
func (*StatefulSetUpdateStrategy) ProtoMessage() {}
func (*StatefulSetUpdateStrategy) Descriptor() ([]byte, []int) {
return fileDescriptor_2a07313e8f66e805, []int{21}
return fileDescriptor_2a07313e8f66e805, []int{22}
}
func (m *StatefulSetUpdateStrategy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -688,6 +716,7 @@ func init() {
proto.RegisterType((*StatefulSet)(nil), "k8s.io.api.apps.v1beta1.StatefulSet")
proto.RegisterType((*StatefulSetCondition)(nil), "k8s.io.api.apps.v1beta1.StatefulSetCondition")
proto.RegisterType((*StatefulSetList)(nil), "k8s.io.api.apps.v1beta1.StatefulSetList")
proto.RegisterType((*StatefulSetOrdinals)(nil), "k8s.io.api.apps.v1beta1.StatefulSetOrdinals")
proto.RegisterType((*StatefulSetPersistentVolumeClaimRetentionPolicy)(nil), "k8s.io.api.apps.v1beta1.StatefulSetPersistentVolumeClaimRetentionPolicy")
proto.RegisterType((*StatefulSetSpec)(nil), "k8s.io.api.apps.v1beta1.StatefulSetSpec")
proto.RegisterType((*StatefulSetStatus)(nil), "k8s.io.api.apps.v1beta1.StatefulSetStatus")
@ -699,131 +728,135 @@ func init() {
}
var fileDescriptor_2a07313e8f66e805 = []byte{
// 1982 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x59, 0xcf, 0x6f, 0x1b, 0xc7,
0xf5, 0xd7, 0x52, 0xa2, 0x44, 0x3d, 0x45, 0x94, 0x3d, 0xd2, 0xd7, 0x62, 0x94, 0x6f, 0x49, 0x81,
0x35, 0x12, 0xe5, 0x87, 0x97, 0xb1, 0x92, 0x06, 0x89, 0xdd, 0xba, 0x15, 0x25, 0x37, 0x76, 0x20,
0xc5, 0xca, 0x48, 0x8a, 0xd1, 0xf4, 0x07, 0x32, 0x24, 0xc7, 0xd4, 0x46, 0xfb, 0x0b, 0xbb, 0x43,
0xc6, 0x44, 0x2f, 0xfd, 0x03, 0x0a, 0xa4, 0xe7, 0xfe, 0x15, 0xbd, 0xb5, 0x68, 0xd1, 0x4b, 0x0f,
0x85, 0x8f, 0x41, 0x2f, 0x4d, 0x2f, 0x44, 0xcd, 0x5c, 0xdb, 0x5b, 0x7b, 0x31, 0x50, 0xa0, 0x98,
0xd9, 0xd9, 0xdf, 0xbb, 0xd2, 0xb2, 0x80, 0x05, 0xb4, 0x37, 0xed, 0xbc, 0xf7, 0x3e, 0x6f, 0xe6,
0xcd, 0x7b, 0x6f, 0xde, 0x87, 0x82, 0xef, 0x9d, 0xbd, 0xeb, 0xaa, 0x9a, 0xd5, 0x3a, 0x1b, 0x74,
0xa8, 0x63, 0x52, 0x46, 0xdd, 0xd6, 0x90, 0x9a, 0x3d, 0xcb, 0x69, 0x49, 0x01, 0xb1, 0xb5, 0x16,
0xb1, 0x6d, 0xb7, 0x35, 0xbc, 0xd9, 0xa1, 0x8c, 0xdc, 0x6c, 0xf5, 0xa9, 0x49, 0x1d, 0xc2, 0x68,
0x4f, 0xb5, 0x1d, 0x8b, 0x59, 0x68, 0xdd, 0x53, 0x54, 0x89, 0xad, 0xa9, 0x5c, 0x51, 0x95, 0x8a,
0x1b, 0x37, 0xfa, 0x1a, 0x3b, 0x1d, 0x74, 0xd4, 0xae, 0x65, 0xb4, 0xfa, 0x56, 0xdf, 0x6a, 0x09,
0xfd, 0xce, 0xe0, 0x91, 0xf8, 0x12, 0x1f, 0xe2, 0x2f, 0x0f, 0x67, 0xa3, 0x19, 0x71, 0xd8, 0xb5,
0x1c, 0xda, 0x1a, 0xa6, 0x7c, 0x6d, 0xbc, 0x1d, 0xea, 0x18, 0xa4, 0x7b, 0xaa, 0x99, 0xd4, 0x19,
0xb5, 0xec, 0xb3, 0x3e, 0x5f, 0x70, 0x5b, 0x06, 0x65, 0x24, 0xcb, 0xaa, 0x95, 0x67, 0xe5, 0x0c,
0x4c, 0xa6, 0x19, 0x34, 0x65, 0xf0, 0xce, 0x45, 0x06, 0x6e, 0xf7, 0x94, 0x1a, 0x24, 0x65, 0xf7,
0x56, 0x9e, 0xdd, 0x80, 0x69, 0x7a, 0x4b, 0x33, 0x99, 0xcb, 0x9c, 0xa4, 0x51, 0xf3, 0x9f, 0x0a,
0xa0, 0x5d, 0xcb, 0x64, 0x8e, 0xa5, 0xeb, 0xd4, 0xc1, 0x74, 0xa8, 0xb9, 0x9a, 0x65, 0xa2, 0x4f,
0xa1, 0xc2, 0xcf, 0xd3, 0x23, 0x8c, 0xd4, 0x94, 0x4d, 0x65, 0x6b, 0x69, 0xfb, 0x4d, 0x35, 0x8c,
0x74, 0x00, 0xaf, 0xda, 0x67, 0x7d, 0xbe, 0xe0, 0xaa, 0x5c, 0x5b, 0x1d, 0xde, 0x54, 0x1f, 0x74,
0x3e, 0xa3, 0x5d, 0x76, 0x40, 0x19, 0x69, 0xa3, 0x27, 0xe3, 0xc6, 0xcc, 0x64, 0xdc, 0x80, 0x70,
0x0d, 0x07, 0xa8, 0xe8, 0x01, 0xcc, 0x09, 0xf4, 0x92, 0x40, 0xbf, 0x91, 0x8b, 0x2e, 0x0f, 0xad,
0x62, 0xf2, 0xf9, 0xdd, 0xc7, 0x8c, 0x9a, 0x7c, 0x7b, 0xed, 0x17, 0x24, 0xf4, 0xdc, 0x1e, 0x61,
0x04, 0x0b, 0x20, 0xf4, 0x06, 0x54, 0x1c, 0xb9, 0xfd, 0xda, 0xec, 0xa6, 0xb2, 0x35, 0xdb, 0xbe,
0x22, 0xb5, 0x2a, 0xfe, 0xb1, 0x70, 0xa0, 0xd1, 0x7c, 0xa2, 0xc0, 0xb5, 0xf4, 0xb9, 0xf7, 0x35,
0x97, 0xa1, 0x1f, 0xa5, 0xce, 0xae, 0x16, 0x3b, 0x3b, 0xb7, 0x16, 0x27, 0x0f, 0x1c, 0xfb, 0x2b,
0x91, 0x73, 0x1f, 0x42, 0x59, 0x63, 0xd4, 0x70, 0x6b, 0xa5, 0xcd, 0xd9, 0xad, 0xa5, 0xed, 0xd7,
0xd5, 0x9c, 0x04, 0x56, 0xd3, 0xbb, 0x6b, 0x2f, 0x4b, 0xdc, 0xf2, 0x7d, 0x8e, 0x80, 0x3d, 0xa0,
0xe6, 0xcf, 0x4b, 0x00, 0x7b, 0xd4, 0xd6, 0xad, 0x91, 0x41, 0x4d, 0x76, 0x09, 0x57, 0x77, 0x1f,
0xe6, 0x5c, 0x9b, 0x76, 0xe5, 0xd5, 0xbd, 0x92, 0x7b, 0x82, 0x70, 0x53, 0x47, 0x36, 0xed, 0x86,
0x97, 0xc6, 0xbf, 0xb0, 0x80, 0x40, 0x1f, 0xc1, 0xbc, 0xcb, 0x08, 0x1b, 0xb8, 0xe2, 0xca, 0x96,
0xb6, 0x5f, 0x2d, 0x02, 0x26, 0x0c, 0xda, 0x55, 0x09, 0x37, 0xef, 0x7d, 0x63, 0x09, 0xd4, 0xfc,
0xf3, 0x2c, 0xac, 0x86, 0xca, 0xbb, 0x96, 0xd9, 0xd3, 0x18, 0x4f, 0xe9, 0xdb, 0x30, 0xc7, 0x46,
0x36, 0x15, 0x31, 0x59, 0x6c, 0xbf, 0xe2, 0x6f, 0xe6, 0x78, 0x64, 0xd3, 0x67, 0xe3, 0xc6, 0x7a,
0x86, 0x09, 0x17, 0x61, 0x61, 0x84, 0xf6, 0x83, 0x7d, 0x96, 0x84, 0xf9, 0xdb, 0x71, 0xe7, 0xcf,
0xc6, 0x8d, 0x8c, 0x06, 0xa2, 0x06, 0x48, 0xf1, 0x2d, 0xa2, 0xcf, 0xa0, 0xaa, 0x13, 0x97, 0x9d,
0xd8, 0x3d, 0xc2, 0xe8, 0xb1, 0x66, 0xd0, 0xda, 0xbc, 0x38, 0xfd, 0x6b, 0xc5, 0x2e, 0x8a, 0x5b,
0xb4, 0xaf, 0xc9, 0x1d, 0x54, 0xf7, 0x63, 0x48, 0x38, 0x81, 0x8c, 0x86, 0x80, 0xf8, 0xca, 0xb1,
0x43, 0x4c, 0xd7, 0x3b, 0x15, 0xf7, 0xb7, 0x30, 0xb5, 0xbf, 0x0d, 0xe9, 0x0f, 0xed, 0xa7, 0xd0,
0x70, 0x86, 0x07, 0xf4, 0x32, 0xcc, 0x3b, 0x94, 0xb8, 0x96, 0x59, 0x9b, 0x13, 0x11, 0x0b, 0xae,
0x0b, 0x8b, 0x55, 0x2c, 0xa5, 0xe8, 0x55, 0x58, 0x30, 0xa8, 0xeb, 0x92, 0x3e, 0xad, 0x95, 0x85,
0xe2, 0x8a, 0x54, 0x5c, 0x38, 0xf0, 0x96, 0xb1, 0x2f, 0x6f, 0xfe, 0x46, 0x81, 0x6a, 0x78, 0x4d,
0x97, 0x50, 0xab, 0xf7, 0xe2, 0xb5, 0xfa, 0xcd, 0x02, 0xc9, 0x99, 0x53, 0xa3, 0x7f, 0x2b, 0x01,
0x0a, 0x95, 0xb0, 0xa5, 0xeb, 0x1d, 0xd2, 0x3d, 0x43, 0x9b, 0x30, 0x67, 0x12, 0xc3, 0xcf, 0xc9,
0xa0, 0x40, 0x3e, 0x24, 0x06, 0xc5, 0x42, 0x82, 0xbe, 0x50, 0x00, 0x0d, 0xc4, 0x6d, 0xf6, 0x76,
0x4c, 0xd3, 0x62, 0x84, 0x07, 0xd8, 0xdf, 0xd0, 0x6e, 0x81, 0x0d, 0xf9, 0xbe, 0xd4, 0x93, 0x14,
0xca, 0x5d, 0x93, 0x39, 0xa3, 0xf0, 0x62, 0xd3, 0x0a, 0x38, 0xc3, 0x35, 0xfa, 0x21, 0x80, 0x23,
0x31, 0x8f, 0x2d, 0x59, 0xb6, 0xf9, 0x3d, 0xc0, 0x77, 0xbf, 0x6b, 0x99, 0x8f, 0xb4, 0x7e, 0xd8,
0x58, 0x70, 0x00, 0x81, 0x23, 0x70, 0x1b, 0x77, 0x61, 0x3d, 0x67, 0x9f, 0xe8, 0x0a, 0xcc, 0x9e,
0xd1, 0x91, 0x17, 0x2a, 0xcc, 0xff, 0x44, 0x6b, 0x50, 0x1e, 0x12, 0x7d, 0x40, 0xbd, 0x9a, 0xc4,
0xde, 0xc7, 0xad, 0xd2, 0xbb, 0x4a, 0xf3, 0x57, 0xe5, 0x68, 0xa6, 0xf0, 0x7e, 0x83, 0xb6, 0xf8,
0xf3, 0x60, 0xeb, 0x5a, 0x97, 0xb8, 0x02, 0xa3, 0xdc, 0x7e, 0xc1, 0x7b, 0x1a, 0xbc, 0x35, 0x1c,
0x48, 0xd1, 0x8f, 0xa1, 0xe2, 0x52, 0x9d, 0x76, 0x99, 0xe5, 0xc8, 0x16, 0xf7, 0x56, 0xc1, 0x9c,
0x22, 0x1d, 0xaa, 0x1f, 0x49, 0x53, 0x0f, 0xde, 0xff, 0xc2, 0x01, 0x24, 0xfa, 0x08, 0x2a, 0x8c,
0x1a, 0xb6, 0x4e, 0x18, 0x95, 0xd1, 0x8b, 0xe5, 0x15, 0xef, 0x1d, 0x1c, 0xec, 0xd0, 0xea, 0x1d,
0x4b, 0x35, 0xd1, 0x3d, 0x83, 0x3c, 0xf5, 0x57, 0x71, 0x00, 0x83, 0x7e, 0x00, 0x15, 0x97, 0xf1,
0x57, 0xbd, 0x3f, 0x12, 0xd5, 0x76, 0xde, 0xb3, 0x12, 0xed, 0xa3, 0x9e, 0x49, 0x08, 0xed, 0xaf,
0xe0, 0x00, 0x0e, 0xed, 0xc0, 0x8a, 0xa1, 0x99, 0x98, 0x92, 0xde, 0xe8, 0x88, 0x76, 0x2d, 0xb3,
0xe7, 0x8a, 0x32, 0x2d, 0xb7, 0xd7, 0xa5, 0xd1, 0xca, 0x41, 0x5c, 0x8c, 0x93, 0xfa, 0x68, 0x1f,
0xd6, 0xfc, 0x67, 0xf7, 0x9e, 0xe6, 0x32, 0xcb, 0x19, 0xed, 0x6b, 0x86, 0xc6, 0x44, 0xcf, 0x2b,
0xb7, 0x6b, 0x93, 0x71, 0x63, 0x0d, 0x67, 0xc8, 0x71, 0xa6, 0x15, 0xef, 0x2b, 0x36, 0x19, 0xb8,
0xb4, 0x27, 0x7a, 0x58, 0x25, 0xec, 0x2b, 0x87, 0x62, 0x15, 0x4b, 0x29, 0x7a, 0x18, 0x4b, 0xd3,
0xca, 0x74, 0x69, 0x5a, 0xcd, 0x4f, 0x51, 0x74, 0x02, 0xeb, 0xb6, 0x63, 0xf5, 0x1d, 0xea, 0xba,
0x7b, 0x94, 0xf4, 0x74, 0xcd, 0xa4, 0x7e, 0x64, 0x16, 0xc5, 0x89, 0x5e, 0x9a, 0x8c, 0x1b, 0xeb,
0x87, 0xd9, 0x2a, 0x38, 0xcf, 0xb6, 0xf9, 0x87, 0x39, 0xb8, 0x92, 0x7c, 0xe3, 0xd0, 0x07, 0x80,
0xac, 0x8e, 0x4b, 0x9d, 0x21, 0xed, 0xbd, 0xef, 0x0d, 0x6e, 0x7c, 0xba, 0x51, 0xc4, 0x74, 0x13,
0xd4, 0xed, 0x83, 0x94, 0x06, 0xce, 0xb0, 0xf2, 0xe6, 0x23, 0x59, 0x00, 0x25, 0xb1, 0xd1, 0xc8,
0x7c, 0x94, 0x2a, 0x82, 0x1d, 0x58, 0x91, 0xb5, 0xef, 0x0b, 0x45, 0xb2, 0x46, 0xee, 0xfd, 0x24,
0x2e, 0xc6, 0x49, 0x7d, 0x74, 0x1b, 0x96, 0x1d, 0x9e, 0x07, 0x01, 0xc0, 0x82, 0x00, 0xf8, 0x3f,
0x09, 0xb0, 0x8c, 0xa3, 0x42, 0x1c, 0xd7, 0x45, 0xef, 0xc3, 0x55, 0x32, 0x24, 0x9a, 0x4e, 0x3a,
0x3a, 0x0d, 0x00, 0xe6, 0x04, 0xc0, 0x8b, 0x12, 0xe0, 0xea, 0x4e, 0x52, 0x01, 0xa7, 0x6d, 0xd0,
0x01, 0xac, 0x0e, 0xcc, 0x34, 0x94, 0x97, 0xc4, 0x2f, 0x49, 0xa8, 0xd5, 0x93, 0xb4, 0x0a, 0xce,
0xb2, 0x43, 0x9f, 0x02, 0x74, 0xfd, 0x57, 0xdd, 0xad, 0xcd, 0x8b, 0x36, 0xfc, 0x46, 0x81, 0x62,
0x0b, 0x46, 0x81, 0xb0, 0x05, 0x06, 0x4b, 0x2e, 0x8e, 0x60, 0xa2, 0x5b, 0x50, 0xed, 0x5a, 0xba,
0x2e, 0x32, 0x7f, 0xd7, 0x1a, 0x98, 0x4c, 0x24, 0x6f, 0xb9, 0x8d, 0xf8, 0x63, 0xbf, 0x1b, 0x93,
0xe0, 0x84, 0x66, 0xf3, 0x77, 0x4a, 0xf4, 0x99, 0xf1, 0xcb, 0x19, 0xdd, 0x8a, 0x8d, 0x3e, 0x2f,
0x27, 0x46, 0x9f, 0x6b, 0x69, 0x8b, 0xc8, 0xe4, 0xa3, 0xc1, 0x32, 0x4f, 0x7e, 0xcd, 0xec, 0x7b,
0x17, 0x2e, 0x5b, 0xe2, 0x9b, 0xe7, 0x96, 0x52, 0xa0, 0x1d, 0x79, 0x18, 0xaf, 0x8a, 0x3b, 0x8f,
0x0a, 0x71, 0x1c, 0xb9, 0x79, 0x07, 0xaa, 0xf1, 0x3a, 0x8c, 0xcd, 0xf4, 0xca, 0x85, 0x33, 0xfd,
0xd7, 0x0a, 0xac, 0xe7, 0x78, 0x47, 0x3a, 0x54, 0x0d, 0xf2, 0x38, 0x72, 0xcd, 0x17, 0xce, 0xc6,
0x9c, 0x35, 0xa9, 0x1e, 0x6b, 0x52, 0xef, 0x9b, 0xec, 0x81, 0x73, 0xc4, 0x1c, 0xcd, 0xec, 0x7b,
0xf7, 0x70, 0x10, 0xc3, 0xc2, 0x09, 0x6c, 0xf4, 0x09, 0x54, 0x0c, 0xf2, 0xf8, 0x68, 0xe0, 0xf4,
0xb3, 0xe2, 0x55, 0xcc, 0x8f, 0x78, 0x3f, 0x0e, 0x24, 0x0a, 0x0e, 0xf0, 0x9a, 0xbf, 0x57, 0x60,
0x33, 0x76, 0x4a, 0xde, 0x2b, 0xe8, 0xa3, 0x81, 0x7e, 0x44, 0xc3, 0x1b, 0x7f, 0x1d, 0x16, 0x6d,
0xe2, 0x30, 0x2d, 0xe8, 0x17, 0xe5, 0xf6, 0xf2, 0x64, 0xdc, 0x58, 0x3c, 0xf4, 0x17, 0x71, 0x28,
0xcf, 0x88, 0x4d, 0xe9, 0xf9, 0xc5, 0xa6, 0xf9, 0x2f, 0x05, 0xca, 0x47, 0x5d, 0xa2, 0xd3, 0x4b,
0x60, 0x2a, 0x7b, 0x31, 0xa6, 0xd2, 0xcc, 0xcd, 0x59, 0xb1, 0x9f, 0x5c, 0x92, 0xb2, 0x9f, 0x20,
0x29, 0xd7, 0x2f, 0xc0, 0x39, 0x9f, 0x9f, 0xbc, 0x07, 0x8b, 0x81, 0xbb, 0x58, 0x53, 0x56, 0x2e,
0x6a, 0xca, 0xcd, 0x5f, 0x96, 0x60, 0x29, 0xe2, 0x62, 0x3a, 0x6b, 0x1e, 0xee, 0xc8, 0x5c, 0xc3,
0x1b, 0xd7, 0x76, 0x91, 0x83, 0xa8, 0xfe, 0x0c, 0xe3, 0x8d, 0x8b, 0xe1, 0xb0, 0x90, 0x1e, 0x6d,
0xee, 0x40, 0x95, 0x11, 0xa7, 0x4f, 0x99, 0x2f, 0x13, 0x01, 0x5b, 0x0c, 0xb9, 0xca, 0x71, 0x4c,
0x8a, 0x13, 0xda, 0x1b, 0xb7, 0x61, 0x39, 0xe6, 0x6c, 0xaa, 0x99, 0xef, 0x0b, 0x1e, 0x9c, 0xb0,
0x14, 0x2e, 0x21, 0xbb, 0x3e, 0x88, 0x65, 0xd7, 0x56, 0x7e, 0x30, 0x23, 0x05, 0x9a, 0x97, 0x63,
0x38, 0x91, 0x63, 0xaf, 0x15, 0x42, 0x3b, 0x3f, 0xd3, 0xfe, 0x5e, 0x82, 0xb5, 0x88, 0x76, 0x48,
0x85, 0xbf, 0x1d, 0x7b, 0x0f, 0xb6, 0x12, 0xef, 0x41, 0x2d, 0xcb, 0xe6, 0xb9, 0x71, 0xe1, 0x6c,
0x7e, 0x3a, 0xfb, 0xdf, 0xc8, 0x4f, 0x7f, 0xab, 0xc0, 0x4a, 0x24, 0x76, 0x97, 0x40, 0x50, 0xef,
0xc7, 0x09, 0xea, 0xf5, 0x22, 0x49, 0x93, 0xc3, 0x50, 0xff, 0xa1, 0x40, 0x2b, 0xa2, 0x75, 0x48,
0x1d, 0x57, 0x73, 0x19, 0x35, 0xd9, 0xc7, 0x96, 0x3e, 0x30, 0xe8, 0xae, 0x4e, 0x34, 0x03, 0x53,
0xbe, 0xa0, 0x59, 0xe6, 0xa1, 0xa5, 0x6b, 0xdd, 0x11, 0x22, 0xb0, 0xf4, 0xf9, 0x29, 0x35, 0xf7,
0xa8, 0x4e, 0x19, 0xed, 0xc9, 0x74, 0xfa, 0xae, 0x84, 0x5f, 0x7a, 0x18, 0x8a, 0x9e, 0x8d, 0x1b,
0x5b, 0x45, 0x10, 0x45, 0x96, 0x45, 0x31, 0xd1, 0x4f, 0x00, 0xf8, 0xa7, 0xe8, 0x47, 0x3d, 0x99,
0x70, 0x77, 0xfc, 0xaa, 0x7c, 0x18, 0x48, 0xa6, 0x72, 0x10, 0x41, 0x6c, 0xfe, 0x65, 0x21, 0x76,
0x67, 0xff, 0xf3, 0x54, 0xf1, 0xa7, 0xb0, 0x36, 0x0c, 0xa3, 0xe3, 0x2b, 0xf0, 0xd1, 0x7a, 0x36,
0xf9, 0xf3, 0x5b, 0x00, 0x9f, 0x15, 0xd7, 0xf6, 0xff, 0x4b, 0x27, 0x6b, 0x1f, 0x67, 0xc0, 0xe1,
0x4c, 0x27, 0xe8, 0x5b, 0xb0, 0xc4, 0x69, 0x89, 0xd6, 0xa5, 0x1f, 0x12, 0xc3, 0xaf, 0xa7, 0x55,
0x3f, 0x5f, 0x8e, 0x42, 0x11, 0x8e, 0xea, 0xa1, 0x53, 0x58, 0xb5, 0xad, 0xde, 0x01, 0x31, 0x49,
0x9f, 0xf2, 0x61, 0xce, 0xbb, 0x4a, 0xc1, 0x1f, 0x17, 0xdb, 0xef, 0xf8, 0x23, 0xfc, 0x61, 0x5a,
0xe5, 0x19, 0x27, 0x62, 0xe9, 0x65, 0x91, 0x04, 0x59, 0x90, 0xc8, 0x81, 0xea, 0x40, 0xce, 0x54,
0x92, 0x4e, 0x7b, 0x3f, 0x94, 0x6d, 0x17, 0x29, 0xac, 0x93, 0x98, 0x65, 0xf8, 0xe8, 0xc5, 0xd7,
0x71, 0xc2, 0x43, 0x2e, 0x3d, 0xae, 0xfc, 0x47, 0xf4, 0x38, 0x83, 0xaf, 0x2f, 0x4e, 0xc9, 0xd7,
0xff, 0xa8, 0xc0, 0x75, 0xbb, 0x40, 0x2d, 0xd5, 0x40, 0xc4, 0xe6, 0x5e, 0x91, 0xd8, 0x14, 0xa9,
0xcd, 0xf6, 0xd6, 0x64, 0xdc, 0xb8, 0x5e, 0x44, 0x13, 0x17, 0xda, 0x5f, 0xf3, 0xd7, 0x65, 0xb8,
0x9a, 0x7a, 0x2d, 0xd1, 0xf7, 0xcf, 0xe1, 0xd4, 0xd7, 0x9e, 0x1b, 0x9f, 0x4e, 0x91, 0xe1, 0xd9,
0x29, 0xc8, 0xf0, 0x0e, 0xac, 0x74, 0x07, 0x8e, 0x43, 0x4d, 0x96, 0xa0, 0xc2, 0xc1, 0xa5, 0xee,
0xc6, 0xc5, 0x38, 0xa9, 0x9f, 0xc5, 0xe7, 0xcb, 0x53, 0xf2, 0xf9, 0xe8, 0x2e, 0x24, 0x27, 0xf3,
0x4a, 0x30, 0xbd, 0x0b, 0x49, 0xcd, 0x92, 0xfa, 0x7c, 0x40, 0xf4, 0x50, 0x03, 0x84, 0x85, 0xf8,
0x80, 0x78, 0x12, 0x93, 0xe2, 0x84, 0x76, 0x06, 0x37, 0x5e, 0x2c, 0xca, 0x8d, 0x11, 0x89, 0x31,
0x77, 0x10, 0xfd, 0xee, 0x46, 0x91, 0xdc, 0x2d, 0x4e, 0xdd, 0x33, 0x7f, 0xb4, 0x58, 0x9a, 0xfe,
0x47, 0x8b, 0xe6, 0x9f, 0x14, 0x78, 0x31, 0xb7, 0xb3, 0xa0, 0x9d, 0xd8, 0xf8, 0x76, 0x23, 0x31,
0xbe, 0x7d, 0x23, 0xd7, 0x30, 0x32, 0xc3, 0x39, 0xd9, 0xac, 0xfe, 0xbd, 0x62, 0xac, 0x3e, 0x83,
0x71, 0x5e, 0x4c, 0xef, 0xdb, 0xdf, 0x79, 0xf2, 0xb4, 0x3e, 0xf3, 0xe5, 0xd3, 0xfa, 0xcc, 0x57,
0x4f, 0xeb, 0x33, 0x3f, 0x9b, 0xd4, 0x95, 0x27, 0x93, 0xba, 0xf2, 0xe5, 0xa4, 0xae, 0x7c, 0x35,
0xa9, 0x2b, 0x7f, 0x9d, 0xd4, 0x95, 0x5f, 0x7c, 0x5d, 0x9f, 0xf9, 0x64, 0x3d, 0xe7, 0x3f, 0xbf,
0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xe7, 0x15, 0x68, 0x85, 0x2c, 0x1e, 0x00, 0x00,
// 2038 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x59, 0xcd, 0x6f, 0x1b, 0xc7,
0x15, 0xd7, 0x52, 0xa2, 0x44, 0x3d, 0x45, 0x54, 0x3c, 0x52, 0x2d, 0x46, 0x69, 0x25, 0x61, 0x6b,
0x24, 0x4a, 0x62, 0x2f, 0x63, 0x25, 0x0d, 0x12, 0xbb, 0x75, 0x2a, 0x4a, 0x6e, 0xec, 0x40, 0x8a,
0x94, 0x91, 0x64, 0xa3, 0xe9, 0x07, 0x32, 0x22, 0xc7, 0xd4, 0x46, 0xfb, 0x85, 0xdd, 0x21, 0x63,
0xa2, 0x97, 0xfe, 0x01, 0x05, 0xd2, 0x73, 0xff, 0x8a, 0xf6, 0xd4, 0xa2, 0x45, 0x2f, 0x3d, 0x14,
0x3e, 0x06, 0xbd, 0x34, 0x27, 0xa2, 0x66, 0xae, 0xed, 0xad, 0xbd, 0x18, 0x28, 0x50, 0xcc, 0xec,
0xec, 0xf7, 0xae, 0xb4, 0x2c, 0x60, 0x01, 0xed, 0x8d, 0x3b, 0xef, 0xbd, 0xdf, 0x7b, 0xf3, 0xe6,
0xbd, 0x37, 0xef, 0x0d, 0xe1, 0xfb, 0x67, 0xef, 0x7a, 0x9a, 0x6e, 0x37, 0xcf, 0x7a, 0x27, 0xd4,
0xb5, 0x28, 0xa3, 0x5e, 0xb3, 0x4f, 0xad, 0x8e, 0xed, 0x36, 0x25, 0x81, 0x38, 0x7a, 0x93, 0x38,
0x8e, 0xd7, 0xec, 0xdf, 0x3c, 0xa1, 0x8c, 0xdc, 0x6c, 0x76, 0xa9, 0x45, 0x5d, 0xc2, 0x68, 0x47,
0x73, 0x5c, 0x9b, 0xd9, 0x68, 0xd9, 0x67, 0xd4, 0x88, 0xa3, 0x6b, 0x9c, 0x51, 0x93, 0x8c, 0x2b,
0x37, 0xba, 0x3a, 0x3b, 0xed, 0x9d, 0x68, 0x6d, 0xdb, 0x6c, 0x76, 0xed, 0xae, 0xdd, 0x14, 0xfc,
0x27, 0xbd, 0x47, 0xe2, 0x4b, 0x7c, 0x88, 0x5f, 0x3e, 0xce, 0x8a, 0x1a, 0x53, 0xd8, 0xb6, 0x5d,
0xda, 0xec, 0x67, 0x74, 0xad, 0xbc, 0x1d, 0xf1, 0x98, 0xa4, 0x7d, 0xaa, 0x5b, 0xd4, 0x1d, 0x34,
0x9d, 0xb3, 0x2e, 0x5f, 0xf0, 0x9a, 0x26, 0x65, 0x24, 0x4f, 0xaa, 0x59, 0x24, 0xe5, 0xf6, 0x2c,
0xa6, 0x9b, 0x34, 0x23, 0xf0, 0xce, 0x45, 0x02, 0x5e, 0xfb, 0x94, 0x9a, 0x24, 0x23, 0xf7, 0x56,
0x91, 0x5c, 0x8f, 0xe9, 0x46, 0x53, 0xb7, 0x98, 0xc7, 0xdc, 0xb4, 0x90, 0xfa, 0x2f, 0x05, 0xd0,
0xb6, 0x6d, 0x31, 0xd7, 0x36, 0x0c, 0xea, 0x62, 0xda, 0xd7, 0x3d, 0xdd, 0xb6, 0xd0, 0xa7, 0x50,
0xe3, 0xfb, 0xe9, 0x10, 0x46, 0x1a, 0xca, 0xba, 0xb2, 0x31, 0xb7, 0xf9, 0xa6, 0x16, 0x79, 0x3a,
0x84, 0xd7, 0x9c, 0xb3, 0x2e, 0x5f, 0xf0, 0x34, 0xce, 0xad, 0xf5, 0x6f, 0x6a, 0xfb, 0x27, 0x9f,
0xd1, 0x36, 0xdb, 0xa3, 0x8c, 0xb4, 0xd0, 0x93, 0xe1, 0xda, 0xc4, 0x68, 0xb8, 0x06, 0xd1, 0x1a,
0x0e, 0x51, 0xd1, 0x3e, 0x4c, 0x09, 0xf4, 0x8a, 0x40, 0xbf, 0x51, 0x88, 0x2e, 0x37, 0xad, 0x61,
0xf2, 0xf9, 0xdd, 0xc7, 0x8c, 0x5a, 0xdc, 0xbc, 0xd6, 0x0b, 0x12, 0x7a, 0x6a, 0x87, 0x30, 0x82,
0x05, 0x10, 0xba, 0x0e, 0x35, 0x57, 0x9a, 0xdf, 0x98, 0x5c, 0x57, 0x36, 0x26, 0x5b, 0x2f, 0x4a,
0xae, 0x5a, 0xb0, 0x2d, 0x1c, 0x72, 0xa8, 0x4f, 0x14, 0xb8, 0x9a, 0xdd, 0xf7, 0xae, 0xee, 0x31,
0xf4, 0xe3, 0xcc, 0xde, 0xb5, 0x72, 0x7b, 0xe7, 0xd2, 0x62, 0xe7, 0xa1, 0xe2, 0x60, 0x25, 0xb6,
0xef, 0x03, 0xa8, 0xea, 0x8c, 0x9a, 0x5e, 0xa3, 0xb2, 0x3e, 0xb9, 0x31, 0xb7, 0xf9, 0x86, 0x56,
0x10, 0xc0, 0x5a, 0xd6, 0xba, 0xd6, 0xbc, 0xc4, 0xad, 0xde, 0xe7, 0x08, 0xd8, 0x07, 0x52, 0x7f,
0x51, 0x01, 0xd8, 0xa1, 0x8e, 0x61, 0x0f, 0x4c, 0x6a, 0xb1, 0x4b, 0x38, 0xba, 0xfb, 0x30, 0xe5,
0x39, 0xb4, 0x2d, 0x8f, 0xee, 0xd5, 0xc2, 0x1d, 0x44, 0x46, 0x1d, 0x3a, 0xb4, 0x1d, 0x1d, 0x1a,
0xff, 0xc2, 0x02, 0x02, 0x7d, 0x0c, 0xd3, 0x1e, 0x23, 0xac, 0xe7, 0x89, 0x23, 0x9b, 0xdb, 0x7c,
0xad, 0x0c, 0x98, 0x10, 0x68, 0xd5, 0x25, 0xdc, 0xb4, 0xff, 0x8d, 0x25, 0x90, 0xfa, 0xd7, 0x49,
0x58, 0x8c, 0x98, 0xb7, 0x6d, 0xab, 0xa3, 0x33, 0x1e, 0xd2, 0xb7, 0x61, 0x8a, 0x0d, 0x1c, 0x2a,
0x7c, 0x32, 0xdb, 0x7a, 0x35, 0x30, 0xe6, 0x68, 0xe0, 0xd0, 0x67, 0xc3, 0xb5, 0xe5, 0x1c, 0x11,
0x4e, 0xc2, 0x42, 0x08, 0xed, 0x86, 0x76, 0x56, 0x84, 0xf8, 0xdb, 0x49, 0xe5, 0xcf, 0x86, 0x6b,
0x39, 0x05, 0x44, 0x0b, 0x91, 0x92, 0x26, 0xa2, 0xcf, 0xa0, 0x6e, 0x10, 0x8f, 0x1d, 0x3b, 0x1d,
0xc2, 0xe8, 0x91, 0x6e, 0xd2, 0xc6, 0xb4, 0xd8, 0xfd, 0xeb, 0xe5, 0x0e, 0x8a, 0x4b, 0xb4, 0xae,
0x4a, 0x0b, 0xea, 0xbb, 0x09, 0x24, 0x9c, 0x42, 0x46, 0x7d, 0x40, 0x7c, 0xe5, 0xc8, 0x25, 0x96,
0xe7, 0xef, 0x8a, 0xeb, 0x9b, 0x19, 0x5b, 0xdf, 0x8a, 0xd4, 0x87, 0x76, 0x33, 0x68, 0x38, 0x47,
0x03, 0x7a, 0x05, 0xa6, 0x5d, 0x4a, 0x3c, 0xdb, 0x6a, 0x4c, 0x09, 0x8f, 0x85, 0xc7, 0x85, 0xc5,
0x2a, 0x96, 0x54, 0xf4, 0x1a, 0xcc, 0x98, 0xd4, 0xf3, 0x48, 0x97, 0x36, 0xaa, 0x82, 0x71, 0x41,
0x32, 0xce, 0xec, 0xf9, 0xcb, 0x38, 0xa0, 0xab, 0xbf, 0x53, 0xa0, 0x1e, 0x1d, 0xd3, 0x25, 0xe4,
0xea, 0xbd, 0x64, 0xae, 0x7e, 0xbb, 0x44, 0x70, 0x16, 0xe4, 0xe8, 0xdf, 0x2b, 0x80, 0x22, 0x26,
0x6c, 0x1b, 0xc6, 0x09, 0x69, 0x9f, 0xa1, 0x75, 0x98, 0xb2, 0x88, 0x19, 0xc4, 0x64, 0x98, 0x20,
0x1f, 0x11, 0x93, 0x62, 0x41, 0x41, 0x5f, 0x28, 0x80, 0x7a, 0xe2, 0x34, 0x3b, 0x5b, 0x96, 0x65,
0x33, 0xc2, 0x1d, 0x1c, 0x18, 0xb4, 0x5d, 0xc2, 0xa0, 0x40, 0x97, 0x76, 0x9c, 0x41, 0xb9, 0x6b,
0x31, 0x77, 0x10, 0x1d, 0x6c, 0x96, 0x01, 0xe7, 0xa8, 0x46, 0x3f, 0x02, 0x70, 0x25, 0xe6, 0x91,
0x2d, 0xd3, 0xb6, 0xb8, 0x06, 0x04, 0xea, 0xb7, 0x6d, 0xeb, 0x91, 0xde, 0x8d, 0x0a, 0x0b, 0x0e,
0x21, 0x70, 0x0c, 0x6e, 0xe5, 0x2e, 0x2c, 0x17, 0xd8, 0x89, 0x5e, 0x84, 0xc9, 0x33, 0x3a, 0xf0,
0x5d, 0x85, 0xf9, 0x4f, 0xb4, 0x04, 0xd5, 0x3e, 0x31, 0x7a, 0xd4, 0xcf, 0x49, 0xec, 0x7f, 0xdc,
0xaa, 0xbc, 0xab, 0xa8, 0xbf, 0xae, 0xc6, 0x23, 0x85, 0xd7, 0x1b, 0xb4, 0xc1, 0xaf, 0x07, 0xc7,
0xd0, 0xdb, 0xc4, 0x13, 0x18, 0xd5, 0xd6, 0x0b, 0xfe, 0xd5, 0xe0, 0xaf, 0xe1, 0x90, 0x8a, 0x7e,
0x02, 0x35, 0x8f, 0x1a, 0xb4, 0xcd, 0x6c, 0x57, 0x96, 0xb8, 0xb7, 0x4a, 0xc6, 0x14, 0x39, 0xa1,
0xc6, 0xa1, 0x14, 0xf5, 0xe1, 0x83, 0x2f, 0x1c, 0x42, 0xa2, 0x8f, 0xa1, 0xc6, 0xa8, 0xe9, 0x18,
0x84, 0x51, 0xe9, 0xbd, 0x44, 0x5c, 0xf1, 0xda, 0xc1, 0xc1, 0x0e, 0xec, 0xce, 0x91, 0x64, 0x13,
0xd5, 0x33, 0x8c, 0xd3, 0x60, 0x15, 0x87, 0x30, 0xe8, 0x87, 0x50, 0xf3, 0x18, 0xbf, 0xd5, 0xbb,
0x03, 0x91, 0x6d, 0xe7, 0x5d, 0x2b, 0xf1, 0x3a, 0xea, 0x8b, 0x44, 0xd0, 0xc1, 0x0a, 0x0e, 0xe1,
0xd0, 0x16, 0x2c, 0x98, 0xba, 0x85, 0x29, 0xe9, 0x0c, 0x0e, 0x69, 0xdb, 0xb6, 0x3a, 0x9e, 0x48,
0xd3, 0x6a, 0x6b, 0x59, 0x0a, 0x2d, 0xec, 0x25, 0xc9, 0x38, 0xcd, 0x8f, 0x76, 0x61, 0x29, 0xb8,
0x76, 0xef, 0xe9, 0x1e, 0xb3, 0xdd, 0xc1, 0xae, 0x6e, 0xea, 0x4c, 0xd4, 0xbc, 0x6a, 0xab, 0x31,
0x1a, 0xae, 0x2d, 0xe1, 0x1c, 0x3a, 0xce, 0x95, 0xe2, 0x75, 0xc5, 0x21, 0x3d, 0x8f, 0x76, 0x44,
0x0d, 0xab, 0x45, 0x75, 0xe5, 0x40, 0xac, 0x62, 0x49, 0x45, 0x0f, 0x13, 0x61, 0x5a, 0x1b, 0x2f,
0x4c, 0xeb, 0xc5, 0x21, 0x8a, 0x8e, 0x61, 0xd9, 0x71, 0xed, 0xae, 0x4b, 0x3d, 0x6f, 0x87, 0x92,
0x8e, 0xa1, 0x5b, 0x34, 0xf0, 0xcc, 0xac, 0xd8, 0xd1, 0xcb, 0xa3, 0xe1, 0xda, 0xf2, 0x41, 0x3e,
0x0b, 0x2e, 0x92, 0x55, 0xff, 0x34, 0x05, 0x2f, 0xa6, 0xef, 0x38, 0xf4, 0x21, 0x20, 0xfb, 0xc4,
0xa3, 0x6e, 0x9f, 0x76, 0x3e, 0xf0, 0x1b, 0x37, 0xde, 0xdd, 0x28, 0xa2, 0xbb, 0x09, 0xf3, 0x76,
0x3f, 0xc3, 0x81, 0x73, 0xa4, 0xfc, 0xfe, 0x48, 0x26, 0x40, 0x45, 0x18, 0x1a, 0xeb, 0x8f, 0x32,
0x49, 0xb0, 0x05, 0x0b, 0x32, 0xf7, 0x03, 0xa2, 0x08, 0xd6, 0xd8, 0xb9, 0x1f, 0x27, 0xc9, 0x38,
0xcd, 0x8f, 0x6e, 0xc3, 0xbc, 0xcb, 0xe3, 0x20, 0x04, 0x98, 0x11, 0x00, 0xdf, 0x90, 0x00, 0xf3,
0x38, 0x4e, 0xc4, 0x49, 0x5e, 0xf4, 0x01, 0x5c, 0x21, 0x7d, 0xa2, 0x1b, 0xe4, 0xc4, 0xa0, 0x21,
0xc0, 0x94, 0x00, 0x78, 0x49, 0x02, 0x5c, 0xd9, 0x4a, 0x33, 0xe0, 0xac, 0x0c, 0xda, 0x83, 0xc5,
0x9e, 0x95, 0x85, 0xf2, 0x83, 0xf8, 0x65, 0x09, 0xb5, 0x78, 0x9c, 0x65, 0xc1, 0x79, 0x72, 0xe8,
0x53, 0x80, 0x76, 0x70, 0xab, 0x7b, 0x8d, 0x69, 0x51, 0x86, 0xaf, 0x97, 0x48, 0xb6, 0xb0, 0x15,
0x88, 0x4a, 0x60, 0xb8, 0xe4, 0xe1, 0x18, 0x26, 0xba, 0x05, 0xf5, 0xb6, 0x6d, 0x18, 0x22, 0xf2,
0xb7, 0xed, 0x9e, 0xc5, 0x44, 0xf0, 0x56, 0x5b, 0x88, 0x5f, 0xf6, 0xdb, 0x09, 0x0a, 0x4e, 0x71,
0xaa, 0x7f, 0x50, 0xe2, 0xd7, 0x4c, 0x90, 0xce, 0xe8, 0x56, 0xa2, 0xf5, 0x79, 0x25, 0xd5, 0xfa,
0x5c, 0xcd, 0x4a, 0xc4, 0x3a, 0x1f, 0x1d, 0xe6, 0x79, 0xf0, 0xeb, 0x56, 0xd7, 0x3f, 0x70, 0x59,
0x12, 0xdf, 0x3c, 0x37, 0x95, 0x42, 0xee, 0xd8, 0xc5, 0x78, 0x45, 0x9c, 0x79, 0x9c, 0x88, 0x93,
0xc8, 0xea, 0x1d, 0xa8, 0x27, 0xf3, 0x30, 0xd1, 0xd3, 0x2b, 0x17, 0xf6, 0xf4, 0x5f, 0x2b, 0xb0,
0x5c, 0xa0, 0x1d, 0x19, 0x50, 0x37, 0xc9, 0xe3, 0xd8, 0x31, 0x5f, 0xd8, 0x1b, 0xf3, 0xa9, 0x49,
0xf3, 0xa7, 0x26, 0xed, 0xbe, 0xc5, 0xf6, 0xdd, 0x43, 0xe6, 0xea, 0x56, 0xd7, 0x3f, 0x87, 0xbd,
0x04, 0x16, 0x4e, 0x61, 0xa3, 0x4f, 0xa0, 0x66, 0x92, 0xc7, 0x87, 0x3d, 0xb7, 0x9b, 0xe7, 0xaf,
0x72, 0x7a, 0xc4, 0xfd, 0xb1, 0x27, 0x51, 0x70, 0x88, 0xa7, 0xfe, 0x51, 0x81, 0xf5, 0xc4, 0x2e,
0x79, 0xad, 0xa0, 0x8f, 0x7a, 0xc6, 0x21, 0x8d, 0x4e, 0xfc, 0x0d, 0x98, 0x75, 0x88, 0xcb, 0xf4,
0xb0, 0x5e, 0x54, 0x5b, 0xf3, 0xa3, 0xe1, 0xda, 0xec, 0x41, 0xb0, 0x88, 0x23, 0x7a, 0x8e, 0x6f,
0x2a, 0xcf, 0xcf, 0x37, 0xea, 0xbf, 0x15, 0xa8, 0x1e, 0xb6, 0x89, 0x41, 0x2f, 0x61, 0x52, 0xd9,
0x49, 0x4c, 0x2a, 0x6a, 0x61, 0xcc, 0x0a, 0x7b, 0x0a, 0x87, 0x94, 0xdd, 0xd4, 0x90, 0x72, 0xed,
0x02, 0x9c, 0xf3, 0xe7, 0x93, 0xf7, 0x60, 0x36, 0x54, 0x97, 0x28, 0xca, 0xca, 0x45, 0x45, 0x59,
0xfd, 0x55, 0x05, 0xe6, 0x62, 0x2a, 0xc6, 0x93, 0xe6, 0xee, 0x8e, 0xf5, 0x35, 0xbc, 0x70, 0x6d,
0x96, 0xd9, 0x88, 0x16, 0xf4, 0x30, 0x7e, 0xbb, 0x18, 0x35, 0x0b, 0xd9, 0xd6, 0xe6, 0x0e, 0xd4,
0x19, 0x71, 0xbb, 0x94, 0x05, 0x34, 0xe1, 0xb0, 0xd9, 0x68, 0x56, 0x39, 0x4a, 0x50, 0x71, 0x8a,
0x7b, 0xe5, 0x36, 0xcc, 0x27, 0x94, 0x8d, 0xd5, 0xf3, 0x7d, 0xc1, 0x9d, 0x13, 0xa5, 0xc2, 0x25,
0x44, 0xd7, 0x87, 0x89, 0xe8, 0xda, 0x28, 0x76, 0x66, 0x2c, 0x41, 0x8b, 0x62, 0x0c, 0xa7, 0x62,
0xec, 0xf5, 0x52, 0x68, 0xe7, 0x47, 0xda, 0x3f, 0x2a, 0xb0, 0x14, 0xe3, 0x8e, 0x46, 0xe1, 0xef,
0x26, 0xee, 0x83, 0x8d, 0xd4, 0x7d, 0xd0, 0xc8, 0x93, 0x79, 0x6e, 0xb3, 0x70, 0xfe, 0x7c, 0x3a,
0xf9, 0xbf, 0x38, 0x9f, 0xfe, 0x5e, 0x81, 0x85, 0x98, 0xef, 0x2e, 0x61, 0x40, 0xbd, 0x9f, 0x1c,
0x50, 0xaf, 0x95, 0x09, 0x9a, 0x82, 0x09, 0xf5, 0x01, 0x2c, 0xc6, 0x98, 0xf6, 0xdd, 0x8e, 0x6e,
0x11, 0xc3, 0x43, 0xef, 0xc3, 0xa2, 0x2c, 0x20, 0x87, 0x8c, 0xb8, 0xc1, 0x7a, 0x70, 0xa5, 0x04,
0x48, 0x82, 0x86, 0xf3, 0x38, 0xd5, 0x7f, 0x2a, 0xd0, 0x8c, 0x01, 0x1f, 0x50, 0xd7, 0xd3, 0x3d,
0x46, 0x2d, 0xf6, 0xc0, 0x36, 0x7a, 0x26, 0xdd, 0x36, 0x88, 0x6e, 0x62, 0xca, 0x17, 0x74, 0xdb,
0x3a, 0xb0, 0x0d, 0xbd, 0x3d, 0x40, 0x04, 0xe6, 0x3e, 0x3f, 0xa5, 0xd6, 0x0e, 0x35, 0x28, 0xa3,
0x1d, 0x19, 0xa6, 0xef, 0x4b, 0x65, 0x73, 0x0f, 0x23, 0xd2, 0xb3, 0xe1, 0xda, 0x46, 0x19, 0x44,
0x11, 0xbd, 0x71, 0x4c, 0xf4, 0x53, 0x00, 0xfe, 0x29, 0xea, 0x5c, 0x47, 0x06, 0xf2, 0x9d, 0x20,
0xdb, 0x1f, 0x86, 0x94, 0xb1, 0x14, 0xc4, 0x10, 0xd5, 0xdf, 0xd4, 0x12, 0xb1, 0xf0, 0x7f, 0x3f,
0x82, 0xfe, 0x0c, 0x96, 0xfa, 0x91, 0x77, 0x02, 0x06, 0xde, 0xb2, 0x4f, 0xa6, 0x9f, 0xf5, 0x42,
0xf8, 0x3c, 0xbf, 0xb6, 0xbe, 0x29, 0x95, 0x2c, 0x3d, 0xc8, 0x81, 0xc3, 0xb9, 0x4a, 0xd0, 0x77,
0x60, 0x8e, 0x8f, 0x3b, 0x7a, 0x9b, 0x7e, 0x44, 0xcc, 0x20, 0x4f, 0x17, 0x83, 0x78, 0x39, 0x8c,
0x48, 0x38, 0xce, 0x87, 0x4e, 0x61, 0xd1, 0xb1, 0x3b, 0x7b, 0xc4, 0x22, 0x5d, 0xca, 0x9b, 0x44,
0xff, 0x28, 0xc5, 0x5c, 0x3a, 0xdb, 0x7a, 0x27, 0x18, 0x0d, 0x0e, 0xb2, 0x2c, 0xcf, 0xf8, 0x80,
0x97, 0x5d, 0x16, 0x41, 0x90, 0x07, 0x89, 0x5c, 0xa8, 0xf7, 0x64, 0xaf, 0x26, 0xc7, 0x74, 0xff,
0x01, 0x6e, 0xb3, 0x4c, 0xc2, 0x1e, 0x27, 0x24, 0xa3, 0xcb, 0x34, 0xb9, 0x8e, 0x53, 0x1a, 0x0a,
0xc7, 0xee, 0xda, 0x7f, 0x35, 0x76, 0xe7, 0xbc, 0x03, 0xcc, 0x8e, 0xf9, 0x0e, 0xf0, 0x67, 0x05,
0xae, 0x39, 0x25, 0x72, 0xa9, 0x01, 0xc2, 0x37, 0xf7, 0xca, 0xf8, 0xa6, 0x4c, 0x6e, 0xb6, 0x36,
0x46, 0xc3, 0xb5, 0x6b, 0x65, 0x38, 0x71, 0x29, 0xfb, 0xd0, 0x03, 0xa8, 0xd9, 0xb2, 0x3e, 0x36,
0xe6, 0x84, 0xad, 0xd7, 0xcb, 0xd8, 0x1a, 0xd4, 0x54, 0x3f, 0x2d, 0x83, 0x2f, 0x1c, 0x62, 0xa9,
0xbf, 0xad, 0xc2, 0x95, 0xcc, 0xed, 0x8e, 0x7e, 0x70, 0xce, 0x1b, 0xc0, 0xd5, 0xe7, 0x36, 0xff,
0x67, 0x86, 0xf7, 0xc9, 0x31, 0x86, 0xf7, 0x2d, 0x58, 0x68, 0xf7, 0x5c, 0x97, 0x5a, 0x2c, 0x35,
0xba, 0x87, 0xc1, 0xb2, 0x9d, 0x24, 0xe3, 0x34, 0x7f, 0xde, 0xfb, 0x43, 0x75, 0xcc, 0xf7, 0x87,
0xb8, 0x15, 0x72, 0x86, 0xf4, 0x53, 0x3b, 0x6b, 0x85, 0x1c, 0x25, 0xd3, 0xfc, 0xbc, 0xa1, 0xf5,
0x51, 0x43, 0x84, 0x99, 0x64, 0x43, 0x7b, 0x9c, 0xa0, 0xe2, 0x14, 0x77, 0xce, 0x2c, 0x3f, 0x5b,
0x76, 0x96, 0x47, 0x24, 0xf1, 0xd2, 0x00, 0xa2, 0x8e, 0xde, 0x28, 0x13, 0x67, 0xe5, 0x9f, 0x1a,
0x72, 0x1f, 0x59, 0xe6, 0xc6, 0x7f, 0x64, 0x51, 0xff, 0xa2, 0xc0, 0x4b, 0x85, 0x15, 0x0b, 0x6d,
0x25, 0xda, 0xcd, 0x1b, 0xa9, 0x76, 0xf3, 0x5b, 0x85, 0x82, 0xb1, 0x9e, 0xd3, 0xcd, 0x7f, 0x85,
0x78, 0xaf, 0xdc, 0x2b, 0x44, 0xce, 0x84, 0x7c, 0xf1, 0x73, 0x44, 0xeb, 0x7b, 0x4f, 0x9e, 0xae,
0x4e, 0x7c, 0xf9, 0x74, 0x75, 0xe2, 0xab, 0xa7, 0xab, 0x13, 0x3f, 0x1f, 0xad, 0x2a, 0x4f, 0x46,
0xab, 0xca, 0x97, 0xa3, 0x55, 0xe5, 0xab, 0xd1, 0xaa, 0xf2, 0xb7, 0xd1, 0xaa, 0xf2, 0xcb, 0xaf,
0x57, 0x27, 0x3e, 0x59, 0x2e, 0xf8, 0xa7, 0xfa, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xec, 0xbb,
0x1f, 0x87, 0xdc, 0x1e, 0x00, 0x00,
}
func (m *ControllerRevision) Marshal() (dAtA []byte, err error) {
@ -1737,6 +1770,32 @@ func (m *StatefulSetList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *StatefulSetOrdinals) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *StatefulSetOrdinals) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *StatefulSetOrdinals) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
i = encodeVarintGenerated(dAtA, i, uint64(m.Start))
i--
dAtA[i] = 0x8
return len(dAtA) - i, nil
}
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -1790,6 +1849,18 @@ func (m *StatefulSetSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if m.Ordinals != nil {
{
size, err := m.Ordinals.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintGenerated(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x5a
}
if m.PersistentVolumeClaimRetentionPolicy != nil {
{
size, err := m.PersistentVolumeClaimRetentionPolicy.MarshalToSizedBuffer(dAtA[:i])
@ -2312,6 +2383,16 @@ func (m *StatefulSetList) Size() (n int) {
return n
}
func (m *StatefulSetOrdinals) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
n += 1 + sovGenerated(uint64(m.Start))
return n
}
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Size() (n int) {
if m == nil {
return 0
@ -2360,6 +2441,10 @@ func (m *StatefulSetSpec) Size() (n int) {
l = m.PersistentVolumeClaimRetentionPolicy.Size()
n += 1 + l + sovGenerated(uint64(l))
}
if m.Ordinals != nil {
l = m.Ordinals.Size()
n += 1 + l + sovGenerated(uint64(l))
}
return n
}
@ -2676,6 +2761,16 @@ func (this *StatefulSetList) String() string {
}, "")
return s
}
func (this *StatefulSetOrdinals) String() string {
if this == nil {
return "nil"
}
s := strings.Join([]string{`&StatefulSetOrdinals{`,
`Start:` + fmt.Sprintf("%v", this.Start) + `,`,
`}`,
}, "")
return s
}
func (this *StatefulSetPersistentVolumeClaimRetentionPolicy) String() string {
if this == nil {
return "nil"
@ -2707,6 +2802,7 @@ func (this *StatefulSetSpec) String() string {
`RevisionHistoryLimit:` + valueToStringGenerated(this.RevisionHistoryLimit) + `,`,
`MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`,
`PersistentVolumeClaimRetentionPolicy:` + strings.Replace(this.PersistentVolumeClaimRetentionPolicy.String(), "StatefulSetPersistentVolumeClaimRetentionPolicy", "StatefulSetPersistentVolumeClaimRetentionPolicy", 1) + `,`,
`Ordinals:` + strings.Replace(this.Ordinals.String(), "StatefulSetOrdinals", "StatefulSetOrdinals", 1) + `,`,
`}`,
}, "")
return s
@ -5601,6 +5697,75 @@ func (m *StatefulSetList) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *StatefulSetOrdinals) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: StatefulSetOrdinals: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: StatefulSetOrdinals: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field Start", wireType)
}
m.Start = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.Start |= int32(b&0x7F) << shift
if b < 0x80 {
break
}
}
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthGenerated
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@ -6039,6 +6204,42 @@ func (m *StatefulSetSpec) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
case 11:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Ordinals", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthGenerated
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthGenerated
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Ordinals == nil {
m.Ordinals = &StatefulSetOrdinals{}
}
if err := m.Ordinals.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])

View File

@ -380,6 +380,17 @@ message StatefulSetList {
repeated StatefulSet items = 2;
}
// StatefulSetOrdinals describes the policy used for replica ordinal assignment
// in this StatefulSet.
message StatefulSetOrdinals {
// Start is the number representing the first index that is used to represent
// replica ordinals. Defaults to 0.
// If set, replica ordinals will be numbered
// [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).
// +optional
optional int32 replicaStartOrdinal = 1;
}
// StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs
// created from the StatefulSet VolumeClaimTemplates.
message StatefulSetPersistentVolumeClaimRetentionPolicy {
@ -469,6 +480,14 @@ message StatefulSetSpec {
// StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.
// +optional
optional StatefulSetPersistentVolumeClaimRetentionPolicy persistentVolumeClaimRetentionPolicy = 10;
// Ordinals controls how the stateful set creates pod and persistent volume
// claim names.
// The default behavior assigns a number starting with zero and incremented by
// one for each additional replica requested. This requires the
// StatefulSetSlice feature gate to be enabled, which is alpha.
// +optional
optional StatefulSetOrdinals ordinals = 11;
}
// StatefulSetStatus represents the current state of a StatefulSet.

View File

@ -204,6 +204,17 @@ type StatefulSetPersistentVolumeClaimRetentionPolicy struct {
WhenScaled PersistentVolumeClaimRetentionPolicyType `json:"whenScaled,omitempty" protobuf:"bytes,2,opt,name=whenScaled,casttype=PersistentVolumeClaimRetentionPolicyType"`
}
// StatefulSetOrdinals describes the policy used for replica ordinal assignment
// in this StatefulSet.
type StatefulSetOrdinals struct {
// Start is the number representing the first index that is used to represent
// replica ordinals. Defaults to 0.
// If set, replica ordinals will be numbered
// [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).
// +optional
Start int32 `json:"start" protobuf:"varint,1,opt,name=start"`
}
// A StatefulSetSpec is the specification of a StatefulSet.
type StatefulSetSpec struct {
// replicas is the desired number of replicas of the given Template.
@ -276,6 +287,14 @@ type StatefulSetSpec struct {
// StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.
// +optional
PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy `json:"persistentVolumeClaimRetentionPolicy,omitempty" protobuf:"bytes,10,opt,name=persistentVolumeClaimRetentionPolicy"`
// Ordinals controls how the stateful set creates pod and persistent volume
// claim names.
// The default behavior assigns a number starting with zero and incremented by
// one for each additional replica requested. This requires the
// StatefulSetSlice feature gate to be enabled, which is alpha.
// +optional
Ordinals *StatefulSetOrdinals `json:"ordinals,omitempty" protobuf:"bytes,11,opt,name=ordinals"`
}
// StatefulSetStatus represents the current state of a StatefulSet.

View File

@ -228,6 +228,15 @@ func (StatefulSetList) SwaggerDoc() map[string]string {
return map_StatefulSetList
}
var map_StatefulSetOrdinals = map[string]string{
"": "StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet.",
"start": "Start is the number representing the first index that is used to represent replica ordinals. Defaults to 0. If set, replica ordinals will be numbered [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).",
}
func (StatefulSetOrdinals) SwaggerDoc() map[string]string {
return map_StatefulSetOrdinals
}
var map_StatefulSetPersistentVolumeClaimRetentionPolicy = map[string]string{
"": "StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.",
"whenDeleted": "WhenDeleted specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is deleted. The default policy of `Retain` causes PVCs to not be affected by StatefulSet deletion. The `Delete` policy causes those PVCs to be deleted.",
@ -250,6 +259,7 @@ var map_StatefulSetSpec = map[string]string{
"revisionHistoryLimit": "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.",
"minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)",
"persistentVolumeClaimRetentionPolicy": "PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.",
"ordinals": "Ordinals controls how the stateful set creates pod and persistent volume claim names. The default behavior assigns a number starting with zero and incremented by one for each additional replica requested. This requires the StatefulSetSlice feature gate to be enabled, which is alpha.",
}
func (StatefulSetSpec) SwaggerDoc() map[string]string {

View File

@ -505,6 +505,22 @@ func (in *StatefulSetList) DeepCopyObject() runtime.Object {
return nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StatefulSetOrdinals) DeepCopyInto(out *StatefulSetOrdinals) {
*out = *in
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetOrdinals.
func (in *StatefulSetOrdinals) DeepCopy() *StatefulSetOrdinals {
if in == nil {
return nil
}
out := new(StatefulSetOrdinals)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StatefulSetPersistentVolumeClaimRetentionPolicy) DeepCopyInto(out *StatefulSetPersistentVolumeClaimRetentionPolicy) {
*out = *in
@ -553,6 +569,11 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) {
*out = new(StatefulSetPersistentVolumeClaimRetentionPolicy)
**out = **in
}
if in.Ordinals != nil {
in, out := &in.Ordinals, &out.Ordinals
*out = new(StatefulSetOrdinals)
**out = **in
}
return
}

View File

@ -833,12 +833,40 @@ func (m *StatefulSetList) XXX_DiscardUnknown() {
var xxx_messageInfo_StatefulSetList proto.InternalMessageInfo
func (m *StatefulSetOrdinals) Reset() { *m = StatefulSetOrdinals{} }
func (*StatefulSetOrdinals) ProtoMessage() {}
func (*StatefulSetOrdinals) Descriptor() ([]byte, []int) {
return fileDescriptor_42fe616264472f7e, []int{28}
}
func (m *StatefulSetOrdinals) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *StatefulSetOrdinals) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
func (m *StatefulSetOrdinals) XXX_Merge(src proto.Message) {
xxx_messageInfo_StatefulSetOrdinals.Merge(m, src)
}
func (m *StatefulSetOrdinals) XXX_Size() int {
return m.Size()
}
func (m *StatefulSetOrdinals) XXX_DiscardUnknown() {
xxx_messageInfo_StatefulSetOrdinals.DiscardUnknown(m)
}
var xxx_messageInfo_StatefulSetOrdinals proto.InternalMessageInfo
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Reset() {
*m = StatefulSetPersistentVolumeClaimRetentionPolicy{}
}
func (*StatefulSetPersistentVolumeClaimRetentionPolicy) ProtoMessage() {}
func (*StatefulSetPersistentVolumeClaimRetentionPolicy) Descriptor() ([]byte, []int) {
return fileDescriptor_42fe616264472f7e, []int{28}
return fileDescriptor_42fe616264472f7e, []int{29}
}
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -866,7 +894,7 @@ var xxx_messageInfo_StatefulSetPersistentVolumeClaimRetentionPolicy proto.Intern
func (m *StatefulSetSpec) Reset() { *m = StatefulSetSpec{} }
func (*StatefulSetSpec) ProtoMessage() {}
func (*StatefulSetSpec) Descriptor() ([]byte, []int) {
return fileDescriptor_42fe616264472f7e, []int{29}
return fileDescriptor_42fe616264472f7e, []int{30}
}
func (m *StatefulSetSpec) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -894,7 +922,7 @@ var xxx_messageInfo_StatefulSetSpec proto.InternalMessageInfo
func (m *StatefulSetStatus) Reset() { *m = StatefulSetStatus{} }
func (*StatefulSetStatus) ProtoMessage() {}
func (*StatefulSetStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_42fe616264472f7e, []int{30}
return fileDescriptor_42fe616264472f7e, []int{31}
}
func (m *StatefulSetStatus) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -922,7 +950,7 @@ var xxx_messageInfo_StatefulSetStatus proto.InternalMessageInfo
func (m *StatefulSetUpdateStrategy) Reset() { *m = StatefulSetUpdateStrategy{} }
func (*StatefulSetUpdateStrategy) ProtoMessage() {}
func (*StatefulSetUpdateStrategy) Descriptor() ([]byte, []int) {
return fileDescriptor_42fe616264472f7e, []int{31}
return fileDescriptor_42fe616264472f7e, []int{32}
}
func (m *StatefulSetUpdateStrategy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -977,6 +1005,7 @@ func init() {
proto.RegisterType((*StatefulSet)(nil), "k8s.io.api.apps.v1beta2.StatefulSet")
proto.RegisterType((*StatefulSetCondition)(nil), "k8s.io.api.apps.v1beta2.StatefulSetCondition")
proto.RegisterType((*StatefulSetList)(nil), "k8s.io.api.apps.v1beta2.StatefulSetList")
proto.RegisterType((*StatefulSetOrdinals)(nil), "k8s.io.api.apps.v1beta2.StatefulSetOrdinals")
proto.RegisterType((*StatefulSetPersistentVolumeClaimRetentionPolicy)(nil), "k8s.io.api.apps.v1beta2.StatefulSetPersistentVolumeClaimRetentionPolicy")
proto.RegisterType((*StatefulSetSpec)(nil), "k8s.io.api.apps.v1beta2.StatefulSetSpec")
proto.RegisterType((*StatefulSetStatus)(nil), "k8s.io.api.apps.v1beta2.StatefulSetStatus")
@ -988,151 +1017,154 @@ func init() {
}
var fileDescriptor_42fe616264472f7e = []byte{
// 2295 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcf, 0x6f, 0x1b, 0xc7,
0xf5, 0xd7, 0xf2, 0x87, 0x44, 0x8e, 0x2c, 0xc9, 0x1e, 0xe9, 0x2b, 0x31, 0xf2, 0xb7, 0xa4, 0xb1,
0x31, 0x1c, 0x25, 0xb6, 0x49, 0x5b, 0xf9, 0x81, 0xc4, 0x6e, 0x93, 0x8a, 0x52, 0x6a, 0x3b, 0x90,
0x64, 0x66, 0x64, 0x39, 0x68, 0xd0, 0x1f, 0x1e, 0x91, 0x63, 0x6a, 0xa3, 0xe5, 0xee, 0x62, 0x77,
0x96, 0x31, 0xd1, 0x4b, 0xaf, 0x05, 0x0a, 0xb4, 0xbd, 0xf6, 0x9f, 0xe8, 0xad, 0x28, 0x1a, 0xf4,
0x52, 0x04, 0x81, 0x8f, 0x41, 0x2f, 0x49, 0x2f, 0x44, 0xcd, 0x9c, 0x8a, 0xa2, 0xb7, 0xf6, 0x62,
0xa0, 0x40, 0x31, 0xb3, 0xb3, 0xbf, 0x77, 0xcd, 0xa5, 0x62, 0x2b, 0x4d, 0x90, 0x1b, 0x77, 0xde,
0x7b, 0x9f, 0x79, 0x33, 0xf3, 0xde, 0xbc, 0xcf, 0xcc, 0x10, 0x7c, 0xff, 0xe8, 0x75, 0xab, 0xae,
0xe8, 0x8d, 0x23, 0xfb, 0x80, 0x98, 0x1a, 0xa1, 0xc4, 0x6a, 0xf4, 0x89, 0xd6, 0xd1, 0xcd, 0x86,
0x10, 0x60, 0x43, 0x69, 0x60, 0xc3, 0xb0, 0x1a, 0xfd, 0xab, 0x07, 0x84, 0xe2, 0xf5, 0x46, 0x97,
0x68, 0xc4, 0xc4, 0x94, 0x74, 0xea, 0x86, 0xa9, 0x53, 0x1d, 0xae, 0x38, 0x8a, 0x75, 0x6c, 0x28,
0x75, 0xa6, 0x58, 0x17, 0x8a, 0xab, 0x97, 0xbb, 0x0a, 0x3d, 0xb4, 0x0f, 0xea, 0x6d, 0xbd, 0xd7,
0xe8, 0xea, 0x5d, 0xbd, 0xc1, 0xf5, 0x0f, 0xec, 0xfb, 0xfc, 0x8b, 0x7f, 0xf0, 0x5f, 0x0e, 0xce,
0xaa, 0x1c, 0xe8, 0xb0, 0xad, 0x9b, 0xa4, 0xd1, 0xbf, 0x1a, 0xed, 0x6b, 0xf5, 0x15, 0x5f, 0xa7,
0x87, 0xdb, 0x87, 0x8a, 0x46, 0xcc, 0x41, 0xc3, 0x38, 0xea, 0xb2, 0x06, 0xab, 0xd1, 0x23, 0x14,
0x27, 0x59, 0x35, 0xd2, 0xac, 0x4c, 0x5b, 0xa3, 0x4a, 0x8f, 0xc4, 0x0c, 0x5e, 0x1b, 0x67, 0x60,
0xb5, 0x0f, 0x49, 0x0f, 0xc7, 0xec, 0x5e, 0x4e, 0xb3, 0xb3, 0xa9, 0xa2, 0x36, 0x14, 0x8d, 0x5a,
0xd4, 0x8c, 0x1a, 0xc9, 0xff, 0x96, 0x00, 0xdc, 0xd4, 0x35, 0x6a, 0xea, 0xaa, 0x4a, 0x4c, 0x44,
0xfa, 0x8a, 0xa5, 0xe8, 0x1a, 0xbc, 0x07, 0x4a, 0x6c, 0x3c, 0x1d, 0x4c, 0x71, 0x45, 0x3a, 0x27,
0xad, 0xcd, 0xae, 0x5f, 0xa9, 0xfb, 0x33, 0xed, 0xc1, 0xd7, 0x8d, 0xa3, 0x2e, 0x6b, 0xb0, 0xea,
0x4c, 0xbb, 0xde, 0xbf, 0x5a, 0xbf, 0x7d, 0xf0, 0x01, 0x69, 0xd3, 0x1d, 0x42, 0x71, 0x13, 0x3e,
0x1c, 0xd6, 0xa6, 0x46, 0xc3, 0x1a, 0xf0, 0xdb, 0x90, 0x87, 0x0a, 0x6f, 0x83, 0x02, 0x47, 0xcf,
0x71, 0xf4, 0xcb, 0xa9, 0xe8, 0x62, 0xd0, 0x75, 0x84, 0x3f, 0x7c, 0xfb, 0x01, 0x25, 0x1a, 0x73,
0xaf, 0x79, 0x4a, 0x40, 0x17, 0xb6, 0x30, 0xc5, 0x88, 0x03, 0xc1, 0x4b, 0xa0, 0x64, 0x0a, 0xf7,
0x2b, 0xf9, 0x73, 0xd2, 0x5a, 0xbe, 0x79, 0x5a, 0x68, 0x95, 0xdc, 0x61, 0x21, 0x4f, 0x43, 0x7e,
0x28, 0x81, 0xe5, 0xf8, 0xb8, 0xb7, 0x15, 0x8b, 0xc2, 0x1f, 0xc5, 0xc6, 0x5e, 0xcf, 0x36, 0x76,
0x66, 0xcd, 0x47, 0xee, 0x75, 0xec, 0xb6, 0x04, 0xc6, 0xdd, 0x02, 0x45, 0x85, 0x92, 0x9e, 0x55,
0xc9, 0x9d, 0xcb, 0xaf, 0xcd, 0xae, 0x5f, 0xac, 0xa7, 0x04, 0x70, 0x3d, 0xee, 0x5d, 0x73, 0x4e,
0xe0, 0x16, 0x6f, 0x31, 0x04, 0xe4, 0x00, 0xc9, 0xbf, 0xc8, 0x81, 0xf2, 0x16, 0x26, 0x3d, 0x5d,
0xdb, 0x23, 0xf4, 0x04, 0x56, 0xee, 0x26, 0x28, 0x58, 0x06, 0x69, 0x8b, 0x95, 0xbb, 0x90, 0x3a,
0x00, 0xcf, 0xa7, 0x3d, 0x83, 0xb4, 0xfd, 0x25, 0x63, 0x5f, 0x88, 0x23, 0xc0, 0x16, 0x98, 0xb6,
0x28, 0xa6, 0xb6, 0xc5, 0x17, 0x6c, 0x76, 0x7d, 0x2d, 0x03, 0x16, 0xd7, 0x6f, 0xce, 0x0b, 0xb4,
0x69, 0xe7, 0x1b, 0x09, 0x1c, 0xf9, 0xef, 0x39, 0x00, 0x3d, 0xdd, 0x4d, 0x5d, 0xeb, 0x28, 0x94,
0x85, 0xf3, 0x35, 0x50, 0xa0, 0x03, 0x83, 0xf0, 0x09, 0x29, 0x37, 0x2f, 0xb8, 0xae, 0xdc, 0x19,
0x18, 0xe4, 0xf1, 0xb0, 0xb6, 0x1c, 0xb7, 0x60, 0x12, 0xc4, 0x6d, 0xe0, 0xb6, 0xe7, 0x64, 0x8e,
0x5b, 0xbf, 0x12, 0xee, 0xfa, 0xf1, 0xb0, 0x96, 0xb0, 0x77, 0xd4, 0x3d, 0xa4, 0xb0, 0x83, 0xb0,
0x0f, 0xa0, 0x8a, 0x2d, 0x7a, 0xc7, 0xc4, 0x9a, 0xe5, 0xf4, 0xa4, 0xf4, 0x88, 0x18, 0xfe, 0x4b,
0xd9, 0x16, 0x8a, 0x59, 0x34, 0x57, 0x85, 0x17, 0x70, 0x3b, 0x86, 0x86, 0x12, 0x7a, 0x80, 0x17,
0xc0, 0xb4, 0x49, 0xb0, 0xa5, 0x6b, 0x95, 0x02, 0x1f, 0x85, 0x37, 0x81, 0x88, 0xb7, 0x22, 0x21,
0x85, 0x2f, 0x82, 0x99, 0x1e, 0xb1, 0x2c, 0xdc, 0x25, 0x95, 0x22, 0x57, 0x5c, 0x10, 0x8a, 0x33,
0x3b, 0x4e, 0x33, 0x72, 0xe5, 0xf2, 0xef, 0x25, 0x30, 0xe7, 0xcd, 0xdc, 0x09, 0x64, 0xce, 0x8d,
0x70, 0xe6, 0xc8, 0xe3, 0x83, 0x25, 0x25, 0x61, 0x3e, 0xce, 0x07, 0x1c, 0x67, 0xe1, 0x08, 0x7f,
0x0c, 0x4a, 0x16, 0x51, 0x49, 0x9b, 0xea, 0xa6, 0x70, 0xfc, 0xe5, 0x8c, 0x8e, 0xe3, 0x03, 0xa2,
0xee, 0x09, 0xd3, 0xe6, 0x29, 0xe6, 0xb9, 0xfb, 0x85, 0x3c, 0x48, 0xf8, 0x2e, 0x28, 0x51, 0xd2,
0x33, 0x54, 0x4c, 0x89, 0xc8, 0x9a, 0xe7, 0x83, 0xce, 0xb3, 0x98, 0x61, 0x60, 0x2d, 0xbd, 0x73,
0x47, 0xa8, 0xf1, 0x94, 0xf1, 0x26, 0xc3, 0x6d, 0x45, 0x1e, 0x0c, 0x34, 0xc0, 0xbc, 0x6d, 0x74,
0x98, 0x26, 0x65, 0xdb, 0x79, 0x77, 0x20, 0x62, 0xe8, 0xca, 0xf8, 0x59, 0xd9, 0x0f, 0xd9, 0x35,
0x97, 0x45, 0x2f, 0xf3, 0xe1, 0x76, 0x14, 0xc1, 0x87, 0x1b, 0x60, 0xa1, 0xa7, 0x68, 0x88, 0xe0,
0xce, 0x60, 0x8f, 0xb4, 0x75, 0xad, 0x63, 0xf1, 0x50, 0x2a, 0x36, 0x57, 0x04, 0xc0, 0xc2, 0x4e,
0x58, 0x8c, 0xa2, 0xfa, 0x70, 0x1b, 0x2c, 0xb9, 0x1b, 0xf0, 0x4d, 0xc5, 0xa2, 0xba, 0x39, 0xd8,
0x56, 0x7a, 0x0a, 0xad, 0x4c, 0x73, 0x9c, 0xca, 0x68, 0x58, 0x5b, 0x42, 0x09, 0x72, 0x94, 0x68,
0x25, 0xff, 0x66, 0x1a, 0x2c, 0x44, 0xf6, 0x05, 0x78, 0x17, 0x2c, 0xb7, 0x6d, 0xd3, 0x24, 0x1a,
0xdd, 0xb5, 0x7b, 0x07, 0xc4, 0xdc, 0x6b, 0x1f, 0x92, 0x8e, 0xad, 0x92, 0x0e, 0x5f, 0xd6, 0x62,
0xb3, 0x2a, 0x7c, 0x5d, 0xde, 0x4c, 0xd4, 0x42, 0x29, 0xd6, 0xf0, 0x1d, 0x00, 0x35, 0xde, 0xb4,
0xa3, 0x58, 0x96, 0x87, 0x99, 0xe3, 0x98, 0x5e, 0x2a, 0xee, 0xc6, 0x34, 0x50, 0x82, 0x15, 0xf3,
0xb1, 0x43, 0x2c, 0xc5, 0x24, 0x9d, 0xa8, 0x8f, 0xf9, 0xb0, 0x8f, 0x5b, 0x89, 0x5a, 0x28, 0xc5,
0x1a, 0xbe, 0x0a, 0x66, 0x9d, 0xde, 0xf8, 0x9c, 0x8b, 0xc5, 0x59, 0x14, 0x60, 0xb3, 0xbb, 0xbe,
0x08, 0x05, 0xf5, 0xd8, 0xd0, 0xf4, 0x03, 0x8b, 0x98, 0x7d, 0xd2, 0xb9, 0xe1, 0x90, 0x03, 0x56,
0x41, 0x8b, 0xbc, 0x82, 0x7a, 0x43, 0xbb, 0x1d, 0xd3, 0x40, 0x09, 0x56, 0x6c, 0x68, 0x4e, 0xd4,
0xc4, 0x86, 0x36, 0x1d, 0x1e, 0xda, 0x7e, 0xa2, 0x16, 0x4a, 0xb1, 0x66, 0xb1, 0xe7, 0xb8, 0xbc,
0xd1, 0xc7, 0x8a, 0x8a, 0x0f, 0x54, 0x52, 0x99, 0x09, 0xc7, 0xde, 0x6e, 0x58, 0x8c, 0xa2, 0xfa,
0xf0, 0x06, 0x38, 0xe3, 0x34, 0xed, 0x6b, 0xd8, 0x03, 0x29, 0x71, 0x90, 0xe7, 0x04, 0xc8, 0x99,
0xdd, 0xa8, 0x02, 0x8a, 0xdb, 0xc0, 0x6b, 0x60, 0xbe, 0xad, 0xab, 0x2a, 0x8f, 0xc7, 0x4d, 0xdd,
0xd6, 0x68, 0xa5, 0xcc, 0x51, 0x20, 0xcb, 0xa1, 0xcd, 0x90, 0x04, 0x45, 0x34, 0xe1, 0x4f, 0x01,
0x68, 0xbb, 0x85, 0xc1, 0xaa, 0x80, 0x31, 0x0c, 0x20, 0x5e, 0x96, 0xfc, 0xca, 0xec, 0x35, 0x59,
0x28, 0x00, 0x29, 0x7f, 0x2c, 0x81, 0x95, 0x94, 0x44, 0x87, 0x6f, 0x85, 0x8a, 0xe0, 0xc5, 0x48,
0x11, 0x3c, 0x9b, 0x62, 0x16, 0xa8, 0x84, 0x87, 0x60, 0x8e, 0x11, 0x12, 0x45, 0xeb, 0x3a, 0x2a,
0x62, 0x2f, 0x6b, 0xa4, 0x0e, 0x00, 0x05, 0xb5, 0xfd, 0x5d, 0xf9, 0xcc, 0x68, 0x58, 0x9b, 0x0b,
0xc9, 0x50, 0x18, 0x58, 0xfe, 0x65, 0x0e, 0x80, 0x2d, 0x62, 0xa8, 0xfa, 0xa0, 0x47, 0xb4, 0x93,
0xe0, 0x34, 0xb7, 0x42, 0x9c, 0xe6, 0x85, 0xf4, 0x25, 0xf1, 0x9c, 0x4a, 0x25, 0x35, 0xef, 0x46,
0x48, 0xcd, 0x8b, 0x59, 0xc0, 0x9e, 0xcc, 0x6a, 0x3e, 0xcb, 0x83, 0x45, 0x5f, 0xd9, 0xa7, 0x35,
0xd7, 0x43, 0x2b, 0xfa, 0x42, 0x64, 0x45, 0x57, 0x12, 0x4c, 0x9e, 0x19, 0xaf, 0xf9, 0x00, 0xcc,
0x33, 0xd6, 0xe1, 0xac, 0x1f, 0xe7, 0x34, 0xd3, 0x13, 0x73, 0x1a, 0xaf, 0x12, 0x6d, 0x87, 0x90,
0x50, 0x04, 0x39, 0x85, 0x43, 0xcd, 0x7c, 0x1d, 0x39, 0xd4, 0x1f, 0x24, 0x30, 0xef, 0x2f, 0xd3,
0x09, 0x90, 0xa8, 0x9b, 0x61, 0x12, 0xf5, 0x7c, 0x86, 0xe0, 0x4c, 0x61, 0x51, 0x9f, 0x15, 0x82,
0xae, 0x73, 0x1a, 0xb5, 0xc6, 0x8e, 0x60, 0x86, 0xaa, 0xb4, 0xb1, 0x25, 0xea, 0xed, 0x29, 0xe7,
0xf8, 0xe5, 0xb4, 0x21, 0x4f, 0x1a, 0x22, 0x5c, 0xb9, 0x67, 0x4b, 0xb8, 0xf2, 0x4f, 0x87, 0x70,
0xfd, 0x10, 0x94, 0x2c, 0x97, 0x6a, 0x15, 0x38, 0xe4, 0xc5, 0x4c, 0x89, 0x2d, 0x58, 0x96, 0x07,
0xed, 0xf1, 0x2b, 0x0f, 0x2e, 0x89, 0x59, 0x15, 0xbf, 0x4a, 0x66, 0xc5, 0x02, 0xdd, 0xc0, 0xb6,
0x45, 0x3a, 0x3c, 0xa9, 0x4a, 0x7e, 0xa0, 0xb7, 0x78, 0x2b, 0x12, 0x52, 0xb8, 0x0f, 0x56, 0x0c,
0x53, 0xef, 0x9a, 0xc4, 0xb2, 0xb6, 0x08, 0xee, 0xa8, 0x8a, 0x46, 0xdc, 0x01, 0x38, 0x35, 0xf1,
0xec, 0x68, 0x58, 0x5b, 0x69, 0x25, 0xab, 0xa0, 0x34, 0x5b, 0xf9, 0xcf, 0x05, 0x70, 0x3a, 0xba,
0x37, 0xa6, 0xd0, 0x14, 0xe9, 0x58, 0x34, 0xe5, 0x52, 0x20, 0x4e, 0x1d, 0x0e, 0x17, 0xb8, 0x2a,
0x88, 0xc5, 0xea, 0x06, 0x58, 0x10, 0xb4, 0xc4, 0x15, 0x0a, 0xa2, 0xe6, 0x2d, 0xcf, 0x7e, 0x58,
0x8c, 0xa2, 0xfa, 0xf0, 0x3a, 0x98, 0x33, 0x39, 0xf3, 0x72, 0x01, 0x1c, 0xf6, 0xf2, 0x7f, 0x02,
0x60, 0x0e, 0x05, 0x85, 0x28, 0xac, 0xcb, 0x98, 0x8b, 0x4f, 0x48, 0x5c, 0x80, 0x42, 0x98, 0xb9,
0x6c, 0x44, 0x15, 0x50, 0xdc, 0x06, 0xee, 0x80, 0x45, 0x5b, 0x8b, 0x43, 0x39, 0xb1, 0x76, 0x56,
0x40, 0x2d, 0xee, 0xc7, 0x55, 0x50, 0x92, 0x1d, 0xbc, 0x17, 0x22, 0x33, 0xd3, 0x7c, 0x3f, 0xb9,
0x94, 0x21, 0x27, 0x32, 0xb3, 0x99, 0x04, 0xaa, 0x55, 0xca, 0x4a, 0xb5, 0xe4, 0x8f, 0x24, 0x00,
0xe3, 0x79, 0x38, 0xf6, 0x26, 0x20, 0x66, 0x11, 0xa8, 0x98, 0x4a, 0x32, 0xff, 0xb9, 0x92, 0x91,
0xff, 0xf8, 0x1b, 0x6a, 0x36, 0x02, 0x24, 0x26, 0xfa, 0x64, 0x2e, 0x75, 0xb2, 0x12, 0x20, 0xdf,
0xa9, 0xa7, 0x40, 0x80, 0x02, 0x60, 0x4f, 0x26, 0x40, 0xff, 0xc8, 0x81, 0x45, 0x5f, 0x39, 0x33,
0x01, 0x4a, 0x30, 0xf9, 0xf6, 0x62, 0x27, 0x1b, 0x29, 0xf1, 0xa7, 0xee, 0x7f, 0x89, 0x94, 0xf8,
0x5e, 0xa5, 0x90, 0x92, 0xdf, 0xe5, 0x82, 0xae, 0x4f, 0x48, 0x4a, 0x9e, 0xc2, 0x0d, 0xc7, 0xd7,
0x8e, 0xd7, 0xc8, 0x9f, 0xe4, 0xc1, 0xe9, 0x68, 0x1e, 0x86, 0x0a, 0xa4, 0x34, 0xb6, 0x40, 0xb6,
0xc0, 0xd2, 0x7d, 0x5b, 0x55, 0x07, 0x7c, 0x0c, 0x81, 0x2a, 0xe9, 0x94, 0xd6, 0xff, 0x17, 0x96,
0x4b, 0x3f, 0x48, 0xd0, 0x41, 0x89, 0x96, 0xf1, 0x7a, 0x59, 0xf8, 0xb2, 0xf5, 0xb2, 0x78, 0x8c,
0x7a, 0x99, 0x4c, 0x39, 0xf2, 0xc7, 0xa2, 0x1c, 0x93, 0x15, 0xcb, 0x84, 0x8d, 0x6b, 0xec, 0xd1,
0x7f, 0x24, 0x81, 0xe5, 0xe4, 0x03, 0x37, 0x54, 0xc1, 0x7c, 0x0f, 0x3f, 0x08, 0x5e, 0x7c, 0x8c,
0x2b, 0x22, 0x36, 0x55, 0xd4, 0xba, 0xf3, 0x64, 0x54, 0xbf, 0xa5, 0xd1, 0xdb, 0xe6, 0x1e, 0x35,
0x15, 0xad, 0xeb, 0x54, 0xde, 0x9d, 0x10, 0x16, 0x8a, 0x60, 0xc3, 0xf7, 0x41, 0xa9, 0x87, 0x1f,
0xec, 0xd9, 0x66, 0x37, 0xa9, 0x42, 0x66, 0xeb, 0x87, 0x27, 0xc0, 0x8e, 0x40, 0x41, 0x1e, 0x9e,
0xfc, 0x85, 0x04, 0x56, 0x52, 0xaa, 0xea, 0x37, 0x68, 0x94, 0x7f, 0x92, 0xc0, 0xb9, 0xd0, 0x28,
0x59, 0x5a, 0x92, 0xfb, 0xb6, 0xca, 0x33, 0x54, 0x30, 0x99, 0x8b, 0xa0, 0x6c, 0x60, 0x93, 0x2a,
0x1e, 0x0f, 0x2e, 0x36, 0xe7, 0x46, 0xc3, 0x5a, 0xb9, 0xe5, 0x36, 0x22, 0x5f, 0x9e, 0x30, 0x37,
0xb9, 0x67, 0x37, 0x37, 0xf2, 0x7f, 0x24, 0x50, 0xdc, 0x6b, 0x63, 0x95, 0x9c, 0x00, 0x71, 0xd9,
0x0a, 0x11, 0x97, 0xf4, 0x47, 0x01, 0xee, 0x4f, 0x2a, 0x67, 0xd9, 0x8e, 0x70, 0x96, 0xf3, 0x63,
0x70, 0x9e, 0x4c, 0x57, 0xde, 0x00, 0x65, 0xaf, 0xbb, 0xc9, 0xf6, 0x52, 0xf9, 0xb7, 0x39, 0x30,
0x1b, 0xe8, 0x62, 0xc2, 0x9d, 0xf8, 0x5e, 0xa8, 0xfc, 0xb0, 0x3d, 0x66, 0x3d, 0xcb, 0x40, 0xea,
0x6e, 0xa9, 0x79, 0x5b, 0xa3, 0x66, 0xf0, 0xac, 0x1a, 0xaf, 0x40, 0x6f, 0x82, 0x79, 0x8a, 0xcd,
0x2e, 0xa1, 0xae, 0x8c, 0x4f, 0x58, 0xd9, 0xbf, 0xbb, 0xb9, 0x13, 0x92, 0xa2, 0x88, 0xf6, 0xea,
0x75, 0x30, 0x17, 0xea, 0x0c, 0x9e, 0x06, 0xf9, 0x23, 0x32, 0x70, 0x18, 0x1c, 0x62, 0x3f, 0xe1,
0x12, 0x28, 0xf6, 0xb1, 0x6a, 0x3b, 0x21, 0x5a, 0x46, 0xce, 0xc7, 0xb5, 0xdc, 0xeb, 0x92, 0xfc,
0x2b, 0x36, 0x39, 0x7e, 0x2a, 0x9c, 0x40, 0x74, 0xbd, 0x13, 0x8a, 0xae, 0xf4, 0xf7, 0xc9, 0x60,
0x82, 0xa6, 0xc5, 0x18, 0x8a, 0xc4, 0xd8, 0x4b, 0x99, 0xd0, 0x9e, 0x1c, 0x69, 0xff, 0xcc, 0x81,
0xa5, 0x80, 0xb6, 0xcf, 0x8c, 0xbf, 0x1b, 0x62, 0xc6, 0x6b, 0x11, 0x66, 0x5c, 0x49, 0xb2, 0xf9,
0x96, 0x1a, 0x8f, 0xa7, 0xc6, 0x7f, 0x94, 0xc0, 0x42, 0x60, 0xee, 0x4e, 0x80, 0x1b, 0xdf, 0x0a,
0x73, 0xe3, 0xf3, 0x59, 0x82, 0x26, 0x85, 0x1c, 0xff, 0x4b, 0x02, 0x8d, 0x80, 0x56, 0x8b, 0x98,
0x96, 0x62, 0x51, 0xa2, 0xd1, 0xbb, 0xba, 0x6a, 0xf7, 0xc8, 0xa6, 0x8a, 0x95, 0x1e, 0x22, 0xac,
0x41, 0xd1, 0xb5, 0x96, 0xae, 0x2a, 0xed, 0x01, 0xc4, 0x60, 0xf6, 0xc3, 0x43, 0xa2, 0x6d, 0x11,
0x95, 0x50, 0xf1, 0x8a, 0x56, 0x6e, 0xbe, 0xe5, 0x3e, 0x2a, 0xbd, 0xe7, 0x8b, 0x1e, 0x0f, 0x6b,
0x6b, 0x59, 0x10, 0x79, 0x94, 0x05, 0x31, 0xe1, 0x4f, 0x00, 0x60, 0x9f, 0x7c, 0x3f, 0xea, 0x88,
0x80, 0x7b, 0xd3, 0xcd, 0xca, 0xf7, 0x3c, 0xc9, 0x44, 0x1d, 0x04, 0x10, 0xe5, 0xbf, 0xce, 0x84,
0xd6, 0xec, 0x1b, 0x7f, 0x53, 0xf9, 0x33, 0xb0, 0xd4, 0xf7, 0x67, 0xc7, 0x55, 0x60, 0x1c, 0x3a,
0x1f, 0x3d, 0x8d, 0x7b, 0xf0, 0x49, 0xf3, 0xea, 0x33, 0xf7, 0xbb, 0x09, 0x70, 0x28, 0xb1, 0x13,
0xf8, 0x2a, 0x98, 0x65, 0xdc, 0x57, 0x69, 0x93, 0x5d, 0xdc, 0x73, 0xf3, 0xc9, 0x7b, 0x84, 0xdc,
0xf3, 0x45, 0x28, 0xa8, 0x07, 0x0f, 0xc1, 0xa2, 0xa1, 0x77, 0x76, 0xb0, 0x86, 0xbb, 0x84, 0x91,
0x39, 0x67, 0x29, 0xf9, 0xf5, 0x65, 0xb9, 0xf9, 0x9a, 0x7b, 0x35, 0xd5, 0x8a, 0xab, 0xb0, 0x63,
0x7e, 0x42, 0x33, 0x0f, 0x82, 0x24, 0x48, 0x68, 0xc6, 0x1e, 0xce, 0x9d, 0x87, 0x83, 0xf5, 0x2c,
0x89, 0x75, 0xcc, 0xa7, 0xf3, 0xb4, 0xdb, 0xd9, 0xd2, 0xb1, 0x6e, 0x67, 0x13, 0x8e, 0xa9, 0xe5,
0x09, 0x8f, 0xa9, 0x9f, 0x48, 0xe0, 0xbc, 0x91, 0x21, 0x97, 0x2a, 0x80, 0xcf, 0xcd, 0xcd, 0x2c,
0x73, 0x93, 0x25, 0x37, 0x9b, 0x6b, 0xa3, 0x61, 0xed, 0x7c, 0x16, 0x4d, 0x94, 0xc9, 0x3f, 0xf9,
0xa3, 0x22, 0x38, 0x13, 0xab, 0x96, 0x5f, 0xe1, 0x5d, 0x71, 0xec, 0xe0, 0x9a, 0x9f, 0xe0, 0xe0,
0xba, 0x01, 0x16, 0xc4, 0xdf, 0x0f, 0x22, 0xe7, 0x5e, 0x6f, 0x61, 0x37, 0xc3, 0x62, 0x14, 0xd5,
0x4f, 0xba, 0xab, 0x2e, 0x4e, 0x78, 0x57, 0x1d, 0xf4, 0x42, 0xfc, 0x9d, 0xce, 0x49, 0xc3, 0xb8,
0x17, 0xe2, 0x5f, 0x75, 0x51, 0x7d, 0x46, 0x12, 0x1d, 0x54, 0x0f, 0x61, 0x26, 0x4c, 0x12, 0xf7,
0x43, 0x52, 0x14, 0xd1, 0xfe, 0x52, 0x4f, 0xec, 0x38, 0xe1, 0x89, 0xfd, 0x72, 0x96, 0xf8, 0xcd,
0x7e, 0x2d, 0x9d, 0x78, 0xc1, 0x30, 0x3b, 0xf9, 0x05, 0x83, 0xfc, 0x17, 0x09, 0x3c, 0x97, 0xba,
0xbb, 0xc0, 0x8d, 0x10, 0x85, 0xbb, 0x1c, 0xa1, 0x70, 0xdf, 0x49, 0x35, 0x0c, 0xf0, 0x38, 0x33,
0xf9, 0xc6, 0xfa, 0x8d, 0x6c, 0x37, 0xd6, 0x09, 0xa7, 0xce, 0xf1, 0x57, 0xd7, 0xcd, 0xef, 0x3d,
0x7c, 0x54, 0x9d, 0xfa, 0xf4, 0x51, 0x75, 0xea, 0xf3, 0x47, 0xd5, 0xa9, 0x9f, 0x8f, 0xaa, 0xd2,
0xc3, 0x51, 0x55, 0xfa, 0x74, 0x54, 0x95, 0x3e, 0x1f, 0x55, 0xa5, 0xbf, 0x8d, 0xaa, 0xd2, 0xaf,
0xbf, 0xa8, 0x4e, 0xbd, 0xbf, 0x92, 0xf2, 0x07, 0xdf, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x5c,
0xbc, 0x64, 0x9c, 0x13, 0x2c, 0x00, 0x00,
// 2349 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1b, 0xc7,
0x15, 0xf7, 0xf2, 0x43, 0x26, 0x87, 0x96, 0x64, 0x8f, 0x54, 0x89, 0xb1, 0x5b, 0xd2, 0xd8, 0x18,
0x8e, 0x12, 0xdb, 0xa4, 0xad, 0x7c, 0x20, 0xb1, 0xdb, 0xb8, 0xa2, 0x94, 0xda, 0x0e, 0xf4, 0xc1,
0x0c, 0x2d, 0x05, 0x0d, 0xfa, 0xe1, 0x11, 0x39, 0xa6, 0x36, 0x5a, 0xee, 0x2e, 0x76, 0x87, 0x8c,
0x89, 0x5e, 0x7a, 0x2d, 0x50, 0xa0, 0xed, 0xb5, 0xff, 0x44, 0xd1, 0x4b, 0x51, 0x34, 0xe8, 0xa5,
0x08, 0x02, 0x1f, 0x83, 0x5e, 0x92, 0x13, 0x51, 0x33, 0xa7, 0xa2, 0xe8, 0xad, 0xbd, 0x18, 0x28,
0x50, 0xcc, 0xec, 0xec, 0xf7, 0xae, 0xb9, 0x54, 0x6c, 0xe5, 0x03, 0xb9, 0x71, 0xe7, 0xbd, 0xf7,
0x9b, 0xf7, 0x66, 0xde, 0x9b, 0xf7, 0xdb, 0x59, 0x82, 0x1f, 0x1e, 0xbe, 0x6e, 0xd5, 0x14, 0xbd,
0x7e, 0xd8, 0xdf, 0x27, 0xa6, 0x46, 0x28, 0xb1, 0xea, 0x03, 0xa2, 0x75, 0x74, 0xb3, 0x2e, 0x04,
0xd8, 0x50, 0xea, 0xd8, 0x30, 0xac, 0xfa, 0xe0, 0xda, 0x3e, 0xa1, 0x78, 0xb5, 0xde, 0x25, 0x1a,
0x31, 0x31, 0x25, 0x9d, 0x9a, 0x61, 0xea, 0x54, 0x87, 0xcb, 0xb6, 0x62, 0x0d, 0x1b, 0x4a, 0x8d,
0x29, 0xd6, 0x84, 0xe2, 0xd9, 0x2b, 0x5d, 0x85, 0x1e, 0xf4, 0xf7, 0x6b, 0x6d, 0xbd, 0x57, 0xef,
0xea, 0x5d, 0xbd, 0xce, 0xf5, 0xf7, 0xfb, 0xf7, 0xf9, 0x13, 0x7f, 0xe0, 0xbf, 0x6c, 0x9c, 0xb3,
0xb2, 0x6f, 0xc2, 0xb6, 0x6e, 0x92, 0xfa, 0xe0, 0x5a, 0x78, 0xae, 0xb3, 0xaf, 0x78, 0x3a, 0x3d,
0xdc, 0x3e, 0x50, 0x34, 0x62, 0x0e, 0xeb, 0xc6, 0x61, 0x97, 0x0d, 0x58, 0xf5, 0x1e, 0xa1, 0x38,
0xce, 0xaa, 0x9e, 0x64, 0x65, 0xf6, 0x35, 0xaa, 0xf4, 0x48, 0xc4, 0xe0, 0xb5, 0x49, 0x06, 0x56,
0xfb, 0x80, 0xf4, 0x70, 0xc4, 0xee, 0xe5, 0x24, 0xbb, 0x3e, 0x55, 0xd4, 0xba, 0xa2, 0x51, 0x8b,
0x9a, 0x61, 0x23, 0xf9, 0xbf, 0x12, 0x80, 0xeb, 0xba, 0x46, 0x4d, 0x5d, 0x55, 0x89, 0x89, 0xc8,
0x40, 0xb1, 0x14, 0x5d, 0x83, 0xf7, 0x40, 0x81, 0xc5, 0xd3, 0xc1, 0x14, 0x97, 0xa5, 0xf3, 0xd2,
0x4a, 0x69, 0xf5, 0x6a, 0xcd, 0x5b, 0x69, 0x17, 0xbe, 0x66, 0x1c, 0x76, 0xd9, 0x80, 0x55, 0x63,
0xda, 0xb5, 0xc1, 0xb5, 0xda, 0xce, 0xfe, 0xfb, 0xa4, 0x4d, 0xb7, 0x08, 0xc5, 0x0d, 0xf8, 0x70,
0x54, 0x3d, 0x31, 0x1e, 0x55, 0x81, 0x37, 0x86, 0x5c, 0x54, 0xb8, 0x03, 0x72, 0x1c, 0x3d, 0xc3,
0xd1, 0xaf, 0x24, 0xa2, 0x8b, 0xa0, 0x6b, 0x08, 0x7f, 0xf0, 0xd6, 0x03, 0x4a, 0x34, 0xe6, 0x5e,
0xe3, 0x94, 0x80, 0xce, 0x6d, 0x60, 0x8a, 0x11, 0x07, 0x82, 0x97, 0x41, 0xc1, 0x14, 0xee, 0x97,
0xb3, 0xe7, 0xa5, 0x95, 0x6c, 0xe3, 0xb4, 0xd0, 0x2a, 0x38, 0x61, 0x21, 0x57, 0x43, 0x7e, 0x28,
0x81, 0xa5, 0x68, 0xdc, 0x9b, 0x8a, 0x45, 0xe1, 0x4f, 0x22, 0xb1, 0xd7, 0xd2, 0xc5, 0xce, 0xac,
0x79, 0xe4, 0xee, 0xc4, 0xce, 0x88, 0x2f, 0xee, 0x26, 0xc8, 0x2b, 0x94, 0xf4, 0xac, 0x72, 0xe6,
0x7c, 0x76, 0xa5, 0xb4, 0x7a, 0xa9, 0x96, 0x90, 0xc0, 0xb5, 0xa8, 0x77, 0x8d, 0x59, 0x81, 0x9b,
0xbf, 0xc3, 0x10, 0x90, 0x0d, 0x24, 0xff, 0x2a, 0x03, 0x8a, 0x1b, 0x98, 0xf4, 0x74, 0xad, 0x45,
0xe8, 0x31, 0xec, 0xdc, 0x6d, 0x90, 0xb3, 0x0c, 0xd2, 0x16, 0x3b, 0x77, 0x31, 0x31, 0x00, 0xd7,
0xa7, 0x96, 0x41, 0xda, 0xde, 0x96, 0xb1, 0x27, 0xc4, 0x11, 0x60, 0x13, 0xcc, 0x58, 0x14, 0xd3,
0xbe, 0xc5, 0x37, 0xac, 0xb4, 0xba, 0x92, 0x02, 0x8b, 0xeb, 0x37, 0xe6, 0x04, 0xda, 0x8c, 0xfd,
0x8c, 0x04, 0x8e, 0xfc, 0xcf, 0x0c, 0x80, 0xae, 0xee, 0xba, 0xae, 0x75, 0x14, 0xca, 0xd2, 0xf9,
0x3a, 0xc8, 0xd1, 0xa1, 0x41, 0xf8, 0x82, 0x14, 0x1b, 0x17, 0x1d, 0x57, 0xee, 0x0e, 0x0d, 0xf2,
0x78, 0x54, 0x5d, 0x8a, 0x5a, 0x30, 0x09, 0xe2, 0x36, 0x70, 0xd3, 0x75, 0x32, 0xc3, 0xad, 0x5f,
0x09, 0x4e, 0xfd, 0x78, 0x54, 0x8d, 0x39, 0x3b, 0x6a, 0x2e, 0x52, 0xd0, 0x41, 0x38, 0x00, 0x50,
0xc5, 0x16, 0xbd, 0x6b, 0x62, 0xcd, 0xb2, 0x67, 0x52, 0x7a, 0x44, 0x84, 0xff, 0x52, 0xba, 0x8d,
0x62, 0x16, 0x8d, 0xb3, 0xc2, 0x0b, 0xb8, 0x19, 0x41, 0x43, 0x31, 0x33, 0xc0, 0x8b, 0x60, 0xc6,
0x24, 0xd8, 0xd2, 0xb5, 0x72, 0x8e, 0x47, 0xe1, 0x2e, 0x20, 0xe2, 0xa3, 0x48, 0x48, 0xe1, 0x8b,
0xe0, 0x64, 0x8f, 0x58, 0x16, 0xee, 0x92, 0x72, 0x9e, 0x2b, 0xce, 0x0b, 0xc5, 0x93, 0x5b, 0xf6,
0x30, 0x72, 0xe4, 0xf2, 0x9f, 0x24, 0x30, 0xeb, 0xae, 0xdc, 0x31, 0x54, 0xce, 0xad, 0x60, 0xe5,
0xc8, 0x93, 0x93, 0x25, 0xa1, 0x60, 0x3e, 0xca, 0xfa, 0x1c, 0x67, 0xe9, 0x08, 0x7f, 0x0a, 0x0a,
0x16, 0x51, 0x49, 0x9b, 0xea, 0xa6, 0x70, 0xfc, 0xe5, 0x94, 0x8e, 0xe3, 0x7d, 0xa2, 0xb6, 0x84,
0x69, 0xe3, 0x14, 0xf3, 0xdc, 0x79, 0x42, 0x2e, 0x24, 0x7c, 0x07, 0x14, 0x28, 0xe9, 0x19, 0x2a,
0xa6, 0x44, 0x54, 0xcd, 0xf3, 0x7e, 0xe7, 0x59, 0xce, 0x30, 0xb0, 0xa6, 0xde, 0xb9, 0x2b, 0xd4,
0x78, 0xc9, 0xb8, 0x8b, 0xe1, 0x8c, 0x22, 0x17, 0x06, 0x1a, 0x60, 0xae, 0x6f, 0x74, 0x98, 0x26,
0x65, 0xc7, 0x79, 0x77, 0x28, 0x72, 0xe8, 0xea, 0xe4, 0x55, 0xd9, 0x0d, 0xd8, 0x35, 0x96, 0xc4,
0x2c, 0x73, 0xc1, 0x71, 0x14, 0xc2, 0x87, 0x6b, 0x60, 0xbe, 0xa7, 0x68, 0x88, 0xe0, 0xce, 0xb0,
0x45, 0xda, 0xba, 0xd6, 0xb1, 0x78, 0x2a, 0xe5, 0x1b, 0xcb, 0x02, 0x60, 0x7e, 0x2b, 0x28, 0x46,
0x61, 0x7d, 0xb8, 0x09, 0x16, 0x9d, 0x03, 0xf8, 0xb6, 0x62, 0x51, 0xdd, 0x1c, 0x6e, 0x2a, 0x3d,
0x85, 0x96, 0x67, 0x38, 0x4e, 0x79, 0x3c, 0xaa, 0x2e, 0xa2, 0x18, 0x39, 0x8a, 0xb5, 0x92, 0x7f,
0x37, 0x03, 0xe6, 0x43, 0xe7, 0x02, 0xdc, 0x03, 0x4b, 0xed, 0xbe, 0x69, 0x12, 0x8d, 0x6e, 0xf7,
0x7b, 0xfb, 0xc4, 0x6c, 0xb5, 0x0f, 0x48, 0xa7, 0xaf, 0x92, 0x0e, 0xdf, 0xd6, 0x7c, 0xa3, 0x22,
0x7c, 0x5d, 0x5a, 0x8f, 0xd5, 0x42, 0x09, 0xd6, 0xf0, 0x6d, 0x00, 0x35, 0x3e, 0xb4, 0xa5, 0x58,
0x96, 0x8b, 0x99, 0xe1, 0x98, 0x6e, 0x29, 0x6e, 0x47, 0x34, 0x50, 0x8c, 0x15, 0xf3, 0xb1, 0x43,
0x2c, 0xc5, 0x24, 0x9d, 0xb0, 0x8f, 0xd9, 0xa0, 0x8f, 0x1b, 0xb1, 0x5a, 0x28, 0xc1, 0x1a, 0xbe,
0x0a, 0x4a, 0xf6, 0x6c, 0x7c, 0xcd, 0xc5, 0xe6, 0x2c, 0x08, 0xb0, 0xd2, 0xb6, 0x27, 0x42, 0x7e,
0x3d, 0x16, 0x9a, 0xbe, 0x6f, 0x11, 0x73, 0x40, 0x3a, 0xb7, 0x6c, 0x72, 0xc0, 0x3a, 0x68, 0x9e,
0x77, 0x50, 0x37, 0xb4, 0x9d, 0x88, 0x06, 0x8a, 0xb1, 0x62, 0xa1, 0xd9, 0x59, 0x13, 0x09, 0x6d,
0x26, 0x18, 0xda, 0x6e, 0xac, 0x16, 0x4a, 0xb0, 0x66, 0xb9, 0x67, 0xbb, 0xbc, 0x36, 0xc0, 0x8a,
0x8a, 0xf7, 0x55, 0x52, 0x3e, 0x19, 0xcc, 0xbd, 0xed, 0xa0, 0x18, 0x85, 0xf5, 0xe1, 0x2d, 0x70,
0xc6, 0x1e, 0xda, 0xd5, 0xb0, 0x0b, 0x52, 0xe0, 0x20, 0xcf, 0x09, 0x90, 0x33, 0xdb, 0x61, 0x05,
0x14, 0xb5, 0x81, 0xd7, 0xc1, 0x5c, 0x5b, 0x57, 0x55, 0x9e, 0x8f, 0xeb, 0x7a, 0x5f, 0xa3, 0xe5,
0x22, 0x47, 0x81, 0xac, 0x86, 0xd6, 0x03, 0x12, 0x14, 0xd2, 0x84, 0x3f, 0x07, 0xa0, 0xed, 0x34,
0x06, 0xab, 0x0c, 0x26, 0x30, 0x80, 0x68, 0x5b, 0xf2, 0x3a, 0xb3, 0x3b, 0x64, 0x21, 0x1f, 0xa4,
0xfc, 0x91, 0x04, 0x96, 0x13, 0x0a, 0x1d, 0xde, 0x0c, 0x34, 0xc1, 0x4b, 0xa1, 0x26, 0x78, 0x2e,
0xc1, 0xcc, 0xd7, 0x09, 0x0f, 0xc0, 0x2c, 0x23, 0x24, 0x8a, 0xd6, 0xb5, 0x55, 0xc4, 0x59, 0x56,
0x4f, 0x0c, 0x00, 0xf9, 0xb5, 0xbd, 0x53, 0xf9, 0xcc, 0x78, 0x54, 0x9d, 0x0d, 0xc8, 0x50, 0x10,
0x58, 0xfe, 0x75, 0x06, 0x80, 0x0d, 0x62, 0xa8, 0xfa, 0xb0, 0x47, 0xb4, 0xe3, 0xe0, 0x34, 0x77,
0x02, 0x9c, 0xe6, 0x85, 0xe4, 0x2d, 0x71, 0x9d, 0x4a, 0x24, 0x35, 0xef, 0x84, 0x48, 0xcd, 0x8b,
0x69, 0xc0, 0x9e, 0xcc, 0x6a, 0x3e, 0xcd, 0x82, 0x05, 0x4f, 0xd9, 0xa3, 0x35, 0x37, 0x02, 0x3b,
0xfa, 0x42, 0x68, 0x47, 0x97, 0x63, 0x4c, 0x9e, 0x19, 0xaf, 0x79, 0x1f, 0xcc, 0x31, 0xd6, 0x61,
0xef, 0x1f, 0xe7, 0x34, 0x33, 0x53, 0x73, 0x1a, 0xb7, 0x13, 0x6d, 0x06, 0x90, 0x50, 0x08, 0x39,
0x81, 0x43, 0x9d, 0xfc, 0x3a, 0x72, 0xa8, 0x3f, 0x4b, 0x60, 0xce, 0xdb, 0xa6, 0x63, 0x20, 0x51,
0xb7, 0x83, 0x24, 0xea, 0xf9, 0x14, 0xc9, 0x99, 0xc0, 0xa2, 0x3e, 0xcd, 0xf9, 0x5d, 0xe7, 0x34,
0x6a, 0x85, 0xbd, 0x82, 0x19, 0xaa, 0xd2, 0xc6, 0x96, 0xe8, 0xb7, 0xa7, 0xec, 0xd7, 0x2f, 0x7b,
0x0c, 0xb9, 0xd2, 0x00, 0xe1, 0xca, 0x3c, 0x5b, 0xc2, 0x95, 0x7d, 0x3a, 0x84, 0xeb, 0xc7, 0xa0,
0x60, 0x39, 0x54, 0x2b, 0xc7, 0x21, 0x2f, 0xa5, 0x2a, 0x6c, 0xc1, 0xb2, 0x5c, 0x68, 0x97, 0x5f,
0xb9, 0x70, 0x71, 0xcc, 0x2a, 0xff, 0x65, 0x32, 0x2b, 0x96, 0xe8, 0x06, 0xee, 0x5b, 0xa4, 0xc3,
0x8b, 0xaa, 0xe0, 0x25, 0x7a, 0x93, 0x8f, 0x22, 0x21, 0x85, 0xbb, 0x60, 0xd9, 0x30, 0xf5, 0xae,
0x49, 0x2c, 0x6b, 0x83, 0xe0, 0x8e, 0xaa, 0x68, 0xc4, 0x09, 0xc0, 0xee, 0x89, 0xe7, 0xc6, 0xa3,
0xea, 0x72, 0x33, 0x5e, 0x05, 0x25, 0xd9, 0xca, 0x7f, 0xcb, 0x81, 0xd3, 0xe1, 0xb3, 0x31, 0x81,
0xa6, 0x48, 0x47, 0xa2, 0x29, 0x97, 0x7d, 0x79, 0x6a, 0x73, 0x38, 0xdf, 0x55, 0x41, 0x24, 0x57,
0xd7, 0xc0, 0xbc, 0xa0, 0x25, 0x8e, 0x50, 0x10, 0x35, 0x77, 0x7b, 0x76, 0x83, 0x62, 0x14, 0xd6,
0x87, 0x37, 0xc0, 0xac, 0xc9, 0x99, 0x97, 0x03, 0x60, 0xb3, 0x97, 0xef, 0x08, 0x80, 0x59, 0xe4,
0x17, 0xa2, 0xa0, 0x2e, 0x63, 0x2e, 0x1e, 0x21, 0x71, 0x00, 0x72, 0x41, 0xe6, 0xb2, 0x16, 0x56,
0x40, 0x51, 0x1b, 0xb8, 0x05, 0x16, 0xfa, 0x5a, 0x14, 0xca, 0xce, 0xb5, 0x73, 0x02, 0x6a, 0x61,
0x37, 0xaa, 0x82, 0xe2, 0xec, 0xe0, 0xbd, 0x00, 0x99, 0x99, 0xe1, 0xe7, 0xc9, 0xe5, 0x14, 0x35,
0x91, 0x9a, 0xcd, 0xc4, 0x50, 0xad, 0x42, 0x5a, 0xaa, 0x25, 0x7f, 0x28, 0x01, 0x18, 0xad, 0xc3,
0x89, 0x37, 0x01, 0x11, 0x0b, 0x5f, 0xc7, 0x54, 0xe2, 0xf9, 0xcf, 0xd5, 0x94, 0xfc, 0xc7, 0x3b,
0x50, 0xd3, 0x11, 0x20, 0xb1, 0xd0, 0xc7, 0x73, 0xa9, 0x93, 0x96, 0x00, 0x79, 0x4e, 0x3d, 0x05,
0x02, 0xe4, 0x03, 0x7b, 0x32, 0x01, 0xfa, 0x57, 0x06, 0x2c, 0x78, 0xca, 0xa9, 0x09, 0x50, 0x8c,
0xc9, 0xb7, 0x17, 0x3b, 0xe9, 0x48, 0x89, 0xb7, 0x74, 0x5f, 0x25, 0x52, 0xe2, 0x79, 0x95, 0x40,
0x4a, 0xfe, 0x90, 0xf1, 0xbb, 0x3e, 0x25, 0x29, 0x79, 0x0a, 0x37, 0x1c, 0x5f, 0x3b, 0x5e, 0x23,
0x7f, 0x9c, 0x05, 0xa7, 0xc3, 0x75, 0x18, 0x68, 0x90, 0xd2, 0xc4, 0x06, 0xd9, 0x04, 0x8b, 0xf7,
0xfb, 0xaa, 0x3a, 0xe4, 0x31, 0xf8, 0xba, 0xa4, 0xdd, 0x5a, 0xbf, 0x2b, 0x2c, 0x17, 0x7f, 0x14,
0xa3, 0x83, 0x62, 0x2d, 0xa3, 0xfd, 0x32, 0xf7, 0x45, 0xfb, 0x65, 0xfe, 0x08, 0xfd, 0x32, 0x9e,
0x72, 0x64, 0x8f, 0x44, 0x39, 0xa6, 0x6b, 0x96, 0x31, 0x07, 0xd7, 0xc4, 0x57, 0xff, 0xb1, 0x04,
0x96, 0xe2, 0x5f, 0xb8, 0xa1, 0x0a, 0xe6, 0x7a, 0xf8, 0x81, 0xff, 0xe2, 0x63, 0x52, 0x13, 0xe9,
0x53, 0x45, 0xad, 0xd9, 0x9f, 0x8c, 0x6a, 0x77, 0x34, 0xba, 0x63, 0xb6, 0xa8, 0xa9, 0x68, 0x5d,
0xbb, 0xf3, 0x6e, 0x05, 0xb0, 0x50, 0x08, 0x1b, 0xbe, 0x07, 0x0a, 0x3d, 0xfc, 0xa0, 0xd5, 0x37,
0xbb, 0x71, 0x1d, 0x32, 0xdd, 0x3c, 0xbc, 0x00, 0xb6, 0x04, 0x0a, 0x72, 0xf1, 0xe4, 0xcf, 0x25,
0xb0, 0x9c, 0xd0, 0x55, 0xbf, 0x41, 0x51, 0xfe, 0x55, 0x02, 0xe7, 0x03, 0x51, 0xb2, 0xb2, 0x24,
0xf7, 0xfb, 0x2a, 0xaf, 0x50, 0xc1, 0x64, 0x2e, 0x81, 0xa2, 0x81, 0x4d, 0xaa, 0xb8, 0x3c, 0x38,
0xdf, 0x98, 0x1d, 0x8f, 0xaa, 0xc5, 0xa6, 0x33, 0x88, 0x3c, 0x79, 0xcc, 0xda, 0x64, 0x9e, 0xdd,
0xda, 0xc8, 0xff, 0x93, 0x40, 0xbe, 0xd5, 0xc6, 0x2a, 0x39, 0x06, 0xe2, 0xb2, 0x11, 0x20, 0x2e,
0xc9, 0x1f, 0x05, 0xb8, 0x3f, 0x89, 0x9c, 0x65, 0x33, 0xc4, 0x59, 0x2e, 0x4c, 0xc0, 0x79, 0x32,
0x5d, 0x79, 0x03, 0x14, 0xdd, 0xe9, 0xa6, 0x3b, 0x4b, 0xe5, 0xdf, 0x67, 0x40, 0xc9, 0x37, 0xc5,
0x94, 0x27, 0xf1, 0xbd, 0x40, 0xfb, 0x61, 0x67, 0xcc, 0x6a, 0x9a, 0x40, 0x6a, 0x4e, 0xab, 0x79,
0x4b, 0xa3, 0xa6, 0xff, 0x5d, 0x35, 0xda, 0x81, 0xde, 0x04, 0x73, 0x14, 0x9b, 0x5d, 0x42, 0x1d,
0x19, 0x5f, 0xb0, 0xa2, 0x77, 0x77, 0x73, 0x37, 0x20, 0x45, 0x21, 0xed, 0xb3, 0x37, 0xc0, 0x6c,
0x60, 0x32, 0x78, 0x1a, 0x64, 0x0f, 0xc9, 0xd0, 0x66, 0x70, 0x88, 0xfd, 0x84, 0x8b, 0x20, 0x3f,
0xc0, 0x6a, 0xdf, 0x4e, 0xd1, 0x22, 0xb2, 0x1f, 0xae, 0x67, 0x5e, 0x97, 0xe4, 0xdf, 0xb0, 0xc5,
0xf1, 0x4a, 0xe1, 0x18, 0xb2, 0xeb, 0xed, 0x40, 0x76, 0x25, 0x7f, 0x9f, 0xf4, 0x17, 0x68, 0x52,
0x8e, 0xa1, 0x50, 0x8e, 0xbd, 0x94, 0x0a, 0xed, 0xc9, 0x99, 0xf6, 0xef, 0x0c, 0x58, 0xf4, 0x69,
0x7b, 0xcc, 0xf8, 0xfb, 0x01, 0x66, 0xbc, 0x12, 0x62, 0xc6, 0xe5, 0x38, 0x9b, 0x6f, 0xa9, 0xf1,
0x64, 0x6a, 0xfc, 0x17, 0x09, 0xcc, 0xfb, 0xd6, 0xee, 0x18, 0xb8, 0xf1, 0x9d, 0x20, 0x37, 0xbe,
0x90, 0x26, 0x69, 0x12, 0xc8, 0xf1, 0x1e, 0x58, 0xf0, 0x29, 0xed, 0x98, 0x1d, 0x45, 0xc3, 0xaa,
0x05, 0x6f, 0x82, 0x05, 0x71, 0x80, 0xb4, 0x28, 0x36, 0x9d, 0x71, 0xa7, 0xa5, 0x38, 0x48, 0x5c,
0x86, 0xe2, 0x34, 0xe5, 0xff, 0x48, 0xa0, 0xee, 0x03, 0x6e, 0x12, 0xd3, 0x52, 0x2c, 0x4a, 0x34,
0xba, 0xa7, 0xab, 0xfd, 0x1e, 0x59, 0x57, 0xb1, 0xd2, 0x43, 0x84, 0x0d, 0x28, 0xba, 0xd6, 0xd4,
0x55, 0xa5, 0x3d, 0x84, 0x18, 0x94, 0x3e, 0x38, 0x20, 0xda, 0x06, 0x51, 0x09, 0x15, 0x5f, 0xe7,
0x8a, 0x8d, 0x9b, 0xce, 0xc7, 0xaa, 0x77, 0x3d, 0xd1, 0xe3, 0x51, 0x75, 0x25, 0x0d, 0x22, 0xcf,
0x5e, 0x3f, 0x26, 0xfc, 0x19, 0x00, 0xec, 0x91, 0x9f, 0x73, 0x1d, 0x91, 0xc8, 0x6f, 0x3a, 0xd5,
0xfe, 0xae, 0x2b, 0x99, 0x6a, 0x02, 0x1f, 0xa2, 0xfc, 0xc7, 0x42, 0x20, 0x17, 0xbe, 0xf1, 0x37,
0xa0, 0xbf, 0x00, 0x8b, 0x03, 0x6f, 0x75, 0x1c, 0x05, 0xc6, 0xcd, 0xb3, 0xe1, 0xb7, 0x7c, 0x17,
0x3e, 0x6e, 0x5d, 0xbd, 0x37, 0x82, 0xbd, 0x18, 0x38, 0x14, 0x3b, 0x09, 0x7c, 0x15, 0x94, 0x18,
0xa7, 0x56, 0xda, 0x64, 0x1b, 0xf7, 0x9c, 0x3a, 0x75, 0x3f, 0x6e, 0xb6, 0x3c, 0x11, 0xf2, 0xeb,
0xc1, 0x03, 0xb0, 0x60, 0xe8, 0x9d, 0x2d, 0xac, 0xe1, 0x2e, 0x61, 0x24, 0xd1, 0xde, 0x4a, 0x7e,
0x2d, 0x5a, 0x6c, 0xbc, 0xe6, 0x5c, 0x79, 0x35, 0xa3, 0x2a, 0x8f, 0x47, 0xd5, 0xe5, 0x98, 0x61,
0x9e, 0x04, 0x71, 0x90, 0xd0, 0x8c, 0x7c, 0x90, 0xb7, 0x3f, 0x48, 0xac, 0xa6, 0x29, 0xd8, 0x23,
0x7e, 0x92, 0x4f, 0xba, 0xf5, 0x2d, 0x1c, 0xe9, 0xd6, 0x37, 0xe6, 0xf5, 0xb7, 0x38, 0xe5, 0xeb,
0xef, 0xc7, 0x12, 0xb8, 0x60, 0xa4, 0xa8, 0xa5, 0x32, 0xe0, 0x6b, 0x73, 0x3b, 0xcd, 0xda, 0xa4,
0xa9, 0xcd, 0xc6, 0xca, 0x78, 0x54, 0xbd, 0x90, 0x46, 0x13, 0xa5, 0xf2, 0x0f, 0xee, 0x81, 0x82,
0x2e, 0xce, 0xc7, 0x72, 0x89, 0xfb, 0x7a, 0x39, 0x8d, 0xaf, 0xce, 0x99, 0x6a, 0x97, 0xa5, 0xf3,
0x84, 0x5c, 0x2c, 0xf9, 0xc3, 0x3c, 0x38, 0x13, 0xe9, 0xee, 0x5f, 0xe2, 0xdd, 0x76, 0xe4, 0x45,
0x3b, 0x3b, 0xc5, 0x8b, 0xf6, 0x1a, 0x98, 0x17, 0x7f, 0x97, 0x08, 0xbd, 0xa7, 0xbb, 0x09, 0xb3,
0x1e, 0x14, 0xa3, 0xb0, 0x7e, 0xdc, 0xdd, 0x7a, 0x7e, 0xca, 0xbb, 0x75, 0xbf, 0x17, 0xe2, 0xef,
0x7f, 0x76, 0x79, 0x47, 0xbd, 0x10, 0xff, 0x02, 0x0c, 0xeb, 0x33, 0x52, 0x6b, 0xa3, 0xba, 0x08,
0x27, 0x83, 0xa4, 0x76, 0x37, 0x20, 0x45, 0x21, 0xed, 0x2f, 0xf4, 0x97, 0x00, 0x1c, 0xf3, 0x97,
0x80, 0x2b, 0x69, 0x72, 0x2d, 0xfd, 0x35, 0x7a, 0xec, 0x85, 0x48, 0x69, 0xfa, 0x0b, 0x11, 0xf9,
0xef, 0x12, 0x78, 0x2e, 0xf1, 0xd4, 0x82, 0x6b, 0x01, 0xca, 0x79, 0x25, 0x44, 0x39, 0xbf, 0x97,
0x68, 0xe8, 0xe3, 0x9d, 0x66, 0xfc, 0x0d, 0xfb, 0x1b, 0xe9, 0x6e, 0xd8, 0x63, 0xde, 0x92, 0x27,
0x5f, 0xb5, 0x37, 0x7e, 0xf0, 0xf0, 0x51, 0xe5, 0xc4, 0x27, 0x8f, 0x2a, 0x27, 0x3e, 0x7b, 0x54,
0x39, 0xf1, 0xcb, 0x71, 0x45, 0x7a, 0x38, 0xae, 0x48, 0x9f, 0x8c, 0x2b, 0xd2, 0x67, 0xe3, 0x8a,
0xf4, 0x8f, 0x71, 0x45, 0xfa, 0xed, 0xe7, 0x95, 0x13, 0xef, 0x2d, 0x27, 0xfc, 0x21, 0xf9, 0xff,
0x01, 0x00, 0x00, 0xff, 0xff, 0xe8, 0x93, 0x41, 0x4c, 0xc3, 0x2c, 0x00, 0x00,
}
func (m *ControllerRevision) Marshal() (dAtA []byte, err error) {
@ -2573,6 +2605,32 @@ func (m *StatefulSetList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *StatefulSetOrdinals) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *StatefulSetOrdinals) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *StatefulSetOrdinals) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
i = encodeVarintGenerated(dAtA, i, uint64(m.Start))
i--
dAtA[i] = 0x8
return len(dAtA) - i, nil
}
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -2626,6 +2684,18 @@ func (m *StatefulSetSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if m.Ordinals != nil {
{
size, err := m.Ordinals.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintGenerated(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x5a
}
if m.PersistentVolumeClaimRetentionPolicy != nil {
{
size, err := m.PersistentVolumeClaimRetentionPolicy.MarshalToSizedBuffer(dAtA[:i])
@ -3331,6 +3401,16 @@ func (m *StatefulSetList) Size() (n int) {
return n
}
func (m *StatefulSetOrdinals) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
n += 1 + sovGenerated(uint64(m.Start))
return n
}
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Size() (n int) {
if m == nil {
return 0
@ -3379,6 +3459,10 @@ func (m *StatefulSetSpec) Size() (n int) {
l = m.PersistentVolumeClaimRetentionPolicy.Size()
n += 1 + l + sovGenerated(uint64(l))
}
if m.Ordinals != nil {
l = m.Ordinals.Size()
n += 1 + l + sovGenerated(uint64(l))
}
return n
}
@ -3837,6 +3921,16 @@ func (this *StatefulSetList) String() string {
}, "")
return s
}
func (this *StatefulSetOrdinals) String() string {
if this == nil {
return "nil"
}
s := strings.Join([]string{`&StatefulSetOrdinals{`,
`Start:` + fmt.Sprintf("%v", this.Start) + `,`,
`}`,
}, "")
return s
}
func (this *StatefulSetPersistentVolumeClaimRetentionPolicy) String() string {
if this == nil {
return "nil"
@ -3868,6 +3962,7 @@ func (this *StatefulSetSpec) String() string {
`RevisionHistoryLimit:` + valueToStringGenerated(this.RevisionHistoryLimit) + `,`,
`MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`,
`PersistentVolumeClaimRetentionPolicy:` + strings.Replace(this.PersistentVolumeClaimRetentionPolicy.String(), "StatefulSetPersistentVolumeClaimRetentionPolicy", "StatefulSetPersistentVolumeClaimRetentionPolicy", 1) + `,`,
`Ordinals:` + strings.Replace(this.Ordinals.String(), "StatefulSetOrdinals", "StatefulSetOrdinals", 1) + `,`,
`}`,
}, "")
return s
@ -8393,6 +8488,75 @@ func (m *StatefulSetList) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *StatefulSetOrdinals) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: StatefulSetOrdinals: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: StatefulSetOrdinals: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field Start", wireType)
}
m.Start = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.Start |= int32(b&0x7F) << shift
if b < 0x80 {
break
}
}
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthGenerated
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *StatefulSetPersistentVolumeClaimRetentionPolicy) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@ -8831,6 +8995,42 @@ func (m *StatefulSetSpec) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
case 11:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Ordinals", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthGenerated
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthGenerated
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Ordinals == nil {
m.Ordinals = &StatefulSetOrdinals{}
}
if err := m.Ordinals.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])

View File

@ -667,6 +667,17 @@ message StatefulSetList {
repeated StatefulSet items = 2;
}
// StatefulSetOrdinals describes the policy used for replica ordinal assignment
// in this StatefulSet.
message StatefulSetOrdinals {
// Start is the number representing the first index that is used to represent
// replica ordinals. Defaults to 0.
// If set, replica ordinals will be numbered
// [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).
// +optional
optional int32 replicaStartOrdinal = 1;
}
// StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs
// created from the StatefulSet VolumeClaimTemplates.
message StatefulSetPersistentVolumeClaimRetentionPolicy {
@ -755,6 +766,14 @@ message StatefulSetSpec {
// StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.
// +optional
optional StatefulSetPersistentVolumeClaimRetentionPolicy persistentVolumeClaimRetentionPolicy = 10;
// Ordinals controls how the stateful set creates pod and persistent volume
// claim names.
// The default behavior assigns a number starting with zero and incremented by
// one for each additional replica requested. This requires the
// StatefulSetSlice feature gate to be enabled, which is alpha.
// +optional
optional StatefulSetOrdinals ordinals = 11;
}
// StatefulSetStatus represents the current state of a StatefulSet.

View File

@ -214,6 +214,17 @@ type StatefulSetPersistentVolumeClaimRetentionPolicy struct {
WhenScaled PersistentVolumeClaimRetentionPolicyType `json:"whenScaled,omitempty" protobuf:"bytes,2,opt,name=whenScaled,casttype=PersistentVolumeClaimRetentionPolicyType"`
}
// StatefulSetOrdinals describes the policy used for replica ordinal assignment
// in this StatefulSet.
type StatefulSetOrdinals struct {
// Start is the number representing the first index that is used to represent
// replica ordinals. Defaults to 0.
// If set, replica ordinals will be numbered
// [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).
// +optional
Start int32 `json:"start" protobuf:"varint,1,opt,name=start"`
}
// A StatefulSetSpec is the specification of a StatefulSet.
type StatefulSetSpec struct {
// replicas is the desired number of replicas of the given Template.
@ -285,6 +296,14 @@ type StatefulSetSpec struct {
// StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.
// +optional
PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicy `json:"persistentVolumeClaimRetentionPolicy,omitempty" protobuf:"bytes,10,opt,name=persistentVolumeClaimRetentionPolicy"`
// Ordinals controls how the stateful set creates pod and persistent volume
// claim names.
// The default behavior assigns a number starting with zero and incremented by
// one for each additional replica requested. This requires the
// StatefulSetSlice feature gate to be enabled, which is alpha.
// +optional
Ordinals *StatefulSetOrdinals `json:"ordinals,omitempty" protobuf:"bytes,11,opt,name=ordinals"`
}
// StatefulSetStatus represents the current state of a StatefulSet.

View File

@ -352,6 +352,15 @@ func (StatefulSetList) SwaggerDoc() map[string]string {
return map_StatefulSetList
}
var map_StatefulSetOrdinals = map[string]string{
"": "StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet.",
"start": "Start is the number representing the first index that is used to represent replica ordinals. Defaults to 0. If set, replica ordinals will be numbered [.spec.ordinals.start, .spec.ordinals.start - .spec.replicas).",
}
func (StatefulSetOrdinals) SwaggerDoc() map[string]string {
return map_StatefulSetOrdinals
}
var map_StatefulSetPersistentVolumeClaimRetentionPolicy = map[string]string{
"": "StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.",
"whenDeleted": "WhenDeleted specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is deleted. The default policy of `Retain` causes PVCs to not be affected by StatefulSet deletion. The `Delete` policy causes those PVCs to be deleted.",
@ -374,6 +383,7 @@ var map_StatefulSetSpec = map[string]string{
"revisionHistoryLimit": "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.",
"minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)",
"persistentVolumeClaimRetentionPolicy": "PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.",
"ordinals": "Ordinals controls how the stateful set creates pod and persistent volume claim names. The default behavior assigns a number starting with zero and incremented by one for each additional replica requested. This requires the StatefulSetSlice feature gate to be enabled, which is alpha.",
}
func (StatefulSetSpec) SwaggerDoc() map[string]string {

View File

@ -760,6 +760,22 @@ func (in *StatefulSetList) DeepCopyObject() runtime.Object {
return nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StatefulSetOrdinals) DeepCopyInto(out *StatefulSetOrdinals) {
*out = *in
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetOrdinals.
func (in *StatefulSetOrdinals) DeepCopy() *StatefulSetOrdinals {
if in == nil {
return nil
}
out := new(StatefulSetOrdinals)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StatefulSetPersistentVolumeClaimRetentionPolicy) DeepCopyInto(out *StatefulSetPersistentVolumeClaimRetentionPolicy) {
*out = *in
@ -808,6 +824,11 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) {
*out = new(StatefulSetPersistentVolumeClaimRetentionPolicy)
**out = **in
}
if in.Ordinals != nil {
in, out := &in.Ordinals, &out.Ordinals
*out = new(StatefulSetOrdinals)
**out = **in
}
return
}

View File

@ -0,0 +1,39 @@
/*
Copyright The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Code generated by applyconfiguration-gen. DO NOT EDIT.
package v1
// StatefulSetOrdinalsApplyConfiguration represents an declarative configuration of the StatefulSetOrdinals type for use
// with apply.
type StatefulSetOrdinalsApplyConfiguration struct {
Start *int32 `json:"start,omitempty"`
}
// StatefulSetOrdinalsApplyConfiguration constructs an declarative configuration of the StatefulSetOrdinals type for use with
// apply.
func StatefulSetOrdinals() *StatefulSetOrdinalsApplyConfiguration {
return &StatefulSetOrdinalsApplyConfiguration{}
}
// WithStart sets the Start field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Start field is set to the value of the last call.
func (b *StatefulSetOrdinalsApplyConfiguration) WithStart(value int32) *StatefulSetOrdinalsApplyConfiguration {
b.Start = &value
return b
}

View File

@ -37,6 +37,7 @@ type StatefulSetSpecApplyConfiguration struct {
RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty"`
MinReadySeconds *int32 `json:"minReadySeconds,omitempty"`
PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration `json:"persistentVolumeClaimRetentionPolicy,omitempty"`
Ordinals *StatefulSetOrdinalsApplyConfiguration `json:"ordinals,omitempty"`
}
// StatefulSetSpecApplyConfiguration constructs an declarative configuration of the StatefulSetSpec type for use with
@ -129,3 +130,11 @@ func (b *StatefulSetSpecApplyConfiguration) WithPersistentVolumeClaimRetentionPo
b.PersistentVolumeClaimRetentionPolicy = value
return b
}
// WithOrdinals sets the Ordinals field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Ordinals field is set to the value of the last call.
func (b *StatefulSetSpecApplyConfiguration) WithOrdinals(value *StatefulSetOrdinalsApplyConfiguration) *StatefulSetSpecApplyConfiguration {
b.Ordinals = value
return b
}

View File

@ -0,0 +1,39 @@
/*
Copyright The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Code generated by applyconfiguration-gen. DO NOT EDIT.
package v1beta1
// StatefulSetOrdinalsApplyConfiguration represents an declarative configuration of the StatefulSetOrdinals type for use
// with apply.
type StatefulSetOrdinalsApplyConfiguration struct {
Start *int32 `json:"start,omitempty"`
}
// StatefulSetOrdinalsApplyConfiguration constructs an declarative configuration of the StatefulSetOrdinals type for use with
// apply.
func StatefulSetOrdinals() *StatefulSetOrdinalsApplyConfiguration {
return &StatefulSetOrdinalsApplyConfiguration{}
}
// WithStart sets the Start field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Start field is set to the value of the last call.
func (b *StatefulSetOrdinalsApplyConfiguration) WithStart(value int32) *StatefulSetOrdinalsApplyConfiguration {
b.Start = &value
return b
}

View File

@ -37,6 +37,7 @@ type StatefulSetSpecApplyConfiguration struct {
RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty"`
MinReadySeconds *int32 `json:"minReadySeconds,omitempty"`
PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration `json:"persistentVolumeClaimRetentionPolicy,omitempty"`
Ordinals *StatefulSetOrdinalsApplyConfiguration `json:"ordinals,omitempty"`
}
// StatefulSetSpecApplyConfiguration constructs an declarative configuration of the StatefulSetSpec type for use with
@ -129,3 +130,11 @@ func (b *StatefulSetSpecApplyConfiguration) WithPersistentVolumeClaimRetentionPo
b.PersistentVolumeClaimRetentionPolicy = value
return b
}
// WithOrdinals sets the Ordinals field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Ordinals field is set to the value of the last call.
func (b *StatefulSetSpecApplyConfiguration) WithOrdinals(value *StatefulSetOrdinalsApplyConfiguration) *StatefulSetSpecApplyConfiguration {
b.Ordinals = value
return b
}

View File

@ -0,0 +1,39 @@
/*
Copyright The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Code generated by applyconfiguration-gen. DO NOT EDIT.
package v1beta2
// StatefulSetOrdinalsApplyConfiguration represents an declarative configuration of the StatefulSetOrdinals type for use
// with apply.
type StatefulSetOrdinalsApplyConfiguration struct {
Start *int32 `json:"start,omitempty"`
}
// StatefulSetOrdinalsApplyConfiguration constructs an declarative configuration of the StatefulSetOrdinals type for use with
// apply.
func StatefulSetOrdinals() *StatefulSetOrdinalsApplyConfiguration {
return &StatefulSetOrdinalsApplyConfiguration{}
}
// WithStart sets the Start field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Start field is set to the value of the last call.
func (b *StatefulSetOrdinalsApplyConfiguration) WithStart(value int32) *StatefulSetOrdinalsApplyConfiguration {
b.Start = &value
return b
}

View File

@ -37,6 +37,7 @@ type StatefulSetSpecApplyConfiguration struct {
RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty"`
MinReadySeconds *int32 `json:"minReadySeconds,omitempty"`
PersistentVolumeClaimRetentionPolicy *StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration `json:"persistentVolumeClaimRetentionPolicy,omitempty"`
Ordinals *StatefulSetOrdinalsApplyConfiguration `json:"ordinals,omitempty"`
}
// StatefulSetSpecApplyConfiguration constructs an declarative configuration of the StatefulSetSpec type for use with
@ -129,3 +130,11 @@ func (b *StatefulSetSpecApplyConfiguration) WithPersistentVolumeClaimRetentionPo
b.PersistentVolumeClaimRetentionPolicy = value
return b
}
// WithOrdinals sets the Ordinals field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Ordinals field is set to the value of the last call.
func (b *StatefulSetSpecApplyConfiguration) WithOrdinals(value *StatefulSetOrdinalsApplyConfiguration) *StatefulSetSpecApplyConfiguration {
b.Ordinals = value
return b
}

View File

@ -1039,6 +1039,13 @@ var schemaYAML = typed.YAMLObject(`types:
type:
scalar: string
default: ""
- name: io.k8s.api.apps.v1.StatefulSetOrdinals
map:
fields:
- name: start
type:
scalar: numeric
default: 0
- name: io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy
map:
fields:
@ -1054,6 +1061,9 @@ var schemaYAML = typed.YAMLObject(`types:
- name: minReadySeconds
type:
scalar: numeric
- name: ordinals
type:
namedType: io.k8s.api.apps.v1.StatefulSetOrdinals
- name: persistentVolumeClaimRetentionPolicy
type:
namedType: io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy
@ -1342,6 +1352,13 @@ var schemaYAML = typed.YAMLObject(`types:
type:
scalar: string
default: ""
- name: io.k8s.api.apps.v1beta1.StatefulSetOrdinals
map:
fields:
- name: start
type:
scalar: numeric
default: 0
- name: io.k8s.api.apps.v1beta1.StatefulSetPersistentVolumeClaimRetentionPolicy
map:
fields:
@ -1357,6 +1374,9 @@ var schemaYAML = typed.YAMLObject(`types:
- name: minReadySeconds
type:
scalar: numeric
- name: ordinals
type:
namedType: io.k8s.api.apps.v1beta1.StatefulSetOrdinals
- name: persistentVolumeClaimRetentionPolicy
type:
namedType: io.k8s.api.apps.v1beta1.StatefulSetPersistentVolumeClaimRetentionPolicy
@ -1843,6 +1863,13 @@ var schemaYAML = typed.YAMLObject(`types:
type:
scalar: string
default: ""
- name: io.k8s.api.apps.v1beta2.StatefulSetOrdinals
map:
fields:
- name: start
type:
scalar: numeric
default: 0
- name: io.k8s.api.apps.v1beta2.StatefulSetPersistentVolumeClaimRetentionPolicy
map:
fields:
@ -1858,6 +1885,9 @@ var schemaYAML = typed.YAMLObject(`types:
- name: minReadySeconds
type:
scalar: numeric
- name: ordinals
type:
namedType: io.k8s.api.apps.v1beta2.StatefulSetOrdinals
- name: persistentVolumeClaimRetentionPolicy
type:
namedType: io.k8s.api.apps.v1beta2.StatefulSetPersistentVolumeClaimRetentionPolicy

View File

@ -211,6 +211,8 @@ func ForKind(kind schema.GroupVersionKind) interface{} {
return &applyconfigurationsappsv1.StatefulSetApplyConfiguration{}
case appsv1.SchemeGroupVersion.WithKind("StatefulSetCondition"):
return &applyconfigurationsappsv1.StatefulSetConditionApplyConfiguration{}
case appsv1.SchemeGroupVersion.WithKind("StatefulSetOrdinals"):
return &applyconfigurationsappsv1.StatefulSetOrdinalsApplyConfiguration{}
case appsv1.SchemeGroupVersion.WithKind("StatefulSetPersistentVolumeClaimRetentionPolicy"):
return &applyconfigurationsappsv1.StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration{}
case appsv1.SchemeGroupVersion.WithKind("StatefulSetSpec"):
@ -243,6 +245,8 @@ func ForKind(kind schema.GroupVersionKind) interface{} {
return &applyconfigurationsappsv1beta1.StatefulSetApplyConfiguration{}
case appsv1beta1.SchemeGroupVersion.WithKind("StatefulSetCondition"):
return &applyconfigurationsappsv1beta1.StatefulSetConditionApplyConfiguration{}
case appsv1beta1.SchemeGroupVersion.WithKind("StatefulSetOrdinals"):
return &applyconfigurationsappsv1beta1.StatefulSetOrdinalsApplyConfiguration{}
case appsv1beta1.SchemeGroupVersion.WithKind("StatefulSetPersistentVolumeClaimRetentionPolicy"):
return &applyconfigurationsappsv1beta1.StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration{}
case appsv1beta1.SchemeGroupVersion.WithKind("StatefulSetSpec"):
@ -295,6 +299,8 @@ func ForKind(kind schema.GroupVersionKind) interface{} {
return &appsv1beta2.StatefulSetApplyConfiguration{}
case v1beta2.SchemeGroupVersion.WithKind("StatefulSetCondition"):
return &appsv1beta2.StatefulSetConditionApplyConfiguration{}
case v1beta2.SchemeGroupVersion.WithKind("StatefulSetOrdinals"):
return &appsv1beta2.StatefulSetOrdinalsApplyConfiguration{}
case v1beta2.SchemeGroupVersion.WithKind("StatefulSetPersistentVolumeClaimRetentionPolicy"):
return &appsv1beta2.StatefulSetPersistentVolumeClaimRetentionPolicyApplyConfiguration{}
case v1beta2.SchemeGroupVersion.WithKind("StatefulSetSpec"):