diff --git a/api/v1/ytsaurus_types.go b/api/v1/ytsaurus_types.go index 4c972a6a..c3305a26 100644 --- a/api/v1/ytsaurus_types.go +++ b/api/v1/ytsaurus_types.go @@ -19,6 +19,8 @@ package v1 import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "k8s.io/apimachinery/pkg/api/resource" ) // EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! @@ -86,6 +88,10 @@ type LocationSpec struct { //+kubebuilder:default:=default Medium string `json:"medium,omitempty"` + + // Disk space quota, default is size of related volume. + //+optional + Quota *resource.Quantity `json:"quota,omitempty"` } // LogLevel string describes possible Ytsaurus logging level. diff --git a/api/v1/zz_generated.deepcopy.go b/api/v1/zz_generated.deepcopy.go index 9702c666..113eaed9 100644 --- a/api/v1/zz_generated.deepcopy.go +++ b/api/v1/zz_generated.deepcopy.go @@ -607,7 +607,9 @@ func (in *InstanceSpec) DeepCopyInto(out *InstanceSpec) { if in.Locations != nil { in, out := &in.Locations, &out.Locations *out = make([]LocationSpec, len(*in)) - copy(*out, *in) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } } if in.VolumeClaimTemplates != nil { in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates @@ -724,6 +726,11 @@ func (in *JobEnvironmentSpec) DeepCopy() *JobEnvironmentSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LocationSpec) DeepCopyInto(out *LocationSpec) { *out = *in + if in.Quota != nil { + in, out := &in.Quota, &out.Quota + x := (*in).DeepCopy() + *out = &x + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocationSpec. diff --git a/config/crd/bases/cluster.ytsaurus.tech_remoteexecnodes.yaml b/config/crd/bases/cluster.ytsaurus.tech_remoteexecnodes.yaml index 157f417f..aec89adc 100644 --- a/config/crd/bases/cluster.ytsaurus.tech_remoteexecnodes.yaml +++ b/config/crd/bases/cluster.ytsaurus.tech_remoteexecnodes.yaml @@ -865,6 +865,13 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: diff --git a/config/crd/bases/cluster.ytsaurus.tech_remoteytsaurus.yaml b/config/crd/bases/cluster.ytsaurus.tech_remoteytsaurus.yaml index 17bf1abe..84edcb83 100644 --- a/config/crd/bases/cluster.ytsaurus.tech_remoteytsaurus.yaml +++ b/config/crd/bases/cluster.ytsaurus.tech_remoteytsaurus.yaml @@ -666,6 +666,13 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: diff --git a/config/crd/bases/cluster.ytsaurus.tech_ytsaurus.yaml b/config/crd/bases/cluster.ytsaurus.tech_ytsaurus.yaml index cbc0c649..a74badb4 100644 --- a/config/crd/bases/cluster.ytsaurus.tech_ytsaurus.yaml +++ b/config/crd/bases/cluster.ytsaurus.tech_ytsaurus.yaml @@ -779,6 +779,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -3112,6 +3120,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -5457,6 +5473,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -7953,6 +7977,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -10325,6 +10357,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -12710,6 +12750,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -15091,6 +15139,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -17425,6 +17481,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -19749,6 +19813,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -22080,6 +22152,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -24447,6 +24527,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -26786,6 +26874,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -29189,6 +29285,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -31540,6 +31644,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -34093,6 +34205,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: diff --git a/docs/api.md b/docs/api.md index 99d4135b..528bedab 100644 --- a/docs/api.md +++ b/docs/api.md @@ -655,6 +655,7 @@ _Appears in:_ | `locationType` _[LocationType](#locationtype)_ | | | | | `path` _string_ | | | MinLength: 1
| | `medium` _string_ | | default | | +| `quota` _[Quantity](#quantity)_ | Disk space quota, default is size of related volume. | | | #### LocationType diff --git a/pkg/ytconfig/canondata/TestGetDataNodeConfig/test.canondata b/pkg/ytconfig/canondata/TestGetDataNodeConfig/test.canondata index 2662d2d3..1e693909 100644 --- a/pkg/ytconfig/canondata/TestGetDataNodeConfig/test.canondata +++ b/pkg/ytconfig/canondata/TestGetDataNodeConfig/test.canondata @@ -104,6 +104,10 @@ { path="/yt/hdd1/chunk-store"; "medium_name"=nvme; + quota=10737418240; + "high_watermark"=536870912; + "low_watermark"=1073741824; + "disable_writes_watermark"=268435456; }; ]; "cache_locations"=[ diff --git a/pkg/ytconfig/canondata/TestGetDataNodeWithoutYtsaurusConfig/test.canondata b/pkg/ytconfig/canondata/TestGetDataNodeWithoutYtsaurusConfig/test.canondata index 885f7fa3..cd14a7bb 100644 --- a/pkg/ytconfig/canondata/TestGetDataNodeWithoutYtsaurusConfig/test.canondata +++ b/pkg/ytconfig/canondata/TestGetDataNodeWithoutYtsaurusConfig/test.canondata @@ -113,6 +113,10 @@ { path="/yt/hdd1/chunk-store"; "medium_name"=nvme; + quota=10737418240; + "high_watermark"=536870912; + "low_watermark"=1073741824; + "disable_writes_watermark"=268435456; }; ]; "cache_locations"=[ diff --git a/pkg/ytconfig/canondata/TestGetExecNodeConfig/test.canondata b/pkg/ytconfig/canondata/TestGetExecNodeConfig/test.canondata index 4a567d8f..a401e465 100644 --- a/pkg/ytconfig/canondata/TestGetExecNodeConfig/test.canondata +++ b/pkg/ytconfig/canondata/TestGetExecNodeConfig/test.canondata @@ -110,7 +110,8 @@ { path="/yt/hdd2/slots"; "medium_name"=""; - "disk_usage_watermark"=0; + "disk_quota"=5368709120; + "disk_usage_watermark"=536870912; "enable_disk_quota"=%false; }; ]; diff --git a/pkg/ytconfig/canondata/TestGetExecNodeConfigWithCri/test.canondata b/pkg/ytconfig/canondata/TestGetExecNodeConfigWithCri/test.canondata index ebbd897b..27069b0d 100644 --- a/pkg/ytconfig/canondata/TestGetExecNodeConfigWithCri/test.canondata +++ b/pkg/ytconfig/canondata/TestGetExecNodeConfigWithCri/test.canondata @@ -110,7 +110,8 @@ { path="/yt/hdd2/slots"; "medium_name"=""; - "disk_usage_watermark"=0; + "disk_quota"=5368709120; + "disk_usage_watermark"=536870912; "enable_disk_quota"=%false; }; ]; diff --git a/pkg/ytconfig/canondata/TestGetExecNodeWithoutYtsaurusConfig/test.canondata b/pkg/ytconfig/canondata/TestGetExecNodeWithoutYtsaurusConfig/test.canondata index d1f01076..66103e48 100644 --- a/pkg/ytconfig/canondata/TestGetExecNodeWithoutYtsaurusConfig/test.canondata +++ b/pkg/ytconfig/canondata/TestGetExecNodeWithoutYtsaurusConfig/test.canondata @@ -119,7 +119,8 @@ { path="/yt/hdd2/slots"; "medium_name"=""; - "disk_usage_watermark"=0; + "disk_quota"=5368709120; + "disk_usage_watermark"=536870912; "enable_disk_quota"=%false; }; ]; diff --git a/pkg/ytconfig/generator_test.go b/pkg/ytconfig/generator_test.go index 49244fde..1b016440 100644 --- a/pkg/ytconfig/generator_test.go +++ b/pkg/ytconfig/generator_test.go @@ -54,13 +54,17 @@ var ( LocationType: "ChunkCache", Path: "/yt/hdd1/chunk-cache", } - testLocationSlots = ytv1.LocationSpec{ + testLocationSlotsQuota = resource.MustParse("5Gi") + testLocationSlots = ytv1.LocationSpec{ LocationType: "Slots", Path: "/yt/hdd2/slots", + Quota: &testLocationSlotsQuota, } - testLocationImageCache = ytv1.LocationSpec{ + testLocationImageCacheQuota = resource.MustParse("4Gi") + testLocationImageCache = ytv1.LocationSpec{ LocationType: "ImageCache", Path: "/yt/hdd1/images", + Quota: &testLocationImageCacheQuota, } testVolumeMounts = []corev1.VolumeMount{ { @@ -76,6 +80,11 @@ var ( Spec: corev1.PersistentVolumeClaimSpec{ AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce}, StorageClassName: &testStorageClassname, + Resources: corev1.ResourceRequirements{ + Requests: corev1.ResourceList{ + corev1.ResourceStorage: resource.MustParse("10Gi"), + }, + }, }, }, } diff --git a/pkg/ytconfig/node.go b/pkg/ytconfig/node.go index 05793f47..acf15ec1 100644 --- a/pkg/ytconfig/node.go +++ b/pkg/ytconfig/node.go @@ -224,8 +224,12 @@ func findVolume(volumeName string, spec ytv1.InstanceSpec) *corev1.Volume { return nil } -func findQuotaForPath(locationPath string, spec ytv1.InstanceSpec) *int64 { - mount := findVolumeMountForPath(locationPath, spec) +func findQuotaForLocation(location ytv1.LocationSpec, spec ytv1.InstanceSpec) *int64 { + if quota := location.Quota; quota != nil { + return ptr.Int64(quota.Value()) + } + + mount := findVolumeMountForPath(location.Path, spec) if mount == nil { return nil } @@ -233,17 +237,11 @@ func findQuotaForPath(locationPath string, spec ytv1.InstanceSpec) *int64 { if claim := findVolumeClaimTemplate(mount.Name, spec); claim != nil { storage := claim.Spec.Resources.Requests.Storage() if storage != nil { - value := storage.Value() - return &value - } else { - return nil + return ptr.Int64(storage.Value()) } - } - - if volume := findVolume(mount.Name, spec); volume != nil { + } else if volume := findVolume(mount.Name, spec); volume != nil { if volume.EmptyDir != nil && volume.EmptyDir.SizeLimit != nil { - value := volume.EmptyDir.SizeLimit.Value() - return &value + return ptr.Int64(volume.EmptyDir.SizeLimit.Value()) } } @@ -302,7 +300,7 @@ func getDataNodeServerCarcass(spec *ytv1.DataNodesSpec) (DataNodeServer, error) c.ResourceLimits = getDataNodeResourceLimits(spec) for _, location := range ytv1.FindAllLocations(spec.Locations, ytv1.LocationTypeChunkStore) { - quota := findQuotaForPath(location.Path, spec.InstanceSpec) + quota := findQuotaForLocation(location, spec.InstanceSpec) storeLocation := StoreLocation{ MediumName: location.Medium, Path: location.Path, @@ -475,7 +473,7 @@ func getExecNodeServerCarcass(spec *ytv1.ExecNodesSpec, commonSpec *ytv1.CommonS MediumName: location.Medium, } - if quota := findQuotaForPath(location.Path, spec.InstanceSpec); quota != nil { + if quota := findQuotaForLocation(location, spec.InstanceSpec); quota != nil { slotLocation.DiskQuota = quota // These are just simple heuristics. diff --git a/ytop-chart/templates/remoteexecnodes-crd.yaml b/ytop-chart/templates/remoteexecnodes-crd.yaml index 61f535ee..0467d558 100644 --- a/ytop-chart/templates/remoteexecnodes-crd.yaml +++ b/ytop-chart/templates/remoteexecnodes-crd.yaml @@ -849,6 +849,13 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: diff --git a/ytop-chart/templates/remoteytsaurus-crd.yaml b/ytop-chart/templates/remoteytsaurus-crd.yaml index 168c6eb6..59520a91 100644 --- a/ytop-chart/templates/remoteytsaurus-crd.yaml +++ b/ytop-chart/templates/remoteytsaurus-crd.yaml @@ -650,6 +650,13 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: diff --git a/ytop-chart/templates/ytsaurus-crd.yaml b/ytop-chart/templates/ytsaurus-crd.yaml index 01c71eba..6014842d 100644 --- a/ytop-chart/templates/ytsaurus-crd.yaml +++ b/ytop-chart/templates/ytsaurus-crd.yaml @@ -789,6 +789,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -3100,6 +3108,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -5435,6 +5451,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -7909,6 +7933,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -10268,6 +10300,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -12643,6 +12683,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -15005,6 +15053,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -17320,6 +17376,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -19625,6 +19689,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -21934,6 +22006,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -24291,6 +24371,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -26608,6 +26696,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -28998,6 +29094,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -31336,6 +31440,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: @@ -33877,6 +33989,14 @@ spec: path: minLength: 1 type: string + quota: + anyOf: + - type: integer + - type: string + description: Disk space quota, default is size of related + volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true type: object type: array loggers: