diff --git a/crd-catalog/CrunchyData/postgres-operator/postgres-operator.crunchydata.com/v1beta1/pgadmins.yaml b/crd-catalog/CrunchyData/postgres-operator/postgres-operator.crunchydata.com/v1beta1/pgadmins.yaml index 70c5908fc..5782a29ac 100644 --- a/crd-catalog/CrunchyData/postgres-operator/postgres-operator.crunchydata.com/v1beta1/pgadmins.yaml +++ b/crd-catalog/CrunchyData/postgres-operator/postgres-operator.crunchydata.com/v1beta1/pgadmins.yaml @@ -855,6 +855,9 @@ spec: - "postgresClusterSelector" type: "object" type: "array" + serviceName: + description: "ServiceName will be used as the name of a ClusterIP service pointing to the pgAdmin pod and port. If the service already exists, PGO will update the service. For more information about services reference the Kubernetes and CrunchyData documentation. https://kubernetes.io/docs/concepts/services-networking/service/" + type: "string" tolerations: description: "Tolerations of the PGAdmin pod. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration" items: @@ -882,6 +885,21 @@ spec: description: "pgAdmin users that are managed via the PGAdmin spec. Users can still be added via the pgAdmin GUI, but those users will not show up here." items: properties: + passwordRef: + description: "A reference to the secret that holds the user's password." + properties: + key: + description: "The key of the secret to select from. Must be a valid secret key." + type: "string" + name: + description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + type: "string" + optional: + description: "Specify whether the Secret or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" role: description: "Role determines whether the user has admin privileges or not. Defaults to User. Valid options are Administrator and User." enum: @@ -892,6 +910,7 @@ spec: description: "The username for User in pgAdmin. Must be unique in the pgAdmin's users list." type: "string" required: + - "passwordRef" - "username" type: "object" type: "array" diff --git a/crd-catalog/CrunchyData/postgres-operator/postgres-operator.crunchydata.com/v1beta1/postgresclusters.yaml b/crd-catalog/CrunchyData/postgres-operator/postgres-operator.crunchydata.com/v1beta1/postgresclusters.yaml index f6d87f324..711477fbf 100644 --- a/crd-catalog/CrunchyData/postgres-operator/postgres-operator.crunchydata.com/v1beta1/postgresclusters.yaml +++ b/crd-catalog/CrunchyData/postgres-operator/postgres-operator.crunchydata.com/v1beta1/postgresclusters.yaml @@ -8424,8 +8424,14 @@ spec: type: "string" options: description: "ALTER ROLE options except for PASSWORD. This field is ignored for the \"postgres\" user. More info: https://www.postgresql.org/docs/current/role-attributes.html" + maxLength: 200 pattern: "^[^;]*$" type: "string" + x-kubernetes-validations: + - message: "cannot assign password" + rule: "!self.matches(\"(?i:PASSWORD)\")" + - message: "cannot contain comments" + rule: "!self.matches(\"(?:--|/[*]|[*]/)\")" password: description: "Properties of the password generated for this user." properties: @@ -8442,6 +8448,7 @@ spec: required: - "name" type: "object" + maxItems: 64 type: "array" x-kubernetes-list-map-keys: - "name" diff --git a/crd-catalog/GoogleCloudPlatform/spark-on-k8s-operator/sparkoperator.k8s.io/v1beta2/scheduledsparkapplications.yaml b/crd-catalog/GoogleCloudPlatform/spark-on-k8s-operator/sparkoperator.k8s.io/v1beta2/scheduledsparkapplications.yaml index d36202a06..54feba94f 100644 --- a/crd-catalog/GoogleCloudPlatform/spark-on-k8s-operator/sparkoperator.k8s.io/v1beta2/scheduledsparkapplications.yaml +++ b/crd-catalog/GoogleCloudPlatform/spark-on-k8s-operator/sparkoperator.k8s.io/v1beta2/scheduledsparkapplications.yaml @@ -1330,6 +1330,10 @@ spec: additionalProperties: type: "string" type: "object" + serviceLabels: + additionalProperties: + type: "string" + type: "object" shareProcessNamespace: type: "boolean" sidecars: diff --git a/crd-catalog/GoogleCloudPlatform/spark-on-k8s-operator/sparkoperator.k8s.io/v1beta2/sparkapplications.yaml b/crd-catalog/GoogleCloudPlatform/spark-on-k8s-operator/sparkoperator.k8s.io/v1beta2/sparkapplications.yaml index 2c12ef144..b5ee293e9 100644 --- a/crd-catalog/GoogleCloudPlatform/spark-on-k8s-operator/sparkoperator.k8s.io/v1beta2/sparkapplications.yaml +++ b/crd-catalog/GoogleCloudPlatform/spark-on-k8s-operator/sparkoperator.k8s.io/v1beta2/sparkapplications.yaml @@ -1316,6 +1316,10 @@ spec: additionalProperties: type: "string" type: "object" + serviceLabels: + additionalProperties: + type: "string" + type: "object" shareProcessNamespace: type: "boolean" sidecars: diff --git a/crd-catalog/Kuadrant/dns-operator/kuadrant.io/v1alpha1/dnsrecords.yaml b/crd-catalog/Kuadrant/dns-operator/kuadrant.io/v1alpha1/dnsrecords.yaml index b1188f20a..0f0e61675 100644 --- a/crd-catalog/Kuadrant/dns-operator/kuadrant.io/v1alpha1/dnsrecords.yaml +++ b/crd-catalog/Kuadrant/dns-operator/kuadrant.io/v1alpha1/dnsrecords.yaml @@ -35,6 +35,7 @@ spec: description: "DNSRecordSpec defines the desired state of DNSRecord" properties: endpoints: + description: "endpoints is a list of endpoints that will be published into the dns provider." items: description: "Endpoint is a high-level way of a connection between a service and an IP" properties: @@ -88,7 +89,7 @@ spec: type: "string" type: "object" managedZone: - description: "ManagedZoneReference holds a reference to a ManagedZone" + description: "managedZone is a reference to a ManagedZone instance to which this record will publish its endpoints." properties: name: description: "`name` is the name of the managed zone. Required" @@ -97,14 +98,16 @@ spec: - "name" type: "object" ownerID: - description: "OwnerID is a unique string used to identify all endpoints created by this kuadrant" + description: "ownerID is a unique string used to identify the owner of this record." type: "string" x-kubernetes-validations: - message: "OwnerID is immutable" rule: "self == oldSelf" rootHost: - description: "rootHost is the single root for all endpoints in a DNSRecord. If rootHost is set, it is expected all defined endpoints are children \tof or equal to this rootHost" + description: "rootHost is the single root for all endpoints in a DNSRecord. If rootHost is set, it is expected all defined endpoints are children of or equal to this rootHost" type: "string" + required: + - "managedZone" type: "object" status: description: "DNSRecordStatus defines the observed state of DNSRecord" @@ -242,6 +245,49 @@ spec: probes: items: properties: + conditions: + items: + description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable." + format: "date-time" + type: "string" + message: + description: "message is a human readable message indicating details about the transition. This may be an empty string." + maxLength: 32768 + type: "string" + observedGeneration: + description: "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance." + format: "int64" + minimum: 0.0 + type: "integer" + reason: + description: "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty." + maxLength: 1024 + minLength: 1 + pattern: "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" + type: "string" + status: + description: "status of the condition, one of True, False, Unknown." + enum: + - "True" + - "False" + - "Unknown" + type: "string" + type: + description: "type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)" + maxLength: 316 + pattern: "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$" + type: "string" + required: + - "lastTransitionTime" + - "message" + - "reason" + - "status" + - "type" + type: "object" + type: "array" host: type: "string" id: diff --git a/crd-catalog/Kuadrant/dns-operator/kuadrant.io/v1alpha1/managedzones.yaml b/crd-catalog/Kuadrant/dns-operator/kuadrant.io/v1alpha1/managedzones.yaml index ef30f48e7..2f96c56a1 100644 --- a/crd-catalog/Kuadrant/dns-operator/kuadrant.io/v1alpha1/managedzones.yaml +++ b/crd-catalog/Kuadrant/dns-operator/kuadrant.io/v1alpha1/managedzones.yaml @@ -51,9 +51,10 @@ spec: description: "ManagedZoneSpec defines the desired state of ManagedZone" properties: description: - description: "Description for this ManagedZone" + description: "description for this ManagedZone" type: "string" dnsProviderSecretRef: + description: "dnsProviderSecretRef reference to a secret containing credentials to access a dns provider." properties: name: type: "string" @@ -61,14 +62,14 @@ spec: - "name" type: "object" domainName: - description: "Domain name of this ManagedZone" + description: "domainName of this ManagedZone" pattern: "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$" type: "string" id: - description: "ID is the provider assigned id of this zone (i.e. route53.HostedZone.ID)." + description: "id is the provider assigned id of this zone (i.e. route53.HostedZone.ID)." type: "string" parentManagedZone: - description: "Reference to another managed zone that this managed zone belongs to." + description: "parentManagedZone reference to another managed zone that this managed zone belongs to." properties: name: description: "`name` is the name of the managed zone. Required" diff --git a/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta2/authpolicies.yaml b/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta2/authpolicies.yaml index 65fb31590..4d8793a36 100644 --- a/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta2/authpolicies.yaml +++ b/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta2/authpolicies.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: "v0.14.0" labels: - gateway.networking.k8s.io/policy: "direct" + gateway.networking.k8s.io/policy: "inherited" name: "authpolicies.kuadrant.io" spec: group: "kuadrant.io" diff --git a/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta2/ratelimitpolicies.yaml b/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta2/ratelimitpolicies.yaml index 6a8045fa4..530b81cbd 100644 --- a/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta2/ratelimitpolicies.yaml +++ b/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta2/ratelimitpolicies.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: "v0.14.0" labels: - gateway.networking.k8s.io/policy: "direct" + gateway.networking.k8s.io/policy: "inherited" name: "ratelimitpolicies.kuadrant.io" spec: group: "kuadrant.io" @@ -491,6 +491,226 @@ spec: description: "Limits holds the struct of limits indexed by a unique name" maxProperties: 14 type: "object" + overrides: + description: "Overrides define override values for this policy and for policies inheriting this policy.\nOverrides are mutually exclusive with implicit defaults and explicit Defaults defined by RateLimitPolicyCommonSpec." + properties: + limits: + additionalProperties: + description: "Limit represents a complete rate limit configuration" + properties: + counters: + description: "Counters defines additional rate limit counters based on context qualifiers and well known selectors\nTODO Document properly \"Well-known selector\" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors" + items: + description: "ContextSelector defines one item from the well known attributes\nAttributes: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes\nWell-known selectors: https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors\nThey are named by a dot-separated path (e.g. request.path)\nExample: \"request.path\" -> The path portion of the URL" + maxLength: 253 + minLength: 1 + type: "string" + type: "array" + rates: + description: "Rates holds the list of limit rates" + items: + description: "Rate defines the actual rate limit that will be used when there is a match" + properties: + duration: + description: "Duration defines the time period for which the Limit specified above applies." + type: "integer" + limit: + description: "Limit defines the max value allowed for a given period of time" + type: "integer" + unit: + description: "Duration defines the time uni\nPossible values are: \"second\", \"minute\", \"hour\", \"day\"" + enum: + - "second" + - "minute" + - "hour" + - "day" + type: "string" + required: + - "duration" + - "limit" + - "unit" + type: "object" + type: "array" + routeSelectors: + description: "RouteSelectors defines semantics for matching an HTTP request based on conditions" + items: + description: "RouteSelector defines semantics for matching an HTTP request based on conditions\nhttps://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec" + properties: + hostnames: + description: "Hostnames defines a set of hostname that should match against the HTTP Host header to select a HTTPRoute to process the request\nhttps://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec" + items: + description: "Hostname is the fully qualified domain name of a network host. This matches\nthe RFC 1123 definition of a hostname with 2 notable exceptions:\n\n\n 1. IPs are not allowed.\n 2. A hostname may be prefixed with a wildcard label (`*.`). The wildcard\n label must appear by itself as the first label.\n\n\nHostname can be \"precise\" which is a domain name without the terminating\ndot of a network host (e.g. \"foo.example.com\") or \"wildcard\", which is a\ndomain name prefixed with a single wildcard label (e.g. `*.example.com`).\n\n\nNote that as per RFC1035 and RFC1123, a *label* must consist of lower case\nalphanumeric characters or '-', and must start and end with an alphanumeric\ncharacter. No other punctuation is allowed." + maxLength: 253 + minLength: 1 + pattern: "^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + type: "string" + type: "array" + matches: + description: "Matches define conditions used for matching the rule against incoming HTTP requests.\nhttps://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec" + items: + description: "HTTPRouteMatch defines the predicate used to match requests to a given\naction. Multiple match types are ANDed together, i.e. the match will\nevaluate to true only if all conditions are satisfied.\n\n\nFor example, the match below will match a HTTP request only if its path\nstarts with `/foo` AND it contains the `version: v1` header:\n\n\n```\nmatch:\n\n\n\tpath:\n\t value: \"/foo\"\n\theaders:\n\t- name: \"version\"\n\t value \"v1\"\n\n\n```" + properties: + headers: + description: "Headers specifies HTTP request header matchers. Multiple match values are\nANDed together, meaning, a request must match all the specified headers\nto select the route." + items: + description: "HTTPHeaderMatch describes how to select a HTTP route by matching HTTP request\nheaders." + properties: + name: + description: "Name is the name of the HTTP Header to be matched. Name matching MUST be\ncase insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).\n\n\nIf multiple entries specify equivalent header names, only the first\nentry with an equivalent name MUST be considered for a match. Subsequent\nentries with an equivalent header name MUST be ignored. Due to the\ncase-insensitivity of header names, \"foo\" and \"Foo\" are considered\nequivalent.\n\n\nWhen a header is repeated in an HTTP request, it is\nimplementation-specific behavior as to how this is represented.\nGenerally, proxies should follow the guidance from the RFC:\nhttps://www.rfc-editor.org/rfc/rfc7230.html#section-3.2.2 regarding\nprocessing a repeated header, with special handling for \"Set-Cookie\"." + maxLength: 256 + minLength: 1 + pattern: "^[A-Za-z0-9!#$%&'*+\\-.^_\\x60|~]+$" + type: "string" + type: + default: "Exact" + description: "Type specifies how to match against the value of the header.\n\n\nSupport: Core (Exact)\n\n\nSupport: Implementation-specific (RegularExpression)\n\n\nSince RegularExpression HeaderMatchType has implementation-specific\nconformance, implementations can support POSIX, PCRE or any other dialects\nof regular expressions. Please read the implementation's documentation to\ndetermine the supported dialect." + enum: + - "Exact" + - "RegularExpression" + type: "string" + value: + description: "Value is the value of HTTP Header to be matched." + maxLength: 4096 + minLength: 1 + type: "string" + required: + - "name" + - "value" + type: "object" + maxItems: 16 + type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" + method: + description: "Method specifies HTTP method matcher.\nWhen specified, this route will be matched only if the request has the\nspecified method.\n\n\nSupport: Extended" + enum: + - "GET" + - "HEAD" + - "POST" + - "PUT" + - "DELETE" + - "CONNECT" + - "OPTIONS" + - "TRACE" + - "PATCH" + type: "string" + path: + default: + type: "PathPrefix" + value: "/" + description: "Path specifies a HTTP request path matcher. If this field is not\nspecified, a default prefix match on the \"/\" path is provided." + properties: + type: + default: "PathPrefix" + description: "Type specifies how to match against the path Value.\n\n\nSupport: Core (Exact, PathPrefix)\n\n\nSupport: Implementation-specific (RegularExpression)" + enum: + - "Exact" + - "PathPrefix" + - "RegularExpression" + type: "string" + value: + default: "/" + description: "Value of the HTTP path to match against." + maxLength: 1024 + type: "string" + type: "object" + x-kubernetes-validations: + - message: "value must be an absolute path and start with '/' when type one of ['Exact', 'PathPrefix']" + rule: "(self.type in ['Exact','PathPrefix']) ? self.value.startsWith('/') : true" + - message: "must not contain '//' when type one of ['Exact', 'PathPrefix']" + rule: "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('//') : true" + - message: "must not contain '/./' when type one of ['Exact', 'PathPrefix']" + rule: "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('/./') : true" + - message: "must not contain '/../' when type one of ['Exact', 'PathPrefix']" + rule: "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('/../') : true" + - message: "must not contain '%2f' when type one of ['Exact', 'PathPrefix']" + rule: "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('%2f') : true" + - message: "must not contain '%2F' when type one of ['Exact', 'PathPrefix']" + rule: "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('%2F') : true" + - message: "must not contain '#' when type one of ['Exact', 'PathPrefix']" + rule: "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('#') : true" + - message: "must not end with '/..' when type one of ['Exact', 'PathPrefix']" + rule: "(self.type in ['Exact','PathPrefix']) ? !self.value.endsWith('/..') : true" + - message: "must not end with '/.' when type one of ['Exact', 'PathPrefix']" + rule: "(self.type in ['Exact','PathPrefix']) ? !self.value.endsWith('/.') : true" + - message: "type must be one of ['Exact', 'PathPrefix', 'RegularExpression']" + rule: "self.type in ['Exact','PathPrefix'] || self.type == 'RegularExpression'" + - message: "must only contain valid characters (matching ^(?:[-A-Za-z0-9/._~!$&'()*+,;=:@]|[%][0-9a-fA-F]{2})+$) for types ['Exact', 'PathPrefix']" + rule: "(self.type in ['Exact','PathPrefix']) ? self.value.matches(r\"\"\"^(?:[-A-Za-z0-9/._~!$&'()*+,;=:@]|[%][0-9a-fA-F]{2})+$\"\"\") : true" + queryParams: + description: "QueryParams specifies HTTP query parameter matchers. Multiple match\nvalues are ANDed together, meaning, a request must match all the\nspecified query parameters to select the route.\n\n\nSupport: Extended" + items: + description: "HTTPQueryParamMatch describes how to select a HTTP route by matching HTTP\nquery parameters." + properties: + name: + description: "Name is the name of the HTTP query param to be matched. This must be an\nexact string match. (See\nhttps://tools.ietf.org/html/rfc7230#section-2.7.3).\n\n\nIf multiple entries specify equivalent query param names, only the first\nentry with an equivalent name MUST be considered for a match. Subsequent\nentries with an equivalent query param name MUST be ignored.\n\n\nIf a query param is repeated in an HTTP request, the behavior is\npurposely left undefined, since different data planes have different\ncapabilities. However, it is *recommended* that implementations should\nmatch against the first value of the param if the data plane supports it,\nas this behavior is expected in other load balancing contexts outside of\nthe Gateway API.\n\n\nUsers SHOULD NOT route traffic based on repeated query params to guard\nthemselves against potential differences in the implementations." + maxLength: 256 + minLength: 1 + pattern: "^[A-Za-z0-9!#$%&'*+\\-.^_\\x60|~]+$" + type: "string" + type: + default: "Exact" + description: "Type specifies how to match against the value of the query parameter.\n\n\nSupport: Extended (Exact)\n\n\nSupport: Implementation-specific (RegularExpression)\n\n\nSince RegularExpression QueryParamMatchType has Implementation-specific\nconformance, implementations can support POSIX, PCRE or any other\ndialects of regular expressions. Please read the implementation's\ndocumentation to determine the supported dialect." + enum: + - "Exact" + - "RegularExpression" + type: "string" + value: + description: "Value is the value of HTTP query param to be matched." + maxLength: 1024 + minLength: 1 + type: "string" + required: + - "name" + - "value" + type: "object" + maxItems: 16 + type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" + type: "object" + maxItems: 8 + type: "array" + type: "object" + maxItems: 15 + type: "array" + when: + description: "When holds the list of conditions for the policy to be enforced.\nCalled also \"soft\" conditions as route selectors must also match" + items: + description: "RouteSelector defines semantics for matching an HTTP request based on conditions\nhttps://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec" + properties: + operator: + description: "The binary operator to be applied to the content fetched from the selector\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to)" + enum: + - "eq" + - "neq" + - "startswith" + - "endswith" + - "incl" + - "excl" + - "matches" + type: "string" + selector: + description: "Selector defines one item from the well known selectors\nTODO Document properly \"Well-known selector\" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors" + maxLength: 253 + minLength: 1 + type: "string" + value: + description: "The value of reference for the comparison." + type: "string" + required: + - "operator" + - "selector" + - "value" + type: "object" + type: "array" + type: "object" + description: "Limits holds the struct of limits indexed by a unique name" + maxProperties: 14 + type: "object" + type: "object" targetRef: description: "TargetRef identifies an API object to apply policy to." properties: @@ -534,6 +754,12 @@ spec: rule: "self.targetRef.kind != 'Gateway' || !has(self.limits) || !self.limits.exists(x, has(self.limits[x].routeSelectors))" - message: "Implicit and explicit defaults are mutually exclusive" rule: "!(has(self.defaults) && has(self.limits))" + - message: "Overrides and explicit defaults are mutually exclusive" + rule: "!(has(self.defaults) && has(self.overrides))" + - message: "Overrides and implicit defaults are mutually exclusive" + rule: "!(has(self.overrides) && has(self.limits))" + - message: "Overrides are only allowed for policies targeting a Gateway resource" + rule: "!(has(self.overrides) && self.targetRef.kind != 'Gateway')" status: description: "RateLimitPolicyStatus defines the observed state of RateLimitPolicy" properties: diff --git a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmagents.yaml b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmagents.yaml index 8bb1248ce..2b66d6886 100644 --- a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmagents.yaml +++ b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmagents.yaml @@ -1992,7 +1992,7 @@ spec: type: "object" x-kubernetes-preserve-unknown-fields: true useAsDefault: - description: "UseAsDefault applies changes from given service definition to the main object Service\nChaning from headless service to clusterIP or loadbalancer may break cross-component communication" + description: "UseAsDefault applies changes from given service definition to the main object Service\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication" type: "boolean" required: - "spec" diff --git a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalertmanagers.yaml b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalertmanagers.yaml index 63e98f7ec..435281501 100644 --- a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalertmanagers.yaml +++ b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalertmanagers.yaml @@ -637,7 +637,7 @@ spec: type: "object" x-kubernetes-preserve-unknown-fields: true useAsDefault: - description: "UseAsDefault applies changes from given service definition to the main object Service\nChaning from headless service to clusterIP or loadbalancer may break cross-component communication" + description: "UseAsDefault applies changes from given service definition to the main object Service\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication" type: "boolean" required: - "spec" diff --git a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalerts.yaml b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalerts.yaml index acefc4761..7522d0d24 100644 --- a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalerts.yaml +++ b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalerts.yaml @@ -1346,7 +1346,7 @@ spec: type: "object" x-kubernetes-preserve-unknown-fields: true useAsDefault: - description: "UseAsDefault applies changes from given service definition to the main object Service\nChaning from headless service to clusterIP or loadbalancer may break cross-component communication" + description: "UseAsDefault applies changes from given service definition to the main object Service\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication" type: "boolean" required: - "spec" diff --git a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmauths.yaml b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmauths.yaml index f034e307d..bc2eda9d9 100644 --- a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmauths.yaml +++ b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmauths.yaml @@ -492,7 +492,7 @@ spec: type: "object" x-kubernetes-preserve-unknown-fields: true useAsDefault: - description: "UseAsDefault applies changes from given service definition to the main object Service\nChaning from headless service to clusterIP or loadbalancer may break cross-component communication" + description: "UseAsDefault applies changes from given service definition to the main object Service\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication" type: "boolean" required: - "spec" diff --git a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmclusters.yaml b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmclusters.yaml index daf9097f6..f9d618d40 100644 --- a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmclusters.yaml +++ b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmclusters.yaml @@ -413,7 +413,7 @@ spec: type: "object" x-kubernetes-preserve-unknown-fields: true useAsDefault: - description: "UseAsDefault applies changes from given service definition to the main object Service\nChaning from headless service to clusterIP or loadbalancer may break cross-component communication" + description: "UseAsDefault applies changes from given service definition to the main object Service\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication" type: "boolean" required: - "spec" @@ -1020,7 +1020,7 @@ spec: type: "object" x-kubernetes-preserve-unknown-fields: true useAsDefault: - description: "UseAsDefault applies changes from given service definition to the main object Service\nChaning from headless service to clusterIP or loadbalancer may break cross-component communication" + description: "UseAsDefault applies changes from given service definition to the main object Service\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication" type: "boolean" required: - "spec" @@ -1830,7 +1830,7 @@ spec: type: "object" x-kubernetes-preserve-unknown-fields: true useAsDefault: - description: "UseAsDefault applies changes from given service definition to the main object Service\nChaning from headless service to clusterIP or loadbalancer may break cross-component communication" + description: "UseAsDefault applies changes from given service definition to the main object Service\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication" type: "boolean" required: - "spec" diff --git a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmsingles.yaml b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmsingles.yaml index cdcfd93b9..79723f0e4 100644 --- a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmsingles.yaml +++ b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmsingles.yaml @@ -357,7 +357,7 @@ spec: type: "object" x-kubernetes-preserve-unknown-fields: true useAsDefault: - description: "UseAsDefault applies changes from given service definition to the main object Service\nChaning from headless service to clusterIP or loadbalancer may break cross-component communication" + description: "UseAsDefault applies changes from given service definition to the main object Service\nChanging from headless service to clusterIP or loadbalancer may break cross-component communication" type: "boolean" required: - "spec" diff --git a/crd-catalog/aerospike/aerospike-kubernetes-operator/asdb.aerospike.com/v1/aerospikeclusters.yaml b/crd-catalog/aerospike/aerospike-kubernetes-operator/asdb.aerospike.com/v1/aerospikeclusters.yaml index 28b96ac9b..0e7b8d58d 100644 --- a/crd-catalog/aerospike/aerospike-kubernetes-operator/asdb.aerospike.com/v1/aerospikeclusters.yaml +++ b/crd-catalog/aerospike/aerospike-kubernetes-operator/asdb.aerospike.com/v1/aerospikeclusters.yaml @@ -5492,6 +5492,9 @@ spec: - "customInterface" type: "string" type: "object" + enableDynamicConfigUpdate: + description: "EnableDynamicConfigUpdate enables dynamic config update flow of the operator. If enabled, operator will try to update the Aerospike config dynamically. In case of inconsistent state during dynamic config update, operator falls back to rolling restart." + type: "boolean" image: description: "Aerospike server image" type: "string" diff --git a/crd-catalog/apache/camel-k/camel.apache.org/v1/integrationkits.yaml b/crd-catalog/apache/camel-k/camel.apache.org/v1/integrationkits.yaml index 1045b847d..5339b7b4e 100644 --- a/crd-catalog/apache/camel-k/camel.apache.org/v1/integrationkits.yaml +++ b/crd-catalog/apache/camel-k/camel.apache.org/v1/integrationkits.yaml @@ -190,7 +190,7 @@ spec: description: "When using `pod` strategy, the maximum amount of memory required by the pod builder. Deprecated: use TasksRequestCPU instead with task name `builder`." type: "string" mavenProfiles: - description: "A list of references pointing to configmaps/secrets that contains a maven profile. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." + description: "A list of references pointing to configmaps/secrets that contains a maven profile. This configmap/secret is a resource of the IntegrationKit created, therefore it needs to be present in the namespace where the operator is going to create the IntegrationKit. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." items: type: "string" type: "array" diff --git a/crd-catalog/apache/camel-k/camel.apache.org/v1/integrationplatforms.yaml b/crd-catalog/apache/camel-k/camel.apache.org/v1/integrationplatforms.yaml index 9cc63ba37..be31358ff 100644 --- a/crd-catalog/apache/camel-k/camel.apache.org/v1/integrationplatforms.yaml +++ b/crd-catalog/apache/camel-k/camel.apache.org/v1/integrationplatforms.yaml @@ -438,7 +438,7 @@ spec: description: "When using `pod` strategy, the maximum amount of memory required by the pod builder. Deprecated: use TasksRequestCPU instead with task name `builder`." type: "string" mavenProfiles: - description: "A list of references pointing to configmaps/secrets that contains a maven profile. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." + description: "A list of references pointing to configmaps/secrets that contains a maven profile. This configmap/secret is a resource of the IntegrationKit created, therefore it needs to be present in the namespace where the operator is going to create the IntegrationKit. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." items: type: "string" type: "array" @@ -544,7 +544,7 @@ spec: description: "Can be used to enable/disable exposure via kubernetes Service." type: "boolean" image: - description: "The main container image" + description: "The main container image to use for the Integration. When using this parameter the operator will create a synthetic IntegrationKit which won't be able to execute traits requiring CamelCatalog. If the container image you're using is coming from an IntegrationKit, use instead Integration `.spec.integrationKit` parameter. If you're moving the Integration across environments, you will also need to create an \"external\" IntegrationKit." type: "string" imagePullPolicy: description: "The pull policy: Always|Never|IfNotPresent" @@ -1895,7 +1895,7 @@ spec: description: "When using `pod` strategy, the maximum amount of memory required by the pod builder. Deprecated: use TasksRequestCPU instead with task name `builder`." type: "string" mavenProfiles: - description: "A list of references pointing to configmaps/secrets that contains a maven profile. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." + description: "A list of references pointing to configmaps/secrets that contains a maven profile. This configmap/secret is a resource of the IntegrationKit created, therefore it needs to be present in the namespace where the operator is going to create the IntegrationKit. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." items: type: "string" type: "array" @@ -2001,7 +2001,7 @@ spec: description: "Can be used to enable/disable exposure via kubernetes Service." type: "boolean" image: - description: "The main container image" + description: "The main container image to use for the Integration. When using this parameter the operator will create a synthetic IntegrationKit which won't be able to execute traits requiring CamelCatalog. If the container image you're using is coming from an IntegrationKit, use instead Integration `.spec.integrationKit` parameter. If you're moving the Integration across environments, you will also need to create an \"external\" IntegrationKit." type: "string" imagePullPolicy: description: "The pull policy: Always|Never|IfNotPresent" diff --git a/crd-catalog/apache/camel-k/camel.apache.org/v1/integrationprofiles.yaml b/crd-catalog/apache/camel-k/camel.apache.org/v1/integrationprofiles.yaml index 71da6c053..fc6bdb53d 100644 --- a/crd-catalog/apache/camel-k/camel.apache.org/v1/integrationprofiles.yaml +++ b/crd-catalog/apache/camel-k/camel.apache.org/v1/integrationprofiles.yaml @@ -339,7 +339,7 @@ spec: description: "When using `pod` strategy, the maximum amount of memory required by the pod builder. Deprecated: use TasksRequestCPU instead with task name `builder`." type: "string" mavenProfiles: - description: "A list of references pointing to configmaps/secrets that contains a maven profile. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." + description: "A list of references pointing to configmaps/secrets that contains a maven profile. This configmap/secret is a resource of the IntegrationKit created, therefore it needs to be present in the namespace where the operator is going to create the IntegrationKit. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." items: type: "string" type: "array" @@ -445,7 +445,7 @@ spec: description: "Can be used to enable/disable exposure via kubernetes Service." type: "boolean" image: - description: "The main container image" + description: "The main container image to use for the Integration. When using this parameter the operator will create a synthetic IntegrationKit which won't be able to execute traits requiring CamelCatalog. If the container image you're using is coming from an IntegrationKit, use instead Integration `.spec.integrationKit` parameter. If you're moving the Integration across environments, you will also need to create an \"external\" IntegrationKit." type: "string" imagePullPolicy: description: "The pull policy: Always|Never|IfNotPresent" @@ -1704,7 +1704,7 @@ spec: description: "When using `pod` strategy, the maximum amount of memory required by the pod builder. Deprecated: use TasksRequestCPU instead with task name `builder`." type: "string" mavenProfiles: - description: "A list of references pointing to configmaps/secrets that contains a maven profile. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." + description: "A list of references pointing to configmaps/secrets that contains a maven profile. This configmap/secret is a resource of the IntegrationKit created, therefore it needs to be present in the namespace where the operator is going to create the IntegrationKit. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." items: type: "string" type: "array" @@ -1810,7 +1810,7 @@ spec: description: "Can be used to enable/disable exposure via kubernetes Service." type: "boolean" image: - description: "The main container image" + description: "The main container image to use for the Integration. When using this parameter the operator will create a synthetic IntegrationKit which won't be able to execute traits requiring CamelCatalog. If the container image you're using is coming from an IntegrationKit, use instead Integration `.spec.integrationKit` parameter. If you're moving the Integration across environments, you will also need to create an \"external\" IntegrationKit." type: "string" imagePullPolicy: description: "The pull policy: Always|Never|IfNotPresent" diff --git a/crd-catalog/apache/camel-k/camel.apache.org/v1/integrations.yaml b/crd-catalog/apache/camel-k/camel.apache.org/v1/integrations.yaml index 7017a4133..33958d38e 100644 --- a/crd-catalog/apache/camel-k/camel.apache.org/v1/integrations.yaml +++ b/crd-catalog/apache/camel-k/camel.apache.org/v1/integrations.yaml @@ -3825,7 +3825,7 @@ spec: description: "When using `pod` strategy, the maximum amount of memory required by the pod builder. Deprecated: use TasksRequestCPU instead with task name `builder`." type: "string" mavenProfiles: - description: "A list of references pointing to configmaps/secrets that contains a maven profile. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." + description: "A list of references pointing to configmaps/secrets that contains a maven profile. This configmap/secret is a resource of the IntegrationKit created, therefore it needs to be present in the namespace where the operator is going to create the IntegrationKit. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." items: type: "string" type: "array" @@ -3931,7 +3931,7 @@ spec: description: "Can be used to enable/disable exposure via kubernetes Service." type: "boolean" image: - description: "The main container image" + description: "The main container image to use for the Integration. When using this parameter the operator will create a synthetic IntegrationKit which won't be able to execute traits requiring CamelCatalog. If the container image you're using is coming from an IntegrationKit, use instead Integration `.spec.integrationKit` parameter. If you're moving the Integration across environments, you will also need to create an \"external\" IntegrationKit." type: "string" imagePullPolicy: description: "The pull policy: Always|Never|IfNotPresent" diff --git a/crd-catalog/apache/camel-k/camel.apache.org/v1/pipes.yaml b/crd-catalog/apache/camel-k/camel.apache.org/v1/pipes.yaml index f4d540508..0f8e5c3e2 100644 --- a/crd-catalog/apache/camel-k/camel.apache.org/v1/pipes.yaml +++ b/crd-catalog/apache/camel-k/camel.apache.org/v1/pipes.yaml @@ -3820,7 +3820,7 @@ spec: description: "When using `pod` strategy, the maximum amount of memory required by the pod builder. Deprecated: use TasksRequestCPU instead with task name `builder`." type: "string" mavenProfiles: - description: "A list of references pointing to configmaps/secrets that contains a maven profile. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." + description: "A list of references pointing to configmaps/secrets that contains a maven profile. This configmap/secret is a resource of the IntegrationKit created, therefore it needs to be present in the namespace where the operator is going to create the IntegrationKit. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." items: type: "string" type: "array" @@ -3926,7 +3926,7 @@ spec: description: "Can be used to enable/disable exposure via kubernetes Service." type: "boolean" image: - description: "The main container image" + description: "The main container image to use for the Integration. When using this parameter the operator will create a synthetic IntegrationKit which won't be able to execute traits requiring CamelCatalog. If the container image you're using is coming from an IntegrationKit, use instead Integration `.spec.integrationKit` parameter. If you're moving the Integration across environments, you will also need to create an \"external\" IntegrationKit." type: "string" imagePullPolicy: description: "The pull policy: Always|Never|IfNotPresent" diff --git a/crd-catalog/apache/camel-k/camel.apache.org/v1alpha1/kameletbindings.yaml b/crd-catalog/apache/camel-k/camel.apache.org/v1alpha1/kameletbindings.yaml index 19f7d2428..53ea608a7 100644 --- a/crd-catalog/apache/camel-k/camel.apache.org/v1alpha1/kameletbindings.yaml +++ b/crd-catalog/apache/camel-k/camel.apache.org/v1alpha1/kameletbindings.yaml @@ -3822,7 +3822,7 @@ spec: description: "When using `pod` strategy, the maximum amount of memory required by the pod builder. Deprecated: use TasksRequestCPU instead with task name `builder`." type: "string" mavenProfiles: - description: "A list of references pointing to configmaps/secrets that contains a maven profile. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." + description: "A list of references pointing to configmaps/secrets that contains a maven profile. This configmap/secret is a resource of the IntegrationKit created, therefore it needs to be present in the namespace where the operator is going to create the IntegrationKit. The content of the maven profile is expected to be a text containing a valid maven profile starting with `` and ending with `` that will be integrated as an inline profile in the POM. Syntax: [configmap|secret]:name[/key], where name represents the resource name, key optionally represents the resource key to be filtered (default key value = profile.xml)." items: type: "string" type: "array" @@ -3928,7 +3928,7 @@ spec: description: "Can be used to enable/disable exposure via kubernetes Service." type: "boolean" image: - description: "The main container image" + description: "The main container image to use for the Integration. When using this parameter the operator will create a synthetic IntegrationKit which won't be able to execute traits requiring CamelCatalog. If the container image you're using is coming from an IntegrationKit, use instead Integration `.spec.integrationKit` parameter. If you're moving the Integration across environments, you will also need to create an \"external\" IntegrationKit." type: "string" imagePullPolicy: description: "The pull policy: Always|Never|IfNotPresent" diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/clusters.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/clusters.yaml index 3d98a566a..8792b48fb 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/clusters.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/clusters.yaml @@ -370,80 +370,21 @@ spec: volumeClaimTemplates: description: "Defines VolumeClaimTemplates to override. Add new or override existing volume claim templates." items: - description: "PersistentVolumeClaim is a user's request for and claim to a persistent volume" properties: - apiVersion: - description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" - type: "string" - kind: - description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + name: + description: "Refers to the name of a volumeMount defined in either: \n - `componentDefinition.spec.runtime.containers[*].volumeMounts` - `clusterDefinition.spec.componentDefs[*].podSpec.containers[*].volumeMounts` (deprecated) \n The value of `name` must match the `name` field of a volumeMount specified in the corresponding `volumeMounts` array." type: "string" - metadata: - description: "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" - properties: - annotations: - additionalProperties: - type: "string" - type: "object" - finalizers: - items: - type: "string" - type: "array" - labels: - additionalProperties: - type: "string" - type: "object" - name: - type: "string" - namespace: - type: "string" - type: "object" spec: - description: "spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" + description: "Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. \n When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field." properties: accessModes: - description: "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" + description: "Contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1." items: type: "string" type: "array" - dataSource: - description: "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - required: - - "kind" - - "name" - type: "object" - x-kubernetes-map-type: "atomic" - dataSourceRef: - description: "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - namespace: - description: "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - type: "string" - required: - - "kind" - - "name" - type: "object" + x-kubernetes-preserve-unknown-fields: true resources: - description: "resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources" + description: "Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources." properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." @@ -479,113 +420,16 @@ spec: description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" - selector: - description: "selector is a label query over volumes to consider for binding." - properties: - matchExpressions: - description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." - items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." - properties: - key: - description: "key is the label key that the selector applies to." - type: "string" - operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." - type: "string" - values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." - items: - type: "string" - type: "array" - required: - - "key" - - "operator" - type: "object" - type: "array" - matchLabels: - additionalProperties: - type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." - type: "object" - type: "object" - x-kubernetes-map-type: "atomic" + x-kubernetes-preserve-unknown-fields: true storageClassName: - description: "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1" + description: "The name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1." type: "string" volumeMode: - description: "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec." - type: "string" - volumeName: - description: "volumeName is the binding reference to the PersistentVolume backing this claim." - type: "string" - type: "object" - status: - description: "status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" - properties: - accessModes: - description: "accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" - items: - type: "string" - type: "array" - allocatedResourceStatuses: - additionalProperties: - description: "When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it." - type: "string" - description: "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. \n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature." - type: "object" - x-kubernetes-map-type: "granular" - allocatedResources: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. \n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature." - type: "object" - capacity: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "capacity represents the actual resources of the underlying volume." - type: "object" - conditions: - description: "conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'." - items: - description: "PersistentVolumeClaimCondition contains details about state of pvc" - properties: - lastProbeTime: - description: "lastProbeTime is the time we probed the condition." - format: "date-time" - type: "string" - lastTransitionTime: - description: "lastTransitionTime is the time the condition transitioned from one status to another." - format: "date-time" - type: "string" - message: - description: "message is the human-readable message indicating details about last transition." - type: "string" - reason: - description: "reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized." - type: "string" - status: - type: "string" - type: - description: "PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type" - type: "string" - required: - - "status" - - "type" - type: "object" - type: "array" - phase: - description: "phase represents the current phase of PersistentVolumeClaim." + description: "Defines what type of volume is required by the claim, either Block or Filesystem." type: "string" type: "object" + required: + - "name" type: "object" type: "array" volumeMounts: @@ -1588,6 +1432,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" issuer: description: "Specifies the configuration for the TLS certificates issuer. It allows defining the issuer name and the reference to the secret containing the TLS certificates and key. The secret should contain the CA certificate, TLS certificate, and private key in the specified keys. Required when TLS is enabled." properties: @@ -2270,7 +2117,7 @@ spec: items: properties: cluster: - description: "Specifies the name of the KubeBlocks Cluster being referenced. This is used when services from another KubeBlocks Cluster are consumed. \n By default, the referenced KubeBlocks Cluster's `clusterDefinition.spec.connectionCredential` will be utilized to bind to the current Component. This credential should include: `endpoint`, `port`, `username`, and `password`. \n Note: \n - The `ServiceKind` and `ServiceVersion` specified in the service reference within the ClusterDefinition are not validated when using this approach. - If both `cluster` and `serviceDescriptor` are present, `cluster` will take precedence. \n Deprecated since v0.9 since `clusterDefinition.spec.connectionCredential` is deprecated, use `clusterRef` instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases." + description: "Specifies the name of the KubeBlocks Cluster being referenced. This is used when services from another KubeBlocks Cluster are consumed. \n By default, the referenced KubeBlocks Cluster's `clusterDefinition.spec.connectionCredential` will be utilized to bind to the current Component. This credential should include: `endpoint`, `port`, `username`, and `password`. \n Note: \n - The `ServiceKind` and `ServiceVersion` specified in the service reference within the ClusterDefinition are not validated when using this approach. - If both `cluster` and `serviceDescriptor` are present, `cluster` will take precedence. \n Deprecated since v0.9 since `clusterDefinition.spec.connectionCredential` is deprecated, use `clusterServiceSelector` instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases." type: "string" clusterServiceSelector: description: "ClusterRef is used to reference a service provided by another KubeBlocks Cluster. It specifies the ClusterService and the account credentials needed for access." @@ -2336,7 +2183,7 @@ spec: description: "If ServiceType is LoadBalancer, cloud provider related parameters can be put here. More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer." type: "object" name: - description: "References the component service name defined in the ComponentDefinition.Spec.Services[x].Name." + description: "References the component service name defined in the `componentDefinition.spec.services[*].name`." maxLength: 25 type: "string" podService: @@ -2344,7 +2191,7 @@ spec: type: "boolean" serviceType: default: "ClusterIP" - description: "Determines how the Service is exposed. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. \n - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. \n More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types." + description: "Determines how the Service is exposed. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. \n - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. \n Note: although K8s Service type allows the 'ExternalName' type, it is not a valid option for ClusterComponentService. \n For more info, see: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types." enum: - "ClusterIP" - "NodePort" @@ -3256,7 +3103,7 @@ spec: maxLength: 25 type: "string" roleSelector: - description: "Extends the above `serviceSpec.selector` by allowing you to specify defined role as selector for the service. When `roleSelector` is set, it adds a label selector \"kubeblocks.io/role: {roleSelector}\" to the `serviceSpec.selector`. Example usage: \n roleSelector: \"leader\" \n In this example, setting `roleSelector` to \"leader\" will add a label selector \"kubeblocks.io/role: leader\" to the `serviceSpec.selector`. This means that the service will select and route traffic to Pods with the label \"kubeblocks.io/role\" set to \"leader\". \n Note that if `generatePodOrdinalService` sets to true, RoleSelector will be ignored. The `generatePodOrdinalService` flag takes precedence over `roleSelector` and generates a service for each Pod." + description: "Extends the above `serviceSpec.selector` by allowing you to specify defined role as selector for the service. When `roleSelector` is set, it adds a label selector \"kubeblocks.io/role: {roleSelector}\" to the `serviceSpec.selector`. Example usage: \n roleSelector: \"leader\" \n In this example, setting `roleSelector` to \"leader\" will add a label selector \"kubeblocks.io/role: leader\" to the `serviceSpec.selector`. This means that the service will select and route traffic to Pods with the label \"kubeblocks.io/role\" set to \"leader\". \n Note that if `podService` sets to true, RoleSelector will be ignored. The `podService` flag takes precedence over `roleSelector` and generates a service for each Pod." type: "string" serviceName: description: "ServiceName defines the name of the underlying service object. If not specified, the default service name with different patterns will be used: \n - CLUSTER_NAME: for cluster-level services - CLUSTER_NAME-COMPONENT_NAME: for component-level services \n Only one default service name is allowed. Cannot be updated." @@ -3639,80 +3486,21 @@ spec: volumeClaimTemplates: description: "Defines VolumeClaimTemplates to override. Add new or override existing volume claim templates." items: - description: "PersistentVolumeClaim is a user's request for and claim to a persistent volume" properties: - apiVersion: - description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" - type: "string" - kind: - description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + name: + description: "Refers to the name of a volumeMount defined in either: \n - `componentDefinition.spec.runtime.containers[*].volumeMounts` - `clusterDefinition.spec.componentDefs[*].podSpec.containers[*].volumeMounts` (deprecated) \n The value of `name` must match the `name` field of a volumeMount specified in the corresponding `volumeMounts` array." type: "string" - metadata: - description: "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" - properties: - annotations: - additionalProperties: - type: "string" - type: "object" - finalizers: - items: - type: "string" - type: "array" - labels: - additionalProperties: - type: "string" - type: "object" - name: - type: "string" - namespace: - type: "string" - type: "object" spec: - description: "spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" + description: "Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. \n When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field." properties: accessModes: - description: "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" + description: "Contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1." items: type: "string" type: "array" - dataSource: - description: "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - required: - - "kind" - - "name" - type: "object" - x-kubernetes-map-type: "atomic" - dataSourceRef: - description: "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - namespace: - description: "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - type: "string" - required: - - "kind" - - "name" - type: "object" + x-kubernetes-preserve-unknown-fields: true resources: - description: "resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources" + description: "Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources." properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." @@ -3748,113 +3536,16 @@ spec: description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" - selector: - description: "selector is a label query over volumes to consider for binding." - properties: - matchExpressions: - description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." - items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." - properties: - key: - description: "key is the label key that the selector applies to." - type: "string" - operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." - type: "string" - values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." - items: - type: "string" - type: "array" - required: - - "key" - - "operator" - type: "object" - type: "array" - matchLabels: - additionalProperties: - type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." - type: "object" - type: "object" - x-kubernetes-map-type: "atomic" + x-kubernetes-preserve-unknown-fields: true storageClassName: - description: "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1" + description: "The name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1." type: "string" volumeMode: - description: "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec." - type: "string" - volumeName: - description: "volumeName is the binding reference to the PersistentVolume backing this claim." - type: "string" - type: "object" - status: - description: "status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" - properties: - accessModes: - description: "accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" - items: - type: "string" - type: "array" - allocatedResourceStatuses: - additionalProperties: - description: "When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it." - type: "string" - description: "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. \n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature." - type: "object" - x-kubernetes-map-type: "granular" - allocatedResources: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. \n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature." - type: "object" - capacity: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "capacity represents the actual resources of the underlying volume." - type: "object" - conditions: - description: "conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'." - items: - description: "PersistentVolumeClaimCondition contains details about state of pvc" - properties: - lastProbeTime: - description: "lastProbeTime is the time we probed the condition." - format: "date-time" - type: "string" - lastTransitionTime: - description: "lastTransitionTime is the time the condition transitioned from one status to another." - format: "date-time" - type: "string" - message: - description: "message is the human-readable message indicating details about last transition." - type: "string" - reason: - description: "reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized." - type: "string" - status: - type: "string" - type: - description: "PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type" - type: "string" - required: - - "status" - - "type" - type: "object" - type: "array" - phase: - description: "phase represents the current phase of PersistentVolumeClaim." + description: "Defines what type of volume is required by the claim, either Block or Filesystem." type: "string" type: "object" + required: + - "name" type: "object" type: "array" volumeMounts: @@ -4857,6 +4548,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" issuer: description: "Specifies the configuration for the TLS certificates issuer. It allows defining the issuer name and the reference to the secret containing the TLS certificates and key. The secret should contain the CA certificate, TLS certificate, and private key in the specified keys. Required when TLS is enabled." properties: @@ -5539,7 +5233,7 @@ spec: items: properties: cluster: - description: "Specifies the name of the KubeBlocks Cluster being referenced. This is used when services from another KubeBlocks Cluster are consumed. \n By default, the referenced KubeBlocks Cluster's `clusterDefinition.spec.connectionCredential` will be utilized to bind to the current Component. This credential should include: `endpoint`, `port`, `username`, and `password`. \n Note: \n - The `ServiceKind` and `ServiceVersion` specified in the service reference within the ClusterDefinition are not validated when using this approach. - If both `cluster` and `serviceDescriptor` are present, `cluster` will take precedence. \n Deprecated since v0.9 since `clusterDefinition.spec.connectionCredential` is deprecated, use `clusterRef` instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases." + description: "Specifies the name of the KubeBlocks Cluster being referenced. This is used when services from another KubeBlocks Cluster are consumed. \n By default, the referenced KubeBlocks Cluster's `clusterDefinition.spec.connectionCredential` will be utilized to bind to the current Component. This credential should include: `endpoint`, `port`, `username`, and `password`. \n Note: \n - The `ServiceKind` and `ServiceVersion` specified in the service reference within the ClusterDefinition are not validated when using this approach. - If both `cluster` and `serviceDescriptor` are present, `cluster` will take precedence. \n Deprecated since v0.9 since `clusterDefinition.spec.connectionCredential` is deprecated, use `clusterServiceSelector` instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases." type: "string" clusterServiceSelector: description: "ClusterRef is used to reference a service provided by another KubeBlocks Cluster. It specifies the ClusterService and the account credentials needed for access." @@ -5605,7 +5299,7 @@ spec: description: "If ServiceType is LoadBalancer, cloud provider related parameters can be put here. More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer." type: "object" name: - description: "References the component service name defined in the ComponentDefinition.Spec.Services[x].Name." + description: "References the component service name defined in the `componentDefinition.spec.services[*].name`." maxLength: 25 type: "string" podService: @@ -5613,7 +5307,7 @@ spec: type: "boolean" serviceType: default: "ClusterIP" - description: "Determines how the Service is exposed. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. \n - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. \n More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types." + description: "Determines how the Service is exposed. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. \n - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. \n Note: although K8s Service type allows the 'ExternalName' type, it is not a valid option for ClusterComponentService. \n For more info, see: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types." enum: - "ClusterIP" - "NodePort" @@ -5968,12 +5662,6 @@ spec: default: "Unknown" description: "Represents the name of the pod." type: "string" - ready: - description: "Whether the corresponding Pod is in ready condition." - type: "boolean" - readyWithoutPrimary: - description: "Indicates whether it is required for the InstanceSet to have at least one primary instance ready." - type: "boolean" role: description: "Defines the role of the replica in the cluster." properties: diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/componentdefinitions.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/componentdefinitions.yaml index b28b757f3..c08270255 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/componentdefinitions.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/componentdefinitions.yaml @@ -7158,10 +7158,10 @@ spec: type: "string" podService: default: false - description: "Indicates whether to create a corresponding Service for each Pod of the selected Component. When set to true, a set of Services will be automatically generated for each Pod, and the `roleSelector` field will be ignored. \n The names of the generated Services will follow the same naming pattern: `$(serviceName)-$(podOrdinal)`. \n The podOrdinal is zero-based, meaning it starts from 0 for the first Pod and increments for each subsequent Pod. The total number of generated Services will be equal to the number of replicas specified for the Component. \n Example usage: \n ```yaml name: my-service serviceName: my-service generatePodOrdinalService: true spec: type: NodePort ports: - name: http port: 80 targetPort: 8080 ``` \n In this example, if the Component has 3 replicas, three Services will be generated: - my-service-0: Points to the first Pod (podOrdinal: 0) - my-service-1: Points to the second Pod (podOrdinal: 1) - my-service-2: Points to the third Pod (podOrdinal: 2) \n Each generated Service will have the specified spec configuration and will target its respective Pod. \n This feature is useful when you need to expose each Pod of a Component individually, allowing external access to specific instances of the Component." + description: "Indicates whether to create a corresponding Service for each Pod of the selected Component. When set to true, a set of Services will be automatically generated for each Pod, and the `roleSelector` field will be ignored. \n The names of the generated Services will follow the same suffix naming pattern: `$(serviceName)-$(podOrdinal)`. The total number of generated Services will be equal to the number of replicas specified for the Component. \n Example usage: \n ```yaml name: my-service serviceName: my-service podService: true disableAutoProvision: true spec: type: NodePort ports: - name: http port: 80 targetPort: 8080 ``` \n In this example, if the Component has 3 replicas, three Services will be generated: - my-service-0: Points to the first Pod (podOrdinal: 0) - my-service-1: Points to the second Pod (podOrdinal: 1) - my-service-2: Points to the third Pod (podOrdinal: 2) \n Each generated Service will have the specified spec configuration and will target its respective Pod. \n This feature is useful when you need to expose each Pod of a Component individually, allowing external access to specific instances of the Component." type: "boolean" roleSelector: - description: "Extends the above `serviceSpec.selector` by allowing you to specify defined role as selector for the service. When `roleSelector` is set, it adds a label selector \"kubeblocks.io/role: {roleSelector}\" to the `serviceSpec.selector`. Example usage: \n roleSelector: \"leader\" \n In this example, setting `roleSelector` to \"leader\" will add a label selector \"kubeblocks.io/role: leader\" to the `serviceSpec.selector`. This means that the service will select and route traffic to Pods with the label \"kubeblocks.io/role\" set to \"leader\". \n Note that if `generatePodOrdinalService` sets to true, RoleSelector will be ignored. The `generatePodOrdinalService` flag takes precedence over `roleSelector` and generates a service for each Pod." + description: "Extends the above `serviceSpec.selector` by allowing you to specify defined role as selector for the service. When `roleSelector` is set, it adds a label selector \"kubeblocks.io/role: {roleSelector}\" to the `serviceSpec.selector`. Example usage: \n roleSelector: \"leader\" \n In this example, setting `roleSelector` to \"leader\" will add a label selector \"kubeblocks.io/role: leader\" to the `serviceSpec.selector`. This means that the service will select and route traffic to Pods with the label \"kubeblocks.io/role\" set to \"leader\". \n Note that if `podService` sets to true, RoleSelector will be ignored. The `podService` flag takes precedence over `roleSelector` and generates a service for each Pod." type: "string" serviceName: description: "ServiceName defines the name of the underlying service object. If not specified, the default service name with different patterns will be used: \n - CLUSTER_NAME: for cluster-level services - CLUSTER_NAME-COMPONENT_NAME: for component-level services \n Only one default service name is allowed. Cannot be updated." @@ -8220,7 +8220,7 @@ spec: - "Parallel" type: "string" vars: - description: "Represents user-defined variables that can be used as environment variables for Pods and Actions, or to render templates of config and script. These variables are placed in front of the environment variables declared in the Pod if used as environment variables. \n The value of a var can be populated from the following sources: \n - ConfigMap: Allows you to select a ConfigMap and a specific key within that ConfigMap to extract the value from. - Secret: Allows you to select a Secret and a specific key within that Secret to extract the value from. - Pod: Retrieves values (including ports) from a selected Pod. - Service: Retrieves values (including address, port, NodePort) from a selected Service. The purpose of ServiceVar is to obtain the address of a ComponentService. - Credential: Retrieves values (including account name, account password) from a SystemAccount variable. - ServiceRef: Retrieves values (including address, port, account name, account password) from a selected ServiceRefDeclaration. The purpose of ServiceRefVar is to obtain the specific address that a ServiceRef is bound to (e.g., a ClusterService of another Cluster). \n This field is immutable." + description: "Represents user-defined variables that can be used as environment variables for Pods and Actions, or to render templates of config and script. These variables are placed in front of the environment variables declared in the Pod if used as environment variables. \n The value of a var can be populated from the following sources: \n - ConfigMap: Allows you to select a ConfigMap and a specific key within that ConfigMap to extract the value from. - Secret: Allows you to select a Secret and a specific key within that Secret to extract the value from. - Pod: Retrieves values (including ports) from a selected Pod. - Service: Retrieves values (including address, port, NodePort) from a selected Service. The purpose of ServiceVar is to obtain the address of a ComponentService. - Credential: Retrieves values (including account name, account password) from a SystemAccount variable. - ServiceRef: Retrieves values (including address, port, account name, account password) from a selected ServiceRefDeclaration. The purpose of ServiceRefVar is to obtain the specific address that a ServiceRef is bound to (e.g., a ClusterService of another Cluster). - Component: Retrieves values from a field of a Component. \n This field is immutable." items: description: "EnvVar represents a variable present in the env of Pod/Action or the template of config/script." properties: @@ -8233,6 +8233,75 @@ spec: valueFrom: description: "Source for the variable's value. Cannot be used if value is not empty." properties: + componentVarRef: + description: "Selects a defined var of a Component." + properties: + compDef: + description: "CompDef specifies the definition used by the component that the referent object resident in. If not specified, the component itself will be used." + type: "string" + componentName: + description: "Reference to the name of the Component object." + enum: + - "Required" + - "Optional" + type: "string" + instanceNames: + description: "Reference to the instanceName list of the component. and the value will be presented in the following format: instanceName1,instanceName2..." + enum: + - "Required" + - "Optional" + type: "string" + multipleClusterObjectOption: + description: "This option defines the behavior when multiple component objects match the specified @CompDef. If not provided, an error will be raised when handling multiple matches." + properties: + combinedOption: + description: "Define the options for handling combined variables. Valid only when the strategy is set to \"combined\"." + properties: + flattenFormat: + description: "The flatten format, default is: $(comp-name-1):value,$(comp-name-2):value." + properties: + delimiter: + default: "," + description: "Pair delimiter." + type: "string" + keyValueDelimiter: + default: ":" + description: "Key-value delimiter." + type: "string" + required: + - "delimiter" + - "keyValueDelimiter" + type: "object" + newVarSuffix: + description: "If set, the existing variable will be kept, and a new variable will be defined with the specified suffix in pattern: $(var.name)_$(suffix). The new variable will be auto-created and placed behind the existing one. If not set, the existing variable will be reused with the value format defined below." + type: "string" + valueFormat: + default: "Flatten" + description: "The format of the value that the operator will use to compose values from multiple components." + type: "string" + type: "object" + strategy: + description: "Define the strategy for handling multiple cluster objects." + enum: + - "individual" + - "combined" + type: "string" + required: + - "strategy" + type: "object" + name: + description: "Name of the referent object." + type: "string" + optional: + description: "Specify whether the object must be defined." + type: "boolean" + replicas: + description: "Reference to the replicas of the component." + enum: + - "Required" + - "Optional" + type: "string" + type: "object" configMapKeyRef: description: "Selects a key of a ConfigMap." properties: @@ -8487,6 +8556,12 @@ spec: - "Required" - "Optional" type: "string" + loadBalancer: + description: "LoadBalancer represents the LoadBalancer ingress point of the service. \n If multiple ingress points are available, the first one will be used automatically, choosing between IP and Hostname." + enum: + - "Required" + - "Optional" + type: "string" multipleClusterObjectOption: description: "This option defines the behavior when multiple component objects match the specified @CompDef. If not provided, an error will be raised when handling multiple matches." properties: diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/components.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/components.yaml index d9f8ebc12..6b4aafdb7 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/components.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/components.yaml @@ -369,80 +369,21 @@ spec: volumeClaimTemplates: description: "Defines VolumeClaimTemplates to override. Add new or override existing volume claim templates." items: - description: "PersistentVolumeClaim is a user's request for and claim to a persistent volume" properties: - apiVersion: - description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" - type: "string" - kind: - description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + name: + description: "Refers to the name of a volumeMount defined in either: \n - `componentDefinition.spec.runtime.containers[*].volumeMounts` - `clusterDefinition.spec.componentDefs[*].podSpec.containers[*].volumeMounts` (deprecated) \n The value of `name` must match the `name` field of a volumeMount specified in the corresponding `volumeMounts` array." type: "string" - metadata: - description: "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" - properties: - annotations: - additionalProperties: - type: "string" - type: "object" - finalizers: - items: - type: "string" - type: "array" - labels: - additionalProperties: - type: "string" - type: "object" - name: - type: "string" - namespace: - type: "string" - type: "object" spec: - description: "spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" + description: "Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. \n When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field." properties: accessModes: - description: "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" + description: "Contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1." items: type: "string" type: "array" - dataSource: - description: "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - required: - - "kind" - - "name" - type: "object" - x-kubernetes-map-type: "atomic" - dataSourceRef: - description: "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - namespace: - description: "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - type: "string" - required: - - "kind" - - "name" - type: "object" + x-kubernetes-preserve-unknown-fields: true resources: - description: "resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources" + description: "Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources." properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." @@ -478,113 +419,16 @@ spec: description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" - selector: - description: "selector is a label query over volumes to consider for binding." - properties: - matchExpressions: - description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." - items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." - properties: - key: - description: "key is the label key that the selector applies to." - type: "string" - operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." - type: "string" - values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." - items: - type: "string" - type: "array" - required: - - "key" - - "operator" - type: "object" - type: "array" - matchLabels: - additionalProperties: - type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." - type: "object" - type: "object" - x-kubernetes-map-type: "atomic" + x-kubernetes-preserve-unknown-fields: true storageClassName: - description: "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1" + description: "The name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1." type: "string" volumeMode: - description: "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec." - type: "string" - volumeName: - description: "volumeName is the binding reference to the PersistentVolume backing this claim." - type: "string" - type: "object" - status: - description: "status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" - properties: - accessModes: - description: "accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" - items: - type: "string" - type: "array" - allocatedResourceStatuses: - additionalProperties: - description: "When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it." - type: "string" - description: "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. \n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature." - type: "object" - x-kubernetes-map-type: "granular" - allocatedResources: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. \n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature." - type: "object" - capacity: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "capacity represents the actual resources of the underlying volume." - type: "object" - conditions: - description: "conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'." - items: - description: "PersistentVolumeClaimCondition contains details about state of pvc" - properties: - lastProbeTime: - description: "lastProbeTime is the time we probed the condition." - format: "date-time" - type: "string" - lastTransitionTime: - description: "lastTransitionTime is the time the condition transitioned from one status to another." - format: "date-time" - type: "string" - message: - description: "message is the human-readable message indicating details about last transition." - type: "string" - reason: - description: "reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized." - type: "string" - status: - type: "string" - type: - description: "PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type" - type: "string" - required: - - "status" - - "type" - type: "object" - type: "array" - phase: - description: "phase represents the current phase of PersistentVolumeClaim." + description: "Defines what type of volume is required by the claim, either Block or Filesystem." type: "string" type: "object" + required: + - "name" type: "object" type: "array" volumeMounts: @@ -2229,7 +2073,7 @@ spec: items: properties: cluster: - description: "Specifies the name of the KubeBlocks Cluster being referenced. This is used when services from another KubeBlocks Cluster are consumed. \n By default, the referenced KubeBlocks Cluster's `clusterDefinition.spec.connectionCredential` will be utilized to bind to the current Component. This credential should include: `endpoint`, `port`, `username`, and `password`. \n Note: \n - The `ServiceKind` and `ServiceVersion` specified in the service reference within the ClusterDefinition are not validated when using this approach. - If both `cluster` and `serviceDescriptor` are present, `cluster` will take precedence. \n Deprecated since v0.9 since `clusterDefinition.spec.connectionCredential` is deprecated, use `clusterRef` instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases." + description: "Specifies the name of the KubeBlocks Cluster being referenced. This is used when services from another KubeBlocks Cluster are consumed. \n By default, the referenced KubeBlocks Cluster's `clusterDefinition.spec.connectionCredential` will be utilized to bind to the current Component. This credential should include: `endpoint`, `port`, `username`, and `password`. \n Note: \n - The `ServiceKind` and `ServiceVersion` specified in the service reference within the ClusterDefinition are not validated when using this approach. - If both `cluster` and `serviceDescriptor` are present, `cluster` will take precedence. \n Deprecated since v0.9 since `clusterDefinition.spec.connectionCredential` is deprecated, use `clusterServiceSelector` instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases." type: "string" clusterServiceSelector: description: "ClusterRef is used to reference a service provided by another KubeBlocks Cluster. It specifies the ClusterService and the account credentials needed for access." @@ -2304,10 +2148,10 @@ spec: type: "string" podService: default: false - description: "Indicates whether to create a corresponding Service for each Pod of the selected Component. When set to true, a set of Services will be automatically generated for each Pod, and the `roleSelector` field will be ignored. \n The names of the generated Services will follow the same naming pattern: `$(serviceName)-$(podOrdinal)`. \n The podOrdinal is zero-based, meaning it starts from 0 for the first Pod and increments for each subsequent Pod. The total number of generated Services will be equal to the number of replicas specified for the Component. \n Example usage: \n ```yaml name: my-service serviceName: my-service generatePodOrdinalService: true spec: type: NodePort ports: - name: http port: 80 targetPort: 8080 ``` \n In this example, if the Component has 3 replicas, three Services will be generated: - my-service-0: Points to the first Pod (podOrdinal: 0) - my-service-1: Points to the second Pod (podOrdinal: 1) - my-service-2: Points to the third Pod (podOrdinal: 2) \n Each generated Service will have the specified spec configuration and will target its respective Pod. \n This feature is useful when you need to expose each Pod of a Component individually, allowing external access to specific instances of the Component." + description: "Indicates whether to create a corresponding Service for each Pod of the selected Component. When set to true, a set of Services will be automatically generated for each Pod, and the `roleSelector` field will be ignored. \n The names of the generated Services will follow the same suffix naming pattern: `$(serviceName)-$(podOrdinal)`. The total number of generated Services will be equal to the number of replicas specified for the Component. \n Example usage: \n ```yaml name: my-service serviceName: my-service podService: true disableAutoProvision: true spec: type: NodePort ports: - name: http port: 80 targetPort: 8080 ``` \n In this example, if the Component has 3 replicas, three Services will be generated: - my-service-0: Points to the first Pod (podOrdinal: 0) - my-service-1: Points to the second Pod (podOrdinal: 1) - my-service-2: Points to the third Pod (podOrdinal: 2) \n Each generated Service will have the specified spec configuration and will target its respective Pod. \n This feature is useful when you need to expose each Pod of a Component individually, allowing external access to specific instances of the Component." type: "boolean" roleSelector: - description: "Extends the above `serviceSpec.selector` by allowing you to specify defined role as selector for the service. When `roleSelector` is set, it adds a label selector \"kubeblocks.io/role: {roleSelector}\" to the `serviceSpec.selector`. Example usage: \n roleSelector: \"leader\" \n In this example, setting `roleSelector` to \"leader\" will add a label selector \"kubeblocks.io/role: leader\" to the `serviceSpec.selector`. This means that the service will select and route traffic to Pods with the label \"kubeblocks.io/role\" set to \"leader\". \n Note that if `generatePodOrdinalService` sets to true, RoleSelector will be ignored. The `generatePodOrdinalService` flag takes precedence over `roleSelector` and generates a service for each Pod." + description: "Extends the above `serviceSpec.selector` by allowing you to specify defined role as selector for the service. When `roleSelector` is set, it adds a label selector \"kubeblocks.io/role: {roleSelector}\" to the `serviceSpec.selector`. Example usage: \n roleSelector: \"leader\" \n In this example, setting `roleSelector` to \"leader\" will add a label selector \"kubeblocks.io/role: leader\" to the `serviceSpec.selector`. This means that the service will select and route traffic to Pods with the label \"kubeblocks.io/role\" set to \"leader\". \n Note that if `podService` sets to true, RoleSelector will be ignored. The `podService` flag takes precedence over `roleSelector` and generates a service for each Pod." type: "string" serviceName: description: "ServiceName defines the name of the underlying service object. If not specified, the default service name with different patterns will be used: \n - CLUSTER_NAME: for cluster-level services - CLUSTER_NAME-COMPONENT_NAME: for component-level services \n Only one default service name is allowed. Cannot be updated." diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/configconstraints.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/configconstraints.yaml index c42f26d0e..1d4d8e5ff 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/configconstraints.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/configconstraints.yaml @@ -342,6 +342,9 @@ spec: items: description: "ToolConfig specifies the settings of an init container that prepare tools for dynamic reload." properties: + asContainerImage: + description: "Indicates whether the tool image should be used as the container image for a sidecar. This is useful for large tool images, such as those for C++ tools, which may depend on numerous libraries (e.g., *.so files). \n If enabled, the tool image is deployed as a sidecar container image. \n Examples: ```yaml reloadToolsImage: mountPoint: /kb_tools toolConfigs: - name: kb-tools asContainerImage: true image: apecloud/oceanbase:4.2.0.0-100010032023083021 ``` \n generated containers: ```yaml initContainers: - name: install-config-manager-tool image: apecloud/kubeblocks-tools:${version} command: - cp - /bin/config_render - /opt/tools volumemounts: - name: kb-tools mountpath: /opt/tools \n containers: - name: config-manager image: apecloud/oceanbase:4.2.0.0-100010032023083021 imagePullPolicy: IfNotPresent command: - /opt/tools/reloader - --log-level - info - --operator-update-enable - --tcp - \"9901\" - --config - /opt/config-manager/config-manager.yaml volumemounts: - name: kb-tools mountpath: /opt/tools ```" + type: "boolean" command: description: "Specifies the command to be executed by the init container." items: @@ -355,8 +358,6 @@ spec: maxLength: 63 pattern: "^[a-z]([a-z0-9\\-]*[a-z0-9])?$" type: "string" - required: - - "command" type: "object" type: "array" required: diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/configurations.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/configurations.yaml index d93381772..570c116cf 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/configurations.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/configurations.yaml @@ -268,7 +268,7 @@ spec: pattern: "^[a-z0-9]([a-z0-9\\.\\-]*[a-z0-9])?$" type: "string" phase: - description: "Indicates the current status of the configuration item. This field is optional." + description: "Indicates the current status of the configuration item. \n Possible values include \"Creating\", \"Init\", \"Running\", \"Pending\", \"Merged\", \"MergeFailed\", \"FailedAndPause\", \"Upgrading\", \"Deleting\", \"FailedAndRetry\", \"Finished\"." enum: - "Creating" - "Init" diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/opsdefinitions.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/opsdefinitions.yaml index b9ae1e4d1..a5ff0b76d 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/opsdefinitions.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/opsdefinitions.yaml @@ -31,7 +31,7 @@ spec: name: "v1alpha1" schema: openAPIV3Schema: - description: "OpsDefinition is the Schema for the opsdefinitions API" + description: "OpsDefinition is the Schema for the OpsDefinitions API." properties: apiVersion: description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" @@ -42,32 +42,33 @@ spec: metadata: type: "object" spec: - description: "OpsDefinitionSpec defines the desired state of OpsDefinition" + description: "OpsDefinitionSpec defines the desired state of OpsDefinition." properties: actions: - description: "The actions to be executed in the opsRequest are performed sequentially." + description: "Specifies a list of OpsAction where each customized action is executed sequentially." items: + description: "OpsAction specifies a custom action defined in OpsDefinition for execution in a \"Custom\" OpsRequest. \n OpsAction can be of three types: \n - workload: Creates a Job or Pod to run custom scripts, ideal for isolated or long-running tasks. - exec: Executes commands directly within an existing container using the kubectl exec interface, suitable for immediate, short-lived operations. - resourceModifier: Modifies a K8s object using JSON patches, useful for updating the spec of some resource." properties: exec: - description: "Represents the exec action. This will call the kubectl exec interface." + description: "Specifies the configuration for a 'exec' action. It creates a Pod and invokes a 'kubectl exec' to run command inside a specified container with the target Pod." properties: backoffLimit: default: 0 - description: "Specifies the number of retries before marking the action as failed." + description: "Specifies the number of retries allowed before marking the action as failed." format: "int32" minimum: 0.0 type: "integer" command: - description: "The command to execute." + description: "The command to be executed via 'kubectl exec --'." items: type: "string" minItems: 1 type: "array" containerName: - description: "The name of the container in the target pod to execute the command. If not set, the first container is used." + description: "The name of the container in the target pod where the command should be executed. This corresponds to the `-c {containerName}` option in `kubectl exec`. \n If not set, the first container is used." type: "string" targetPodTemplate: - description: "Refers to the spec.targetPodTemplates. Defines the target pods that need to execute exec actions." + description: "Specifies a TargetPodTemplate defined in the `opsDefinition.spec.targetPodTemplates`." type: "string" required: - "command" @@ -82,22 +83,22 @@ spec: - "Ignore" - "Fail" default: "Fail" - description: "failurePolicy is the failure policy of the action. valid values Fail and Ignore. - Fail: if the action failed, the opsRequest will be failed. - Ignore: opsRequest will ignore the failure if the action is failed." + description: "Specifies the failure policy of the OpsAction. Valid values are: \n - \"Fail\": Marks the entire OpsRequest as failed if the action fails. - \"Ignore\": The OpsRequest continues processing despite the failure of the action." type: "string" name: - description: "action name." + description: "Specifies the name of the OpsAction." maxLength: 20 type: "string" parameters: - description: "Refers to the parameter of the ParametersSchema. The parameter will be used in the action. If it is a 'workload' and 'exec' Action, they will be injected into the corresponding environment variable. If it is a 'resourceModifier' Action, parameter can be referenced using $() in completionProbe.matchExpressions and JsonPatches[*].Value." + description: "Specifies the parameters for the OpsAction. Their usage varies based on the action type: \n - For 'workload' or 'exec' actions, parameters are injected as environment variables. - For 'resourceModifier' actions, parameter can be referenced using $() in fields `resourceModifier.completionProbe.matchExpressions` and `resourceModifier.jsonPatches[*].value`." items: type: "string" type: "array" resourceModifier: - description: "Specifies the resource modifier to update the custom resource." + description: "Specifies the configuration for a 'resourceModifier' action. This action allows for modifications to existing K8s objects. \n Note: This feature has not been implemented yet." properties: completionProbe: - description: "Provides a method to check if the action has been completed." + description: "Specifies a method to determine if the action has been completed. \n Note: This feature has not been implemented yet." properties: initialDelaySeconds: default: 5 @@ -109,23 +110,23 @@ spec: description: "Executes expressions regularly, based on the value of PeriodSeconds, to determine if the action has been completed." properties: failure: - description: "Defines a failure condition for an action using a Go template expression. Should evaluate to either `true` or `false`. The current resource object is parsed into the Go template. for example, you can use '{{ eq .spec.replicas 1 }}'." + description: "Specifies a failure condition for an action using a Go template expression. Should evaluate to either `true` or `false`. The current resource object is parsed into the Go template. for example, you can use '{{ eq .spec.replicas 1 }}'." type: "string" success: - description: "Defines a success condition for an action using a Go template expression. Should evaluate to either `true` or `false`. The current resource object is parsed into the Go template. for example, using '{{ eq .spec.replicas 1 }}'" + description: "Specifies a success condition for an action using a Go template expression. Should evaluate to either `true` or `false`. The current resource object is parsed into the Go template. for example, using '{{ eq .spec.replicas 1 }}'" type: "string" required: - "success" type: "object" periodSeconds: default: 5 - description: "Indicates the frequency (in seconds) at which the probe should be performed. The default value is 5 seconds, with a minimum value of 1." + description: "Specifies the frequency (in seconds) at which the probe should be performed. The default value is 5 seconds, with a minimum value of 1." format: "int32" minimum: 1.0 type: "integer" timeoutSeconds: default: 60 - description: "Defines the number of seconds after which the probe times out. The default value is 60 seconds, with a minimum value of 1." + description: "Specifies the number of seconds after which the probe times out. The default value is 60 seconds, with a minimum value of 1." format: "int32" minimum: 1.0 type: "integer" @@ -133,21 +134,21 @@ spec: - "matchExpressions" type: "object" jsonPatches: - description: "Defines the set of patches that are used to perform updates on the resource object." + description: "Specifies a list of patches for modifying the object." items: properties: op: - description: "Represents the type of JSON patch operation. It supports the following values: 'add', 'remove', 'replace'." + description: "Specifies the type of JSON patch operation. It supports the following values: 'add', 'remove', 'replace'." enum: - "add" - "remove" - "replace" type: "string" path: - description: "Represents the json patch path." + description: "Specifies the json patch path." type: "string" value: - description: "Represents the value to be used in the JSON patch operation." + description: "Specifies the value to be used in the JSON patch operation." type: "string" required: - "op" @@ -157,10 +158,10 @@ spec: minItems: 1 type: "array" resource: - description: "Refers to the Kubernetes objects that are required to be updated." + description: "Specifies the K8s object that is to be updated." properties: apiGroup: - description: "Defines the group for the resource being referenced. If not specified, the referenced Kind must belong to the core API group. For all third-party types, this is mandatory." + description: "Specifies the group for the resource being referenced. If not specified, the referenced Kind must belong to the core API group. For all third-party types, this is mandatory." type: "string" kind: description: "Specifies the type of resource being referenced." @@ -179,16 +180,16 @@ spec: - "resource" type: "object" workload: - description: "Indicates the workload action and a corresponding workload will be created to execute this action." + description: "Specifies the configuration for a 'workload' action. This action leads to the creation of a K8s workload, such as a Pod or Job, to execute specified tasks." properties: backoffLimit: default: 0 - description: "Specifies the number of retries before marking the action as failed." + description: "Specifies the number of retries allowed before marking the action as failed." format: "int32" minimum: 0.0 type: "integer" podSpec: - description: "Represents the pod spec of the workload." + description: "Specifies the PodSpec of the 'workload' action." properties: activeDeadlineSeconds: description: "Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer." @@ -4480,10 +4481,10 @@ spec: - "containers" type: "object" targetPodTemplate: - description: "Refers to the spec.targetPodTemplates. This field defines the target pod for the current action." + description: "Specifies a TargetPodTemplate defined in the `opsDefinition.spec.targetPodTemplates`." type: "string" type: - description: "Defines the workload type of the action. Valid values include \"Job\" and \"Pod\". \"Job\" creates a job to execute the action. \"Pod\" creates a pod to execute the action. Note that unlike jobs, if a pod is manually deleted, it will not consume backoffLimit times." + description: "Defines the workload type of the action. Valid values include \"Job\" and \"Pod\". \n - \"Job\": Creates a Job to execute the action. - \"Pod\": Creates a Pod to execute the action. Note: unlike Jobs, manually deleting a Pod does not affect the `backoffLimit`." enum: - "Job" - "Pod" @@ -4504,18 +4505,18 @@ spec: - "name" x-kubernetes-list-type: "map" componentDefinitionRefs: - description: "Specifies the types of componentDefinitions supported by the operation. It can reference certain variables of the componentDefinition. If set, any component not meeting these conditions will be intercepted." + description: "Specifies a list of ComponentDefinition for Components associated with this OpsDefinition. It also includes connection credentials (address and account) for each Component." items: properties: accountName: - description: "Represents the account name of the component. If provided, the account username and password will be injected into the job environment variables `KB_ACCOUNT_USERNAME` and `KB_ACCOUNT_PASSWORD`." + description: "Specifies the account name associated with the Component. If set, the corresponding account username and password are injected into containers' environment variables `KB_ACCOUNT_USERNAME` and `KB_ACCOUNT_PASSWORD`." type: "string" name: - description: "Refers to the name of the component definition. This is a required field with a maximum length of 32 characters." + description: "Specifies the name of the ComponentDefinition." maxLength: 32 type: "string" serviceName: - description: "References the name of the service. If provided, the service name and ports will be mapped to the job environment variables `KB_COMP_SVC_NAME` and `KB_COMP_SVC_PORT_$(portName)`. Note that the portName will replace the characters '-' with '_' and convert to uppercase." + description: "Specifies the name of the Service. If set, the service name is injected as the `KB_COMP_SVC_NAME` environment variable in the containers, and each service port is mapped to a corresponding environment variable named `KB_COMP_SVC_PORT_$(portName)`. The `portName` is transformed by replacing '-' with '_' and converting to uppercase." type: "string" required: - "name" @@ -4525,25 +4526,25 @@ spec: - "name" x-kubernetes-list-type: "map" parametersSchema: - description: "Describes the schema used for validation, pruning, and defaulting." + description: "Specifies the schema for validating the data types and value ranges of parameters in OpsActions before their usage." properties: openAPIV3Schema: - description: "Defines the OpenAPI v3 schema used for the parameter schema. The supported property types include: - string - number - integer - array: Note that only items of string type are supported." + description: "Defines the schema for parameters using the OpenAPI v3. The supported property types include: - string - number - integer - array: Note that only items of string type are supported." type: "object" x-kubernetes-preserve-unknown-fields: true type: "object" preConditions: - description: "Specifies the preconditions that must be met to run the actions for the operation. if set, it will check the condition before the component run this operation." + description: "Specifies the preconditions that must be met to run the actions for the operation. if set, it will check the condition before the Component runs this operation. Example: ```yaml preConditions: - rule: expression: '{{ eq .component.status.phase \"Running\" }}' message: Component is not in Running status. ```" items: properties: rule: - description: "Defines the conditions under which the operation can be executed." + description: "Specifies the conditions that must be met for the operation to execute." properties: expression: - description: "Defines how the operation can be executed using a Go template expression. Should return either `true` or `false`. The built-in objects available for use in the expression include: - `params`: These are the input parameters. - `cluster`: This is the referenced cluster object. - `component`: This is the referenced component object." + description: "Specifies a Go template expression that determines how the operation can be executed. The return value must be either `true` or `false`. Available built-in objects that can be referenced in the expression include: \n - `params`: Input parameters. - `cluster`: The referenced Cluster object. - `component`: The referenced Component object." type: "string" message: - description: "Reported if the rule is not matched." + description: "Specifies the error or status message reported if the `expression` does not evaluate to `true`." type: "string" required: - "expression" @@ -4552,26 +4553,26 @@ spec: type: "object" type: "array" targetPodTemplates: - description: "Defines the targetPodTemplate to be referenced by the action." + description: "Specifies a list of TargetPodTemplate, each designed to select a specific Pod and extract selected runtime info from its PodSpec. The extracted information, such as environment variables, volumes and tolerations, are then injected into Jobs or Pods that execute the OpsActions defined in `actions`." items: properties: name: - description: "Represents the template name." + description: "Specifies the name of the TargetPodTemplate." maxLength: 32 type: "string" podSelector: - description: "Used to identify the target pod." + description: "Used to select the target Pod from which environment variables and volumes are extracted from its PodSpec." properties: availability: default: "PreferredAvailable" - description: "Indicates the desired availability status of the pods to be selected. valid values: - 'Available': selects only available pods and terminates the action if none are found. - 'PreferredAvailable': prioritizes the selection of available pods。 - 'None': there are no requirements for the availability of pods." + description: "Specifies the pod selection criteria based on their availability: - 'Available': Only selects available pods, and terminates the action if none are found. - 'PreferredAvailable': Prioritizes available pods but considers others if none available. - 'None': No availability requirements." enum: - "Available" - "PreferredAvailable" - "None" type: "string" role: - description: "Specifies the role of the target pod." + description: "Specifies the role of the target Pod." type: "string" selectionPolicy: default: "Any" @@ -4582,29 +4583,29 @@ spec: type: "string" type: "object" vars: - description: "Defines the environment variables that need to be referenced from the target component pod, and will be injected into the pod's containers." + description: "Specifies a list of environment variables to be extracted from a selected Pod, and injected into the containers executing each OpsAction." items: properties: name: - description: "Specifies the name of the variable. This must be a C_IDENTIFIER." + description: "Specifies the name of the environment variable to be injected into Pods executing OpsActions. It must conform to the C_IDENTIFIER format, which includes only alphanumeric characters and underscores, and cannot begin with a digit." type: "string" valueFrom: - description: "Defines the source for the variable's value." + description: "Specifies the source of the environment variable's value." properties: envRef: description: "Specifies a reference to a specific environment variable within a container. Used to specify the source of the variable, which can be either \"env\" or \"envFrom\"." properties: containerName: - description: "Specifies the name of the container as defined in the componentDefinition or as injected by the kubeBlocks controller. If not specified, the first container will be used by default." + description: "Specifies the container name in the target Pod. If not specified, the first container will be used by default." type: "string" envName: - description: "Defines the name of the environment variable." + description: "Defines the name of the environment variable. This name can originate from an 'env' entry or be a data key from an 'envFrom' source." type: "string" required: - "envName" type: "object" fieldPath: - description: "Represents the JSONPath of the target pod. This is used to specify the exact location of the data within the JSON structure of the pod." + description: "Represents the JSONPath expression pointing to the specific data within the JSON structure of the target Pod. It is used to extract precise data locations for operations on the Pod." type: "string" type: "object" x-kubernetes-validations: @@ -4616,7 +4617,7 @@ spec: type: "object" type: "array" volumeMounts: - description: "Specifies the mount points for the volumes defined in the `Volumes` section for the action pod." + description: "Specifies a list of volumes, along with their respective mount points, that are to be extracted from a selected Pod, and mounted onto the containers executing each OpsAction. This allows the containers to access shared or persistent data necessary for the operation." items: description: "VolumeMount describes a mounting of a Volume within a container." properties: @@ -4661,11 +4662,11 @@ spec: description: "Provides additional information about the current phase." type: "string" observedGeneration: - description: "Refers to the most recent generation observed for this OpsDefinition." + description: "Represents the most recent generation observed of this OpsDefinition." format: "int64" type: "integer" phase: - description: "Represents the current state of the OpsDefinition. Valid values are ``, `Available`, `Unavailable`. When the state is `Available`, the OpsDefinition is ready and can be used for related objects." + description: "Represents the current state of the OpsDefinition. Valid values are \"\", \"Available\", \"Unavailable\". When it equals to \"Available\", the OpsDefinition is ready and can be used in a \"Custom\" OpsRequest." enum: - "Available" - "Unavailable" diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/opsrequests.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/opsrequests.yaml index 6b5d04b0f..6ad82852b 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/opsrequests.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/opsrequests.yaml @@ -57,52 +57,52 @@ spec: description: "OpsRequestSpec defines the desired state of OpsRequest" properties: backupSpec: - description: "Defines how to backup the cluster." + description: "Specifies the parameters to backup a Cluster." properties: backupMethod: - description: "Defines the backup method that is defined in backupPolicy." + description: "Specifies the name of BackupMethod. The specified BackupMethod must be defined in the BackupPolicy." type: "string" backupName: - description: "Specifies the name of the backup." + description: "Specifies the name of the Backup custom resource." type: "string" backupPolicyName: - description: "Indicates the backupPolicy applied to perform this backup." + description: "Indicates the name of the BackupPolicy applied to perform this Backup." type: "string" deletionPolicy: default: "Delete" - description: "Determines whether the backup contents stored in backup repository should be deleted when the backup custom resource is deleted. Supported values are `Retain` and `Delete`. - `Retain` means that the backup content and its physical snapshot on backup repository are kept. - `Delete` means that the backup content and its physical snapshot on backup repository are deleted." + description: "Determines whether the backup contents stored in backup repository should be deleted when the Backup custom resource is deleted. Supported values are `Retain` and `Delete`. - `Retain` means that the backup content and its physical snapshot on backup repository are kept. - `Delete` means that the backup content and its physical snapshot on backup repository are deleted." enum: - "Delete" - "Retain" type: "string" parentBackupName: - description: "If backupType is incremental, parentBackupName is required." + description: "If the specified BackupMethod is incremental, `parentBackupName` is required." type: "string" retentionPeriod: - description: "Determines a duration up to which the backup should be kept. Controller will remove all backups that are older than the RetentionPeriod. For example, RetentionPeriod of `30d` will keep only the backups of last 30 days. Sample duration format: \n - years: 2y - months: 6mo - days: 30d - hours: 12h - minutes: 30m \n You can also combine the above durations. For example: 30d12h30m. If not set, the backup will be kept forever." + description: "Determines the duration for which the Backup custom resources should be retained. \n The controller will automatically remove all Backup objects that are older than the specified RetentionPeriod. For example, RetentionPeriod of `30d` will keep only the Backup objects of last 30 days. Sample duration format: \n - years: 2y - months: 6mo - days: 30d - hours: 12h - minutes: 30m \n You can also combine the above durations. For example: 30d12h30m. If not set, the Backup objects will be kept forever. \n If the `deletionPolicy` is set to 'Delete', then the associated backup data will also be deleted along with the Backup object. Otherwise, only the Backup custom resource will be deleted." type: "string" type: "object" cancel: - description: "Defines the action to cancel the `Pending/Creating/Running` opsRequest, supported types: `VerticalScaling/HorizontalScaling`. Once set to true, this opsRequest will be canceled and modifying this property again will not take effect." + description: "Indicates whether the current operation should be canceled and terminated gracefully if it's in the \"Pending\", \"Creating\", or \"Running\" state. \n This field applies only to \"VerticalScaling\" and \"HorizontalScaling\" opsRequests. \n Note: Setting `cancel` to true is irreversible; further modifications to this field are ineffective." type: "boolean" clusterRef: - description: "References the cluster object." + description: "Specifies the name of the Cluster resource that this operation is targeting." type: "string" x-kubernetes-validations: - message: "forbidden to update spec.clusterRef" rule: "self == oldSelf" customSpec: - description: "Specifies a custom operation as defined by OpsDefinition." + description: "Specifies a custom operation defined by OpsDefinition." properties: components: - description: "Defines which components need to perform the actions defined by this OpsDefinition. At least one component is required. The components are identified by their name and can be merged or retained." + description: "Specifies the components and their parameters for executing custom actions as defined in OpsDefinition. Requires at least one component." items: properties: - name: - description: "Specifies the unique identifier of the cluster component" + componentName: + description: "Specifies the name of the Component." type: "string" parameters: - description: "Represents the parameters for this operation as declared in the opsDefinition.spec.parametersSchema." + description: "Specifies the parameters that match the schema specified in the `opsDefinition.spec.parametersSchema`." items: properties: name: @@ -120,59 +120,62 @@ spec: - "name" x-kubernetes-list-type: "map" required: - - "name" + - "componentName" type: "object" + maxItems: 1024 minItems: 1 type: "array" x-kubernetes-list-map-keys: - - "name" + - "componentName" x-kubernetes-list-type: "map" opsDefinitionRef: - description: "Is a reference to an OpsDefinition." + description: "Specifies the name of the OpsDefinition." type: "string" parallelism: anyOf: - type: "integer" - type: "string" - description: "Defines the execution concurrency. By default, all incoming Components will be executed simultaneously. The value can be an absolute number (e.g., 5) or a percentage of desired components (e.g., 10%). The absolute number is calculated from the percentage by rounding up. For instance, if the percentage value is 10% and the components length is 1, the calculated number will be rounded up to 1." + description: "Specifies the maximum number of components to be operated on concurrently to mitigate performance impact on clusters with multiple components. \n It accepts an absolute number (e.g., 5) or a percentage of components to execute in parallel (e.g., \"10%\"). Percentages are rounded up to the nearest whole number of components. For example, if \"10%\" results in less than one, it rounds up to 1. \n When unspecified, all components are processed simultaneously by default. \n Note: This feature is not implemented yet." x-kubernetes-int-or-string: true serviceAccountName: + description: "Specifies the name of the ServiceAccount to be used for executing the custom operation." type: "string" required: - "components" - "opsDefinitionRef" type: "object" expose: - description: "Defines services the component needs to expose." + description: "Lists Expose objects, each specifying a Component and its services to be exposed." items: properties: componentName: - description: "Specifies the name of the cluster component." + description: "Specifies the name of the Component." type: "string" services: - description: "A list of services that are to be exposed or removed. If componentNamem is not specified, each `OpsService` in the list must specify ports and selectors." + description: "Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`. On the other hand, when an OpsService is unexposed, the corresponding ClusterService will be removed from `cluster.spec.services`. \n Note: If `componentName` is not specified, the `ports` and `selector` fields must be provided in each OpsService definition." items: + description: "OpsService represents the parameters to dynamically create or remove a ClusterService in the `cluster.spec.services` array." properties: annotations: additionalProperties: type: "string" - description: "Contains cloud provider related parameters if ServiceType is LoadBalancer. More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer." + description: "Contains cloud provider related parameters if ServiceType is LoadBalancer. \n More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer." type: "object" ipFamilies: - description: "IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are \"IPv4\" and \"IPv6\". This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to \"headless\" services. This field will be wiped when updating a Service to type ExternalName. \n This field may hold a maximum of two entries (dual-stack families, in either order). These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field." + description: "A list of IP families (e.g., IPv4, IPv6) assigned to this Service. \n Usually assigned automatically based on the cluster configuration and the `ipFamilyPolicy` field. If specified manually, the requested IP family must be available in the cluster and allowed by the `ipFamilyPolicy`. If the requested IP family is not available or not allowed, the Service creation will fail. \n Valid values: \n - \"IPv4\" - \"IPv6\" \n This field may hold a maximum of two entries (dual-stack families, in either order). \n Common combinations of `ipFamilies` and `ipFamilyPolicy` are: \n - ipFamilies=[] + ipFamilyPolicy=\"PreferDualStack\" : The Service prefers dual-stack but can fall back to single-stack if the cluster does not support dual-stack. The IP family is automatically assigned based on the cluster configuration. - ipFamilies=[\"IPV4\",\"IPV6\"] + ipFamilyPolicy=\"RequiredDualStack\" : The Service requires dual-stack and will only be created if the cluster supports both IPv4 and IPv6. The primary IP family is IPV4. - ipFamilies=[\"IPV6\",\"IPV4\"] + ipFamilyPolicy=\"RequiredDualStack\" : The Service requires dual-stack and will only be created if the cluster supports both IPv4 and IPv6. The primary IP family is IPV6. - ipFamilies=[\"IPV4\"] + ipFamilyPolicy=\"SingleStack\" : The Service uses a single-stack with IPv4 only. - ipFamilies=[\"IPV6\"] + ipFamilyPolicy=\"SingleStack\" : The Service uses a single-stack with IPv6 only." items: description: "IPFamily represents the IP Family (IPv4 or IPv6). This type is used to express the family of an IP expressed by a type (e.g. service.spec.ipFamilies)." type: "string" type: "array" x-kubernetes-list-type: "atomic" ipFamilyPolicy: - description: "IPFamilyPolicy represents the dual-stack-ness requested or required by this Service. If there is no value provided, then this field will be set to SingleStack. Services can be \"SingleStack\" (a single IP family), \"PreferDualStack\" (two IP families on dual-stack configured clusters or a single IP family on single-stack clusters), or \"RequireDualStack\" (two IP families on dual-stack configured clusters, otherwise fail). The ipFamilies and clusterIPs fields depend on the value of this field. This field will be wiped when updating a service to type ExternalName." + description: "Specifies whether the Service should use a single IP family (SingleStack) or two IP families (DualStack). \n Possible values: \n - 'SingleStack' (default) : The Service uses a single IP family. If no value is provided, IPFamilyPolicy defaults to SingleStack. - 'PreferDualStack' : The Service prefers to use two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. - 'RequiredDualStack' : The Service requires two IP families on dual-stack configured clusters. If the cluster is not configured for dual-stack, the Service creation fails." type: "string" name: - description: "Specifies the name of the service. This name is used by others to refer to this service (e.g., connection credential). Note: This field cannot be updated." + description: "Specifies the name of the Service. This name is used to set `clusterService.name`. \n Note: This field cannot be updated." type: "string" ports: - description: "Lists the ports that are exposed by this service. If not provided, the default Services Ports defined in the ClusterDefinition or ComponentDefinition that are neither of NodePort nor LoadBalancer service type will be used. If there is no corresponding Service defined in the ClusterDefinition or ComponentDefinition, the expose operation will fail. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies" + description: "Specifies Port definitions that are to be exposed by a ClusterService. \n If not specified, the Port definitions from non-NodePort and non-LoadBalancer type ComponentService defined in the ComponentDefinition (`componentDefinition.spec.services`) will be used. If no matching ComponentService is found, the expose operation will fail. \n More info: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports" items: description: "ServicePort contains information on service's port." properties: @@ -209,52 +212,48 @@ spec: - "protocol" x-kubernetes-list-type: "map" roleSelector: - description: "Allows you to specify a defined role as a selector for the service, extending the ServiceSpec.Selector." + description: "Specifies a role to target with the service. If specified, the service will only be exposed to pods with the matching role. \n Note: At least one of 'roleSelector' or 'selector' must be specified. If both are specified, a pod must match both conditions to be selected." type: "string" selector: additionalProperties: type: "string" - description: "Routes service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. This only applies to types ClusterIP, NodePort, and LoadBalancer and is ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/" + description: "Routes service traffic to pods with matching label keys and values. If specified, the service will only be exposed to pods matching the selector. \n Note: At least one of 'roleSelector' or 'selector' must be specified. If both are specified, a pod must match both conditions to be selected." type: "object" x-kubernetes-map-type: "atomic" serviceType: - description: "Determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types." + description: "Determines how the Service is exposed. Defaults to 'ClusterIP'. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. \n - `ClusterIP`: allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. - `NodePort`: builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer`: builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. \n Note: although K8s Service type allows the 'ExternalName' type, it is not a valid option for the expose operation. \n For more info, see: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types." type: "string" required: - "name" type: "object" type: "array" switch: - description: "Controls the expose operation. If set to Enable, the corresponding service will be exposed. Conversely, if set to Disable, the service will be removed." + description: "Indicates whether the services will be exposed. 'Enable' exposes the services. while 'Disable' removes the exposed Service." enum: - "Enable" - "Disable" type: "string" required: - - "componentName" - "services" - "switch" type: "object" type: "array" - x-kubernetes-list-map-keys: - - "componentName" - x-kubernetes-list-type: "map" force: - description: "Indicates if pre-checks should be bypassed, allowing the opsRequest to execute immediately. If set to true, pre-checks are skipped except for 'Start' type. Particularly useful when concurrent execution of VerticalScaling and HorizontalScaling opsRequests is required, achievable through the use of the Force flag." + description: "Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true. \n This is useful for concurrent execution of 'VerticalScaling' and 'HorizontalScaling' opsRequests. By setting `force` to true, you can bypass the default checks and demand these opsRequests to run simultaneously. \n Note: Once set, the `force` field is immutable and cannot be updated." type: "boolean" x-kubernetes-validations: - message: "forbidden to update spec.force" rule: "self == oldSelf" horizontalScaling: - description: "Defines what component need to horizontal scale the specified replicas." + description: "Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options." items: - description: "HorizontalScaling defines the variables of horizontal scaling operation" + description: "HorizontalScaling defines the parameters of a horizontal scaling operation." properties: componentName: - description: "Specifies the name of the cluster component." + description: "Specifies the name of the Component." type: "string" instances: - description: "Specifies instances to be added and/or deleted for the workloads. Name and Replicas should be provided. Other fields will simply be ignored. The Replicas will be overridden if an existing InstanceTemplate is matched by Name. Or the InstanceTemplate will be added as a new one." + description: "Contains a list of InstanceTemplate objects. Each InstanceTemplate object allows for modifying replica counts or specifying configurations for new instances during scaling. \n The field supports two main use cases: \n - Modifying replica count: Specify the desired replica count for existing instances with a particular configuration using Name and Replicas fields. To modify the replica count, the Name and Replicas fields of the InstanceTemplate object should be provided. Only these fields are used for matching and adjusting replicas; other fields are ignored. The Replicas value overrides any existing count. - Configuring new instances: Define the configuration for new instances added during scaling, including resource requirements, labels, annotations, etc. New instances are created based on the provided InstanceTemplate." items: description: "InstanceTemplate allows customization of individual replica configurations within a Component, without altering the base component template defined in ClusterComponentSpec. It enables the application of distinct settings to specific instances (replicas), providing flexibility while maintaining a common configuration baseline." properties: @@ -437,80 +436,21 @@ spec: volumeClaimTemplates: description: "Defines VolumeClaimTemplates to override. Add new or override existing volume claim templates." items: - description: "PersistentVolumeClaim is a user's request for and claim to a persistent volume" properties: - apiVersion: - description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" - type: "string" - kind: - description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + name: + description: "Refers to the name of a volumeMount defined in either: \n - `componentDefinition.spec.runtime.containers[*].volumeMounts` - `clusterDefinition.spec.componentDefs[*].podSpec.containers[*].volumeMounts` (deprecated) \n The value of `name` must match the `name` field of a volumeMount specified in the corresponding `volumeMounts` array." type: "string" - metadata: - description: "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" - properties: - annotations: - additionalProperties: - type: "string" - type: "object" - finalizers: - items: - type: "string" - type: "array" - labels: - additionalProperties: - type: "string" - type: "object" - name: - type: "string" - namespace: - type: "string" - type: "object" spec: - description: "spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" + description: "Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. \n When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field." properties: accessModes: - description: "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" + description: "Contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1." items: type: "string" type: "array" - dataSource: - description: "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - required: - - "kind" - - "name" - type: "object" - x-kubernetes-map-type: "atomic" - dataSourceRef: - description: "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - namespace: - description: "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - type: "string" - required: - - "kind" - - "name" - type: "object" + x-kubernetes-preserve-unknown-fields: true resources: - description: "resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources" + description: "Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources." properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." @@ -546,113 +486,16 @@ spec: description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" - selector: - description: "selector is a label query over volumes to consider for binding." - properties: - matchExpressions: - description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." - items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." - properties: - key: - description: "key is the label key that the selector applies to." - type: "string" - operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." - type: "string" - values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." - items: - type: "string" - type: "array" - required: - - "key" - - "operator" - type: "object" - type: "array" - matchLabels: - additionalProperties: - type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." - type: "object" - type: "object" - x-kubernetes-map-type: "atomic" + x-kubernetes-preserve-unknown-fields: true storageClassName: - description: "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1" + description: "The name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1." type: "string" volumeMode: - description: "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec." - type: "string" - volumeName: - description: "volumeName is the binding reference to the PersistentVolume backing this claim." - type: "string" - type: "object" - status: - description: "status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" - properties: - accessModes: - description: "accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" - items: - type: "string" - type: "array" - allocatedResourceStatuses: - additionalProperties: - description: "When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it." - type: "string" - description: "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. \n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature." - type: "object" - x-kubernetes-map-type: "granular" - allocatedResources: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. \n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature." - type: "object" - capacity: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "capacity represents the actual resources of the underlying volume." - type: "object" - conditions: - description: "conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'." - items: - description: "PersistentVolumeClaimCondition contains details about state of pvc" - properties: - lastProbeTime: - description: "lastProbeTime is the time we probed the condition." - format: "date-time" - type: "string" - lastTransitionTime: - description: "lastTransitionTime is the time the condition transitioned from one status to another." - format: "date-time" - type: "string" - message: - description: "message is the human-readable message indicating details about last transition." - type: "string" - reason: - description: "reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized." - type: "string" - status: - type: "string" - type: - description: "PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type" - type: "string" - required: - - "status" - - "type" - type: "object" - type: "array" - phase: - description: "phase represents the current phase of PersistentVolumeClaim." + description: "Defines what type of volume is required by the claim, either Block or Filesystem." type: "string" type: "object" + required: + - "name" type: "object" type: "array" volumeMounts: @@ -1656,12 +1499,12 @@ spec: type: "object" type: "array" offlineInstances: - description: "Specifies instances to be scaled in with dedicated names in the list." + description: "Specifies the names of instances to be scaled down. This provides control over which specific instances are targeted for termination when reducing the replica count." items: type: "string" type: "array" replicas: - description: "Specifies the number of replicas for the workloads." + description: "Specifies the number of total replicas." format: "int32" minimum: 0.0 type: "integer" @@ -1677,17 +1520,17 @@ spec: - message: "forbidden to update spec.horizontalScaling" rule: "self == oldSelf" rebuildFrom: - description: "Specifies the instances that require re-creation." + description: "Specifies the parameters to rebuild some instances. Rebuilding an instance involves restoring its data from a backup or another database replica. The instances being rebuilt usually serve as standby in the cluster. Hence rebuilding instances is often also referred to as \"standby reconstruction\"." items: properties: backupName: - description: "Indicates the name of the backup from which to recover. Currently, only a full physical backup is supported unless your component only has one replica. Such as 'xtrabackup' is full physical backup for mysql and 'mysqldump' is not. And if no specified backupName, the instance will be recreated with empty 'PersistentVolumes'." + description: "Indicates the name of the Backup custom resource from which to recover the instance. Defaults to an empty PersistentVolume if unspecified. \n Note: - Only full physical backups are supported for multi-replica Components (e.g., 'xtrabackup' for MySQL). - Logical backups (e.g., 'mysqldump' for MySQL) are unsupported in the current version." type: "string" componentName: - description: "Specifies the name of the cluster component." + description: "Specifies the name of the Component." type: "string" envForRestore: - description: "List of environment variables to set in the container for restore. These will be merged with the env of Backup and ActionSet. \n The priority of merging is as follows: `Restore env > Backup env > ActionSet env`." + description: "Defines container environment variables for the restore process. merged with the ones specified in the Backup and ActionSet resources. \n Merge priority: Restore env > Backup env > ActionSet env. \n Purpose: Some databases require different configurations when being restored as a standby compared to being restored as a primary. For example, when restoring MySQL as a replica, you need to set `skip_slave_start=\"ON\"` for 5.7 or `skip_replica_start=\"ON\"` for 8.0. Allowing environment variables to be passed in makes it more convenient to control these behavioral differences during the restore process." items: description: "EnvVar represents an environment variable present in a Container." properties: @@ -1772,7 +1615,7 @@ spec: type: "array" x-kubernetes-preserve-unknown-fields: true instances: - description: "Defines the instances that need to be rebuilt." + description: "Specifies the instances (Pods) that need to be rebuilt, typically operating as standbys." items: properties: name: @@ -1797,27 +1640,27 @@ spec: - message: "forbidden to update spec.rebuildFrom" rule: "self == oldSelf" reconfigure: - description: "Deprecated: replace by reconfigures. Defines the variables that need to input when updating configuration." + description: "Specifies a component and its configuration updates. \n This field is deprecated and replaced by `reconfigures`." properties: componentName: - description: "Specifies the name of the cluster component." + description: "Specifies the name of the Component." type: "string" configurations: - description: "Specifies the components that will perform the operation." + description: "Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated." items: properties: keys: - description: "Sets the parameters to be updated. It should contain at least one item. The keys are merged and retained during patch operations." + description: "Sets the configuration files and their associated parameters that need to be updated. It should contain at least one item." items: properties: fileContent: - description: "Represents the content of the configuration file. This field is used to update the entire content of the file." + description: "Specifies the content of the entire configuration file. This field is used to update the complete configuration file. \n Either the `parameters` field or the `fileContent` field must be set, but not both." type: "string" key: - description: "Represents the unique identifier for the ConfigMap." + description: "Represents a key in the configuration template(as ConfigMap). Each key in the ConfigMap corresponds to a specific configuration file." type: "string" parameters: - description: "Defines a list of key-value pairs for a single configuration file. These parameters are used to update the specified configuration settings." + description: "Specifies a list of key-value pairs representing parameters and their corresponding values within a single configuration file. This field is used to override or set the values of parameters without modifying the entire configuration file. \n Either the `parameters` field or the `fileContent` field must be set, but not both." items: properties: key: @@ -1844,7 +1687,7 @@ spec: pattern: "^[a-z0-9]([a-z0-9\\.\\-]*[a-z0-9])?$" type: "string" policy: - description: "Defines the upgrade policy for the configuration. This field is optional." + description: "Defines the upgrade policy for the configuration." enum: - "simple" - "parallel" @@ -1866,35 +1709,30 @@ spec: - "componentName" - "configurations" type: "object" - x-kubernetes-validations: - - message: "forbidden to update spec.reconfigure" - rule: "self == oldSelf" - - message: "Value can not be empty" - rule: "self.configurations.size() > 0" reconfigures: - description: "Defines the variables that need to input when updating configuration." + description: "Lists Reconfigure objects, each specifying a Component and its configuration updates." items: - description: "Reconfigure represents the variables required for updating a configuration." + description: "Reconfigure defines the parameters for updating a Component's configuration." properties: componentName: - description: "Specifies the name of the cluster component." + description: "Specifies the name of the Component." type: "string" configurations: - description: "Specifies the components that will perform the operation." + description: "Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated." items: properties: keys: - description: "Sets the parameters to be updated. It should contain at least one item. The keys are merged and retained during patch operations." + description: "Sets the configuration files and their associated parameters that need to be updated. It should contain at least one item." items: properties: fileContent: - description: "Represents the content of the configuration file. This field is used to update the entire content of the file." + description: "Specifies the content of the entire configuration file. This field is used to update the complete configuration file. \n Either the `parameters` field or the `fileContent` field must be set, but not both." type: "string" key: - description: "Represents the unique identifier for the ConfigMap." + description: "Represents a key in the configuration template(as ConfigMap). Each key in the ConfigMap corresponds to a specific configuration file." type: "string" parameters: - description: "Defines a list of key-value pairs for a single configuration file. These parameters are used to update the specified configuration settings." + description: "Specifies a list of key-value pairs representing parameters and their corresponding values within a single configuration file. This field is used to override or set the values of parameters without modifying the entire configuration file. \n Either the `parameters` field or the `fileContent` field must be set, but not both." items: properties: key: @@ -1921,7 +1759,7 @@ spec: pattern: "^[a-z0-9]([a-z0-9\\.\\-]*[a-z0-9])?$" type: "string" policy: - description: "Defines the upgrade policy for the configuration. This field is optional." + description: "Defines the upgrade policy for the configuration." enum: - "simple" - "parallel" @@ -1947,17 +1785,21 @@ spec: x-kubernetes-list-map-keys: - "componentName" x-kubernetes-list-type: "map" + x-kubernetes-validations: + - message: "forbidden to update spec.reconfigure" + rule: "self == oldSelf" restart: - description: "Restarts the specified components." + description: "Lists Components to be restarted." items: - description: "ComponentOps represents the common variables required for operations within the scope of a component." + description: "ComponentOps specifies the Component to be operated on." properties: componentName: - description: "Specifies the name of the cluster component." + description: "Specifies the name of the Component." type: "string" required: - "componentName" type: "object" + maxItems: 1024 type: "array" x-kubernetes-list-map-keys: - "componentName" @@ -1969,7 +1811,7 @@ spec: description: "Cluster RestoreFrom backup or point in time." properties: backup: - description: "Refers to the backup name and component name used for restoration. Supports recovery of multiple components." + description: "Refers to the backup name and component name used for restoration. Supports recovery of multiple Components." items: properties: ref: @@ -2007,20 +1849,20 @@ spec: - message: "forbidden to update spec.restoreFrom" rule: "self == oldSelf" restoreSpec: - description: "Defines how to restore the cluster. Note that this restore operation will roll back cluster services." + description: "Specifies the parameters to restore a Cluster. Note that this restore operation will roll back cluster services." properties: backupName: - description: "Specifies the name of the backup." + description: "Specifies the name of the Backup custom resource." type: "string" - effectiveCommonComponentDef: - description: "Indicates if this backup will be restored for all components which refer to common ComponentDefinition." + doReadyRestoreAfterClusterRunning: + description: "If set to true, the recovery process in the PostReady phase will be performed after the cluster is running successfully. otherwise, it will be performed after component is running." type: "boolean" restoreTimeStr: - description: "Defines the point in time to restore." + description: "Specifies the point in time to which the restore should be performed. Supported time formats: \n - RFC3339 format, e.g. \"2023-11-25T18:52:53Z\" - A human-readable date-time format, e.g. \"Jul 25,2023 18:52:53 UTC+0800\"" type: "string" volumeRestorePolicy: default: "Parallel" - description: "Specifies the volume claim restore policy, support values: [Serial, Parallel]" + description: "Specifies the policy for restoring volume claims of a Component's Pods. It determines whether the volume claims should be restored sequentially (one by one) or in parallel (all at once). Support values: \n - \"Serial\" - \"Parallel\"" enum: - "Serial" - "Parallel" @@ -2029,16 +1871,16 @@ spec: - "backupName" type: "object" scriptSpec: - description: "Defines the script to be executed." + description: "Specifies the image and scripts for executing engine-specific operations such as creating databases or users. It supports limited engines including MySQL, PostgreSQL, Redis, MongoDB. \n ScriptSpec has been replaced by the more versatile OpsDefinition. It is recommended to use OpsDefinition instead. ScriptSpec is deprecated and will be removed in a future version." properties: componentName: - description: "Specifies the name of the cluster component." + description: "Specifies the name of the Component." type: "string" image: - description: "Specifies the image to be used for the exec command. By default, the image of kubeblocks-datascript is used." + description: "Specifies the image to be used to execute scripts. \n By default, the image \"apecloud/kubeblocks-datascript:latest\" is used." type: "string" script: - description: "Defines the script to be executed." + description: "Defines the content of scripts to be executed. \n All scripts specified in this field will be executed in the order they are provided. \n Note: this field cannot be modified once set." items: type: "string" type: "array" @@ -2046,10 +1888,10 @@ spec: - message: "forbidden to update spec.scriptSpec.script" rule: "self == oldSelf" scriptFrom: - description: "Defines the script to be executed from a configMap or secret." + description: "Specifies the sources of the scripts to be executed. Each script can be imported either from a ConfigMap or a Secret. \n All scripts obtained from the sources specified in this field will be executed after any scripts provided in the `script` field. \n Execution order: 1. Scripts provided in the `script` field, in the order of the scripts listed. 2. Scripts imported from ConfigMaps, in the order of the sources listed. 3. Scripts imported from Secrets, in the order of the sources listed. \n Note: this field cannot be modified once set." properties: configMapRef: - description: "Specifies the configMap that is to be executed." + description: "A list of ConfigMapKeySelector objects, each specifies a ConfigMap and a key containing the script. \n Note: This field cannot be modified once set." items: description: "Selects a key from a ConfigMap." properties: @@ -2071,7 +1913,7 @@ spec: - message: "forbidden to update spec.scriptSpec.scriptFrom.configMapRef" rule: "self == oldSelf" secretRef: - description: "Specifies the secret that is to be executed." + description: "A list of SecretKeySelector objects, each specifies a Secret and a key containing the script. \n Note: This field cannot be modified once set." items: description: "SecretKeySelector selects a key of a Secret." properties: @@ -2116,7 +1958,7 @@ spec: - "name" type: "object" selector: - description: "By default, KubeBlocks will execute the script on the primary pod with role=leader. Exceptions exist, such as Redis, which does not synchronize account information between primary and secondary. In such cases, the script needs to be executed on all pods matching the selector. Indicates the components on which the script is executed." + description: "Specifies the labels used to select the Pods on which the script should be executed. \n By default, the script is executed on the Pod associated with the service named \"{clusterName}-{componentName}\", which typically routes to the Pod with the primary/leader role. \n However, some Components, such as Redis, do not synchronize account information between primary and secondary Pods. In these cases, the script must be executed on all replica Pods matching the selector. \n Note: this field cannot be modified once set." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -2153,14 +1995,14 @@ spec: - "componentName" type: "object" switchover: - description: "Switches over the specified components." + description: "Lists Switchover objects, each specifying a Component to perform the switchover operation." items: properties: componentName: - description: "Specifies the name of the cluster component." + description: "Specifies the name of the Component." type: "string" instanceName: - description: "Utilized to designate the candidate primary or leader instance for the switchover process. If assigned \"*\", it signifies that no specific primary or leader is designated for the switchover, and the switchoverAction defined in `clusterDefinition.componentDefs[x].switchoverSpec.withoutCandidate` will be executed. \n It is mandatory that `clusterDefinition.componentDefs[x].switchoverSpec.withoutCandidate` is not left blank. \n If assigned a valid instance name other than \"*\", it signifies that a specific candidate primary or leader is designated for the switchover. The value can be retrieved using `kbcli cluster list-instances`, any other value is considered invalid. \n In this scenario, the `switchoverAction` defined in clusterDefinition.componentDefs[x].switchoverSpec.withCandidate will be executed, and it is mandatory that clusterDefinition.componentDefs[x].switchoverSpec.withCandidate is not left blank." + description: "Specifies the instance to become the primary or leader during a switchover operation. \n The value of `instanceName` can be either: \n 1. \"*\" (wildcard value): - Indicates no specific instance is designated as the primary or leader. - Executes the switchover action from `clusterDefinition.componentDefs[*].switchoverSpec.withoutCandidate`. - `clusterDefinition.componentDefs[x].switchoverSpec.withoutCandidate` must be defined when using \"*\". \n 2. A valid instance name (pod name): - Designates a specific instance (pod) as the primary or leader. - The name must match one of the pods in the component. Any non-valid pod name is considered invalid. - Executes the switchover action from `clusterDefinition.componentDefs[*].switchoverSpec.withCandidate`. - `clusterDefinition.componentDefs[*].switchoverSpec.withCandidate` must be defined when specifying a valid instance name." type: "string" required: - "componentName" @@ -2174,16 +2016,16 @@ spec: - message: "forbidden to update spec.switchover" rule: "self == oldSelf" ttlSecondsAfterSucceed: - description: "OpsRequest will be deleted after TTLSecondsAfterSucceed second when OpsRequest.status.phase is Succeed." + description: "Specifies the duration in seconds that an OpsRequest will remain in the system after successfully completing (when `opsRequest.status.phase` is \"Succeed\") before automatic deletion." format: "int32" type: "integer" ttlSecondsBeforeAbort: default: 0 - description: "OpsRequest will wait at most TTLSecondsBeforeAbort seconds for start-conditions to be met. If not specified, the default value is 0, which means that the start-conditions must be met immediately." + description: "Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed." format: "int32" type: "integer" type: - description: "Defines the operation type." + description: "Specifies the type of this operation. Supported types include \"Start\", \"Stop\", \"Restart\", \"Switchover\", \"VerticalScaling\", \"HorizontalScaling\", \"VolumeExpansion\", \"Reconfiguring\", \"Upgrade\", \"Backup\", \"Restore\", \"Expose\", \"DataScript\", \"RebuildInstance\", \"Custom\". \n Note: This field is immutable once set." enum: - "Upgrade" - "VerticalScaling" @@ -2205,10 +2047,10 @@ spec: - message: "forbidden to update spec.type" rule: "self == oldSelf" upgrade: - description: "Specifies the cluster version by specifying clusterVersionRef." + description: "Specifies the desired new version of the Cluster. \n Note: This field is immutable once set." properties: clusterVersionRef: - description: "A reference to the name of the ClusterVersion." + description: "Specifies the name of the target ClusterVersion for the upgrade. \n This field is deprecated since v0.9 because ClusterVersion is deprecated." type: "string" required: - "clusterVersionRef" @@ -2217,9 +2059,9 @@ spec: - message: "forbidden to update spec.upgrade" rule: "self == oldSelf" verticalScaling: - description: "Note: Quantity struct can not do immutable check by CEL. Defines what component need to vertical scale the specified compute resources." + description: "Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling." items: - description: "VerticalScaling defines the parameters required for scaling compute resources." + description: "VerticalScaling refers to the process of adjusting the compute resources (e.g., CPU, memory) allocated to a Component. It defines the parameters required for the operation." properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." @@ -2237,8 +2079,53 @@ spec: - "name" x-kubernetes-list-type: "map" componentName: - description: "Specifies the name of the cluster component." + description: "Specifies the name of the Component." type: "string" + instances: + description: "Specifies the instance template that need to vertical scale." + items: + properties: + claims: + description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + items: + description: "ResourceClaim references one entry in PodSpec.ResourceClaims." + properties: + name: + description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." + type: "string" + required: + - "name" + type: "object" + type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" + x-kubernetes-int-or-string: true + description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + type: "object" + name: + description: "Refer to the instance template name of the component or sharding." + type: "string" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" + x-kubernetes-int-or-string: true + description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + type: "object" + required: + - "name" + type: "object" + x-kubernetes-preserve-unknown-fields: true + type: "array" limits: additionalProperties: anyOf: @@ -2261,30 +2148,65 @@ spec: - "componentName" type: "object" x-kubernetes-preserve-unknown-fields: true + maxItems: 1024 type: "array" x-kubernetes-list-map-keys: - "componentName" x-kubernetes-list-type: "map" volumeExpansion: - description: "Note: Quantity struct can not do immutable check by CEL. Defines what component and volumeClaimTemplate need to expand the specified storage." + description: "Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion." items: description: "VolumeExpansion encapsulates the parameters required for a volume expansion operation." properties: componentName: - description: "Specifies the name of the cluster component." + description: "Specifies the name of the Component." type: "string" + instances: + description: "Specifies the instance template that need to volume expand." + items: + properties: + name: + description: "Refer to the instance template name of the component or sharding." + type: "string" + volumeClaimTemplates: + description: "volumeClaimTemplates specifies the storage size and volumeClaimTemplate name." + items: + properties: + name: + description: "Specify the name of the volumeClaimTemplate in the Component. The specified name must match one of the volumeClaimTemplates defined in the `clusterComponentSpec.volumeClaimTemplates` field." + type: "string" + storage: + anyOf: + - type: "integer" + - type: "string" + description: "Specifies the desired storage size for the volume." + pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" + x-kubernetes-int-or-string: true + required: + - "name" + - "storage" + type: "object" + type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" + required: + - "name" + - "volumeClaimTemplates" + type: "object" + type: "array" volumeClaimTemplates: - description: "volumeClaimTemplates specifies the storage size and volumeClaimTemplate name." + description: "Specifies a list of OpsRequestVolumeClaimTemplate objects, defining the volumeClaimTemplates that are used to expand the storage and the desired storage size for each one." items: properties: name: - description: "A reference to the volumeClaimTemplate name from the cluster components." + description: "Specify the name of the volumeClaimTemplate in the Component. The specified name must match one of the volumeClaimTemplates defined in the `clusterComponentSpec.volumeClaimTemplates` field." type: "string" storage: anyOf: - type: "integer" - type: "string" - description: "Specifies the requested storage size for the volume." + description: "Specifies the desired storage size for the volume." pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true required: @@ -2314,1589 +2236,82 @@ spec: description: "OpsRequestStatus represents the observed state of an OpsRequest." properties: cancelTimestamp: - description: "Defines the time when the OpsRequest was cancelled." + description: "Records the time when the OpsRequest was cancelled." format: "date-time" type: "string" clusterGeneration: - description: "Specifies the cluster generation after the OpsRequest action has been handled." + description: "Records the cluster generation after the OpsRequest action has been handled." format: "int64" type: "integer" completionTimestamp: - description: "Specifies the time when the OpsRequest was completed." + description: "Records the time when the OpsRequest was completed." format: "date-time" type: "string" components: additionalProperties: properties: lastFailedTime: - description: "Indicates the last time the component phase transitioned to Failed or Abnormal." + description: "Records the timestamp when the Component last transitioned to a \"Failed\" or \"Abnormal\" phase." format: "date-time" type: "string" message: description: "Provides a human-readable message indicating details about this operation." maxLength: 32768 type: "string" - overrideBy: - description: "Describes the configuration covered by the latest OpsRequest of the same kind. when reconciling, this information will be used as a benchmark rather than the 'spec', such as 'Spec.HorizontalScaling'." + phase: + description: "Records the current phase of the Component, mirroring `cluster.status.components[componentName].phase`. Possible values include \"Creating\", \"Running\", \"Updating\", \"Stopping\", \"Stopped\", \"Deleting\", \"Failed\", \"Abnormal\"." + enum: + - "Creating" + - "Running" + - "Updating" + - "Stopping" + - "Stopped" + - "Deleting" + - "Failed" + - "Abnormal" + type: "string" + preCheck: + description: "Records the result of the preConditions check of the opsRequest, which determines subsequent steps." properties: - claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." - items: - description: "ResourceClaim references one entry in PodSpec.ResourceClaims." - properties: - name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." - type: "string" - required: - - "name" - type: "object" - type: "array" - x-kubernetes-list-map-keys: - - "name" - x-kubernetes-list-type: "map" - instances: - description: "Records the last instances of the component." - items: - description: "InstanceTemplate allows customization of individual replica configurations within a Component, without altering the base component template defined in ClusterComponentSpec. It enables the application of distinct settings to specific instances (replicas), providing flexibility while maintaining a common configuration baseline." - properties: - annotations: - additionalProperties: - type: "string" - description: "Specifies a map of key-value pairs to be merged into the Pod's existing annotations. Existing keys will have their values overwritten, while new keys will be added to the annotations." - type: "object" - env: - description: "Defines Env to override. Add new or override existing envs." - items: - description: "EnvVar represents an environment variable present in a Container." - properties: - name: - description: "Name of the environment variable. Must be a C_IDENTIFIER." - type: "string" - value: - description: "Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\"." - type: "string" - valueFrom: - description: "Source for the environment variable's value. Cannot be used if value is not empty." - properties: - configMapKeyRef: - description: "Selects a key of a ConfigMap." - properties: - key: - description: "The key to select." - type: "string" - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - optional: - description: "Specify whether the ConfigMap or its key must be defined" - type: "boolean" - required: - - "key" - type: "object" - x-kubernetes-map-type: "atomic" - fieldRef: - description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." - properties: - apiVersion: - description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." - type: "string" - fieldPath: - description: "Path of the field to select in the specified API version." - type: "string" - required: - - "fieldPath" - type: "object" - x-kubernetes-map-type: "atomic" - resourceFieldRef: - description: "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." - properties: - containerName: - description: "Container name: required for volumes, optional for env vars" - type: "string" - divisor: - anyOf: - - type: "integer" - - type: "string" - description: "Specifies the output format of the exposed resources, defaults to \"1\"" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - resource: - description: "Required: resource to select" - type: "string" - required: - - "resource" - type: "object" - x-kubernetes-map-type: "atomic" - secretKeyRef: - description: "Selects a key of a secret in the pod's namespace" - properties: - key: - description: "The key of the secret to select from. Must be a valid secret key." - type: "string" - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - optional: - description: "Specify whether the Secret or its key must be defined" - type: "boolean" - required: - - "key" - type: "object" - x-kubernetes-map-type: "atomic" - type: "object" - required: - - "name" - type: "object" - type: "array" - image: - description: "Specifies an override for the first container's image in the pod." - type: "string" - labels: - additionalProperties: - type: "string" - description: "Specifies a map of key-value pairs that will be merged into the Pod's existing labels. Values for existing keys will be overwritten, and new keys will be added." - type: "object" - name: - description: "Name specifies the unique name of the instance Pod created using this InstanceTemplate. This name is constructed by concatenating the component's name, the template's name, and the instance's ordinal using the pattern: $(cluster.name)-$(component.name)-$(template.name)-$(ordinal). Ordinals start from 0. The specified name overrides any default naming conventions or patterns." - maxLength: 54 - pattern: "^[a-z0-9]([a-z0-9\\.\\-]*[a-z0-9])?$" - type: "string" - nodeName: - description: "Specifies the name of the node where the Pod should be scheduled. If set, the Pod will be directly assigned to the specified node, bypassing the Kubernetes scheduler. This is useful for controlling Pod placement on specific nodes. \n Important considerations: - `nodeName` bypasses default scheduling constraints (e.g., resource requirements, node selectors, affinity rules). - It is the user's responsibility to ensure the node is suitable for the Pod. - If the node is unavailable, the Pod will remain in \"Pending\" state until the node is available or the Pod is deleted." - type: "string" - nodeSelector: - additionalProperties: - type: "string" - description: "Defines NodeSelector to override." - type: "object" - replicas: - default: 1 - description: "Specifies the number of instances (Pods) to create from this InstanceTemplate. This field allows setting how many replicated instances of the component, with the specific overrides in the InstanceTemplate, are created. The default value is 1. A value of 0 disables instance creation." - format: "int32" - minimum: 0.0 - type: "integer" - resources: - description: "Specifies an override for the resource requirements of the first container in the Pod. This field allows for customizing resource allocation (CPU, memory, etc.) for the container." - properties: - claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." - items: - description: "ResourceClaim references one entry in PodSpec.ResourceClaims." - properties: - name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." - type: "string" - required: - - "name" - type: "object" - type: "array" - x-kubernetes-list-map-keys: - - "name" - x-kubernetes-list-type: "map" - limits: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" - type: "object" - requests: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" - type: "object" - type: "object" - tolerations: - description: "Tolerations specifies a list of tolerations to be applied to the Pod, allowing it to tolerate node taints. This field can be used to add new tolerations or override existing ones." - items: - description: "The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator ." - properties: - effect: - description: "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute." - type: "string" - key: - description: "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys." - type: "string" - operator: - description: "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category." - type: "string" - tolerationSeconds: - description: "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system." - format: "int64" - type: "integer" - value: - description: "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string." - type: "string" - type: "object" - type: "array" - volumeClaimTemplates: - description: "Defines VolumeClaimTemplates to override. Add new or override existing volume claim templates." - items: - description: "PersistentVolumeClaim is a user's request for and claim to a persistent volume" - properties: - apiVersion: - description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" - type: "string" - kind: - description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" - type: "string" - metadata: - description: "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" - properties: - annotations: - additionalProperties: - type: "string" - type: "object" - finalizers: - items: - type: "string" - type: "array" - labels: - additionalProperties: - type: "string" - type: "object" - name: - type: "string" - namespace: - type: "string" - type: "object" - spec: - description: "spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" - properties: - accessModes: - description: "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" - items: - type: "string" - type: "array" - dataSource: - description: "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - required: - - "kind" - - "name" - type: "object" - x-kubernetes-map-type: "atomic" - dataSourceRef: - description: "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - namespace: - description: "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - type: "string" - required: - - "kind" - - "name" - type: "object" - resources: - description: "resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources" - properties: - claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." - items: - description: "ResourceClaim references one entry in PodSpec.ResourceClaims." - properties: - name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." - type: "string" - required: - - "name" - type: "object" - type: "array" - x-kubernetes-list-map-keys: - - "name" - x-kubernetes-list-type: "map" - limits: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" - type: "object" - requests: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" - type: "object" - type: "object" - selector: - description: "selector is a label query over volumes to consider for binding." - properties: - matchExpressions: - description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." - items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." - properties: - key: - description: "key is the label key that the selector applies to." - type: "string" - operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." - type: "string" - values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." - items: - type: "string" - type: "array" - required: - - "key" - - "operator" - type: "object" - type: "array" - matchLabels: - additionalProperties: - type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." - type: "object" - type: "object" - x-kubernetes-map-type: "atomic" - storageClassName: - description: "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1" - type: "string" - volumeMode: - description: "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec." - type: "string" - volumeName: - description: "volumeName is the binding reference to the PersistentVolume backing this claim." - type: "string" - type: "object" - status: - description: "status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" - properties: - accessModes: - description: "accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" - items: - type: "string" - type: "array" - allocatedResourceStatuses: - additionalProperties: - description: "When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it." - type: "string" - description: "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. \n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature." - type: "object" - x-kubernetes-map-type: "granular" - allocatedResources: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. \n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature." - type: "object" - capacity: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "capacity represents the actual resources of the underlying volume." - type: "object" - conditions: - description: "conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'." - items: - description: "PersistentVolumeClaimCondition contains details about state of pvc" - properties: - lastProbeTime: - description: "lastProbeTime is the time we probed the condition." - format: "date-time" - type: "string" - lastTransitionTime: - description: "lastTransitionTime is the time the condition transitioned from one status to another." - format: "date-time" - type: "string" - message: - description: "message is the human-readable message indicating details about last transition." - type: "string" - reason: - description: "reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized." - type: "string" - status: - type: "string" - type: - description: "PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type" - type: "string" - required: - - "status" - - "type" - type: "object" - type: "array" - phase: - description: "phase represents the current phase of PersistentVolumeClaim." - type: "string" - type: "object" - type: "object" - type: "array" - volumeMounts: - description: "Defines VolumeMounts to override. Add new or override existing volume mounts of the first container in the pod." - items: - description: "VolumeMount describes a mounting of a Volume within a container." - properties: - mountPath: - description: "Path within the container at which the volume should be mounted. Must not contain ':'." - type: "string" - mountPropagation: - description: "mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10." - type: "string" - name: - description: "This must match the Name of a Volume." - type: "string" - readOnly: - description: "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false." - type: "boolean" - subPath: - description: "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root)." - type: "string" - subPathExpr: - description: "Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive." - type: "string" - required: - - "mountPath" - - "name" - type: "object" - type: "array" - volumes: - description: "Defines Volumes to override. Add new or override existing volumes." - items: - description: "Volume represents a named volume in a pod that may be accessed by any container in the pod." - properties: - awsElasticBlockStore: - description: "awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore" - properties: - fsType: - description: "fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine" - type: "string" - partition: - description: "partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty)." - format: "int32" - type: "integer" - readOnly: - description: "readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore" - type: "boolean" - volumeID: - description: "volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore" - type: "string" - required: - - "volumeID" - type: "object" - azureDisk: - description: "azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod." - properties: - cachingMode: - description: "cachingMode is the Host Caching mode: None, Read Only, Read Write." - type: "string" - diskName: - description: "diskName is the Name of the data disk in the blob storage" - type: "string" - diskURI: - description: "diskURI is the URI of data disk in the blob storage" - type: "string" - fsType: - description: "fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - type: "string" - kind: - description: "kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared" - type: "string" - readOnly: - description: "readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - type: "boolean" - required: - - "diskName" - - "diskURI" - type: "object" - azureFile: - description: "azureFile represents an Azure File Service mount on the host and bind mount to the pod." - properties: - readOnly: - description: "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - type: "boolean" - secretName: - description: "secretName is the name of secret that contains Azure Storage Account Name and Key" - type: "string" - shareName: - description: "shareName is the azure share Name" - type: "string" - required: - - "secretName" - - "shareName" - type: "object" - cephfs: - description: "cephFS represents a Ceph FS mount on the host that shares a pod's lifetime" - properties: - monitors: - description: "monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" - items: - type: "string" - type: "array" - path: - description: "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /" - type: "string" - readOnly: - description: "readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" - type: "boolean" - secretFile: - description: "secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" - type: "string" - secretRef: - description: "secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" - properties: - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - type: "object" - x-kubernetes-map-type: "atomic" - user: - description: "user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" - type: "string" - required: - - "monitors" - type: "object" - cinder: - description: "cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md" - properties: - fsType: - description: "fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md" - type: "string" - readOnly: - description: "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md" - type: "boolean" - secretRef: - description: "secretRef is optional: points to a secret object containing parameters used to connect to OpenStack." - properties: - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - type: "object" - x-kubernetes-map-type: "atomic" - volumeID: - description: "volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md" - type: "string" - required: - - "volumeID" - type: "object" - configMap: - description: "configMap represents a configMap that should populate this volume" - properties: - defaultMode: - description: "defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - format: "int32" - type: "integer" - items: - description: "items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - items: - description: "Maps a string key to a path within a volume." - properties: - key: - description: "key is the key to project." - type: "string" - mode: - description: "mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - format: "int32" - type: "integer" - path: - description: "path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'." - type: "string" - required: - - "key" - - "path" - type: "object" - type: "array" - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - optional: - description: "optional specify whether the ConfigMap or its keys must be defined" - type: "boolean" - type: "object" - x-kubernetes-map-type: "atomic" - csi: - description: "csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature)." - properties: - driver: - description: "driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster." - type: "string" - fsType: - description: "fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply." - type: "string" - nodePublishSecretRef: - description: "nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed." - properties: - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - type: "object" - x-kubernetes-map-type: "atomic" - readOnly: - description: "readOnly specifies a read-only configuration for the volume. Defaults to false (read/write)." - type: "boolean" - volumeAttributes: - additionalProperties: - type: "string" - description: "volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values." - type: "object" - required: - - "driver" - type: "object" - downwardAPI: - description: "downwardAPI represents downward API about the pod that should populate this volume" - properties: - defaultMode: - description: "Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - format: "int32" - type: "integer" - items: - description: "Items is a list of downward API volume file" - items: - description: "DownwardAPIVolumeFile represents information to create the file containing the pod field" - properties: - fieldRef: - description: "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." - properties: - apiVersion: - description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." - type: "string" - fieldPath: - description: "Path of the field to select in the specified API version." - type: "string" - required: - - "fieldPath" - type: "object" - x-kubernetes-map-type: "atomic" - mode: - description: "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - format: "int32" - type: "integer" - path: - description: "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" - type: "string" - resourceFieldRef: - description: "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." - properties: - containerName: - description: "Container name: required for volumes, optional for env vars" - type: "string" - divisor: - anyOf: - - type: "integer" - - type: "string" - description: "Specifies the output format of the exposed resources, defaults to \"1\"" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - resource: - description: "Required: resource to select" - type: "string" - required: - - "resource" - type: "object" - x-kubernetes-map-type: "atomic" - required: - - "path" - type: "object" - type: "array" - type: "object" - emptyDir: - description: "emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir" - properties: - medium: - description: "medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir" - type: "string" - sizeLimit: - anyOf: - - type: "integer" - - type: "string" - description: "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir" - 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" - ephemeral: - description: "ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \n A pod can use both types of ephemeral volumes and persistent volumes at the same time." - properties: - volumeClaimTemplate: - description: "Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \n Required, must not be nil." - properties: - metadata: - description: "May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation." - properties: - annotations: - additionalProperties: - type: "string" - type: "object" - finalizers: - items: - type: "string" - type: "array" - labels: - additionalProperties: - type: "string" - type: "object" - name: - type: "string" - namespace: - type: "string" - type: "object" - spec: - description: "The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here." - properties: - accessModes: - description: "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" - items: - type: "string" - type: "array" - dataSource: - description: "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - required: - - "kind" - - "name" - type: "object" - x-kubernetes-map-type: "atomic" - dataSourceRef: - description: "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - namespace: - description: "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - type: "string" - required: - - "kind" - - "name" - type: "object" - resources: - description: "resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources" - properties: - claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." - items: - description: "ResourceClaim references one entry in PodSpec.ResourceClaims." - properties: - name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." - type: "string" - required: - - "name" - type: "object" - type: "array" - x-kubernetes-list-map-keys: - - "name" - x-kubernetes-list-type: "map" - limits: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" - type: "object" - requests: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" - type: "object" - type: "object" - selector: - description: "selector is a label query over volumes to consider for binding." - properties: - matchExpressions: - description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." - items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." - properties: - key: - description: "key is the label key that the selector applies to." - type: "string" - operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." - type: "string" - values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." - items: - type: "string" - type: "array" - required: - - "key" - - "operator" - type: "object" - type: "array" - matchLabels: - additionalProperties: - type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." - type: "object" - type: "object" - x-kubernetes-map-type: "atomic" - storageClassName: - description: "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1" - type: "string" - volumeMode: - description: "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec." - type: "string" - volumeName: - description: "volumeName is the binding reference to the PersistentVolume backing this claim." - type: "string" - type: "object" - required: - - "spec" - type: "object" - type: "object" - fc: - description: "fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod." - properties: - fsType: - description: "fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine" - type: "string" - lun: - description: "lun is Optional: FC target lun number" - format: "int32" - type: "integer" - readOnly: - description: "readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - type: "boolean" - targetWWNs: - description: "targetWWNs is Optional: FC target worldwide names (WWNs)" - items: - type: "string" - type: "array" - wwids: - description: "wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously." - items: - type: "string" - type: "array" - type: "object" - flexVolume: - description: "flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin." - properties: - driver: - description: "driver is the name of the driver to use for this volume." - type: "string" - fsType: - description: "fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script." - type: "string" - options: - additionalProperties: - type: "string" - description: "options is Optional: this field holds extra command options if any." - type: "object" - readOnly: - description: "readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - type: "boolean" - secretRef: - description: "secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts." - properties: - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - type: "object" - x-kubernetes-map-type: "atomic" - required: - - "driver" - type: "object" - flocker: - description: "flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running" - properties: - datasetName: - description: "datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated" - type: "string" - datasetUUID: - description: "datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset" - type: "string" - type: "object" - gcePersistentDisk: - description: "gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" - properties: - fsType: - description: "fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine" - type: "string" - partition: - description: "partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" - format: "int32" - type: "integer" - pdName: - description: "pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" - type: "string" - readOnly: - description: "readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" - type: "boolean" - required: - - "pdName" - type: "object" - gitRepo: - description: "gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container." - properties: - directory: - description: "directory is the target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name." - type: "string" - repository: - description: "repository is the URL" - type: "string" - revision: - description: "revision is the commit hash for the specified revision." - type: "string" - required: - - "repository" - type: "object" - glusterfs: - description: "glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md" - properties: - endpoints: - description: "endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod" - type: "string" - path: - description: "path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod" - type: "string" - readOnly: - description: "readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod" - type: "boolean" - required: - - "endpoints" - - "path" - type: "object" - hostPath: - description: "hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write." - properties: - path: - description: "path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath" - type: "string" - type: - description: "type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath" - type: "string" - required: - - "path" - type: "object" - iscsi: - description: "iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md" - properties: - chapAuthDiscovery: - description: "chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication" - type: "boolean" - chapAuthSession: - description: "chapAuthSession defines whether support iSCSI Session CHAP authentication" - type: "boolean" - fsType: - description: "fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine" - type: "string" - initiatorName: - description: "initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection." - type: "string" - iqn: - description: "iqn is the target iSCSI Qualified Name." - type: "string" - iscsiInterface: - description: "iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp)." - type: "string" - lun: - description: "lun represents iSCSI Target Lun number." - format: "int32" - type: "integer" - portals: - description: "portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)." - items: - type: "string" - type: "array" - readOnly: - description: "readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false." - type: "boolean" - secretRef: - description: "secretRef is the CHAP Secret for iSCSI target and initiator authentication" - properties: - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - type: "object" - x-kubernetes-map-type: "atomic" - targetPortal: - description: "targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)." - type: "string" - required: - - "iqn" - - "lun" - - "targetPortal" - type: "object" - name: - description: "name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" - type: "string" - nfs: - description: "nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs" - properties: - path: - description: "path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs" - type: "string" - readOnly: - description: "readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs" - type: "boolean" - server: - description: "server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs" - type: "string" - required: - - "path" - - "server" - type: "object" - persistentVolumeClaim: - description: "persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" - properties: - claimName: - description: "claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" - type: "string" - readOnly: - description: "readOnly Will force the ReadOnly setting in VolumeMounts. Default false." - type: "boolean" - required: - - "claimName" - type: "object" - photonPersistentDisk: - description: "photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine" - properties: - fsType: - description: "fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - type: "string" - pdID: - description: "pdID is the ID that identifies Photon Controller persistent disk" - type: "string" - required: - - "pdID" - type: "object" - portworxVolume: - description: "portworxVolume represents a portworx volume attached and mounted on kubelets host machine" - properties: - fsType: - description: "fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified." - type: "string" - readOnly: - description: "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - type: "boolean" - volumeID: - description: "volumeID uniquely identifies a Portworx volume" - type: "string" - required: - - "volumeID" - type: "object" - projected: - description: "projected items for all in one resources secrets, configmaps, and downward API" - properties: - defaultMode: - description: "defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - format: "int32" - type: "integer" - sources: - description: "sources is the list of volume projections" - items: - description: "Projection that may be projected along with other supported volume types" - properties: - configMap: - description: "configMap information about the configMap data to project" - properties: - items: - description: "items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - items: - description: "Maps a string key to a path within a volume." - properties: - key: - description: "key is the key to project." - type: "string" - mode: - description: "mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - format: "int32" - type: "integer" - path: - description: "path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'." - type: "string" - required: - - "key" - - "path" - type: "object" - type: "array" - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - optional: - description: "optional specify whether the ConfigMap or its keys must be defined" - type: "boolean" - type: "object" - x-kubernetes-map-type: "atomic" - downwardAPI: - description: "downwardAPI information about the downwardAPI data to project" - properties: - items: - description: "Items is a list of DownwardAPIVolume file" - items: - description: "DownwardAPIVolumeFile represents information to create the file containing the pod field" - properties: - fieldRef: - description: "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." - properties: - apiVersion: - description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." - type: "string" - fieldPath: - description: "Path of the field to select in the specified API version." - type: "string" - required: - - "fieldPath" - type: "object" - x-kubernetes-map-type: "atomic" - mode: - description: "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - format: "int32" - type: "integer" - path: - description: "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" - type: "string" - resourceFieldRef: - description: "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." - properties: - containerName: - description: "Container name: required for volumes, optional for env vars" - type: "string" - divisor: - anyOf: - - type: "integer" - - type: "string" - description: "Specifies the output format of the exposed resources, defaults to \"1\"" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - resource: - description: "Required: resource to select" - type: "string" - required: - - "resource" - type: "object" - x-kubernetes-map-type: "atomic" - required: - - "path" - type: "object" - type: "array" - type: "object" - secret: - description: "secret information about the secret data to project" - properties: - items: - description: "items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - items: - description: "Maps a string key to a path within a volume." - properties: - key: - description: "key is the key to project." - type: "string" - mode: - description: "mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - format: "int32" - type: "integer" - path: - description: "path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'." - type: "string" - required: - - "key" - - "path" - type: "object" - type: "array" - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - optional: - description: "optional field specify whether the Secret or its key must be defined" - type: "boolean" - type: "object" - x-kubernetes-map-type: "atomic" - serviceAccountToken: - description: "serviceAccountToken is information about the serviceAccountToken data to project" - properties: - audience: - description: "audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver." - type: "string" - expirationSeconds: - description: "expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes." - format: "int64" - type: "integer" - path: - description: "path is the path relative to the mount point of the file to project the token into." - type: "string" - required: - - "path" - type: "object" - type: "object" - type: "array" - type: "object" - quobyte: - description: "quobyte represents a Quobyte mount on the host that shares a pod's lifetime" - properties: - group: - description: "group to map volume access to Default is no group" - type: "string" - readOnly: - description: "readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false." - type: "boolean" - registry: - description: "registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes" - type: "string" - tenant: - description: "tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin" - type: "string" - user: - description: "user to map volume access to Defaults to serivceaccount user" - type: "string" - volume: - description: "volume is a string that references an already created Quobyte volume by name." - type: "string" - required: - - "registry" - - "volume" - type: "object" - rbd: - description: "rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md" - properties: - fsType: - description: "fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine" - type: "string" - image: - description: "image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" - type: "string" - keyring: - description: "keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" - type: "string" - monitors: - description: "monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" - items: - type: "string" - type: "array" - pool: - description: "pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" - type: "string" - readOnly: - description: "readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" - type: "boolean" - secretRef: - description: "secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" - properties: - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - type: "object" - x-kubernetes-map-type: "atomic" - user: - description: "user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" - type: "string" - required: - - "image" - - "monitors" - type: "object" - scaleIO: - description: "scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes." - properties: - fsType: - description: "fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\"." - type: "string" - gateway: - description: "gateway is the host address of the ScaleIO API Gateway." - type: "string" - protectionDomain: - description: "protectionDomain is the name of the ScaleIO Protection Domain for the configured storage." - type: "string" - readOnly: - description: "readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - type: "boolean" - secretRef: - description: "secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail." - properties: - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - type: "object" - x-kubernetes-map-type: "atomic" - sslEnabled: - description: "sslEnabled Flag enable/disable SSL communication with Gateway, default false" - type: "boolean" - storageMode: - description: "storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned." - type: "string" - storagePool: - description: "storagePool is the ScaleIO Storage Pool associated with the protection domain." - type: "string" - system: - description: "system is the name of the storage system as configured in ScaleIO." - type: "string" - volumeName: - description: "volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source." - type: "string" - required: - - "gateway" - - "secretRef" - - "system" - type: "object" - secret: - description: "secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret" - properties: - defaultMode: - description: "defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - format: "int32" - type: "integer" - items: - description: "items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." - items: - description: "Maps a string key to a path within a volume." - properties: - key: - description: "key is the key to project." - type: "string" - mode: - description: "mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." - format: "int32" - type: "integer" - path: - description: "path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'." - type: "string" - required: - - "key" - - "path" - type: "object" - type: "array" - optional: - description: "optional field specify whether the Secret or its keys must be defined" - type: "boolean" - secretName: - description: "secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret" - type: "string" - type: "object" - storageos: - description: "storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes." - properties: - fsType: - description: "fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - type: "string" - readOnly: - description: "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." - type: "boolean" - secretRef: - description: "secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted." - properties: - name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - type: "object" - x-kubernetes-map-type: "atomic" - volumeName: - description: "volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace." - type: "string" - volumeNamespace: - description: "volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created." - type: "string" - type: "object" - vsphereVolume: - description: "vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine" - properties: - fsType: - description: "fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." - type: "string" - storagePolicyID: - description: "storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName." - type: "string" - storagePolicyName: - description: "storagePolicyName is the storage Policy Based Management (SPBM) profile name." - type: "string" - volumePath: - description: "volumePath is the path that identifies vSphere volume vmdk" - type: "string" - required: - - "volumePath" - type: "object" - required: - - "name" - type: "object" - type: "array" - required: - - "name" - type: "object" - type: "array" - limits: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" - type: "object" - offlineInstances: - description: "Records the last offline instances of the component." - items: - type: "string" - type: "array" - opsName: - description: "Indicates the opsRequest name." - type: "string" - replicas: - description: "Represents the last replicas of the component." - format: "int32" - type: "integer" - requests: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" - type: "object" - services: - description: "Records the last services of the component." - items: - properties: - annotations: - additionalProperties: - type: "string" - description: "If ServiceType is LoadBalancer, cloud provider related parameters can be put here. More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer." - type: "object" - name: - description: "References the component service name defined in the ComponentDefinition.Spec.Services[x].Name." - maxLength: 25 - type: "string" - podService: - description: "Indicates whether to generate individual services for each pod. If set to true, a separate service will be created for each pod in the cluster." - type: "boolean" - serviceType: - default: "ClusterIP" - description: "Determines how the Service is exposed. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. \n - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. \n More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types." - enum: - - "ClusterIP" - - "NodePort" - - "LoadBalancer" - type: "string" - x-kubernetes-preserve-unknown-fields: true - required: - - "name" - type: "object" - type: "array" - targetResources: - additionalProperties: - items: - type: "string" - type: "array" - description: "Records the information about the target resources affected by the component. The resource key is in the list of [pods]." - type: "object" - volumeClaimTemplates: - description: "Records the last volumeClaimTemplates of the component." - items: - properties: - name: - description: "A reference to the volumeClaimTemplate name from the cluster components." - type: "string" - storage: - anyOf: - - type: "integer" - - type: "string" - description: "Specifies the requested storage size for the volume." - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - required: - - "name" - - "storage" - type: "object" - type: "array" - type: "object" - x-kubernetes-preserve-unknown-fields: true - phase: - description: "Describes the component phase, referencing Cluster.status.component.phase." - enum: - - "Creating" - - "Running" - - "Updating" - - "Stopping" - - "Stopped" - - "Deleting" - - "Failed" - - "Abnormal" - type: "string" - preCheck: - description: "Specifies the outcome of the preConditions check for the opsRequest. This result is crucial for determining the next steps in the operation." - properties: - message: - description: "Provides additional details about the preCheck operation in a human-readable format." - type: "string" - pass: - description: "Indicates whether the preCheck operation was successful or not." - type: "boolean" - required: - - "pass" - type: "object" - progressDetails: - description: "Describes the progress details of the component for this operation." - items: - properties: - actionName: - description: "Refer to the action name of the OpsDefinition.spec.actions[*].name. either objectKey or actionName." - type: "string" - actionTasks: - description: "Records the tasks associated with an action. such as Jobs/Pods that executes action." - items: - properties: - namespace: - description: "Defines the namespace where the task workload is deployed." + message: + description: "Provides explanations related to the preCheck result in a human-readable format." + type: "string" + pass: + description: "Indicates whether the preCheck operation passed or failed." + type: "boolean" + required: + - "pass" + type: "object" + progressDetails: + description: "Describes the progress details of objects or actions associated with the Component." + items: + properties: + actionName: + description: "Indicates the name of an OpsAction, as defined in `opsDefinition.spec.actions[*].name`. Either `objectKey` or `actionName` must be provided." + type: "string" + actionTasks: + description: "Lists the tasks, such as Jobs or Pods, that carry out the action." + items: + properties: + namespace: + description: "Represents the namespace where the task is deployed." type: "string" objectKey: - description: "Specifies the name of the task workload." + description: "Represents the name of the task." type: "string" retries: - description: "The number of retry attempts for this task." + description: "The count of retry attempts made for this task." format: "int32" type: "integer" status: - description: "Indicates the current status of the task." + description: "Indicates the current status of the task, including \"Processing\", \"Failed\", \"Succeed\"." enum: - "Processing" - "Failed" - "Succeed" type: "string" targetPodName: - description: "The name of the target pod for the task." + description: "The name of the Pod that the task is associated with or operates on." type: "string" required: - "namespace" @@ -3905,24 +2320,24 @@ spec: type: "object" type: "array" endTime: - description: "Represents the completion time of object processing." + description: "Records the completion time of object processing." format: "date-time" type: "string" group: - description: "Specifies the group to which the current object belongs. If the objects of a component belong to the same group, they can be ignored." + description: "Specifies the group to which the current object belongs to." type: "string" message: - description: "Provides a human-readable message detailing the condition of the object." + description: "Provides a human-readable explanation of the object's condition." type: "string" objectKey: - description: "Represents the unique key of the object. either objectKey or actionName." + description: "`objectKey` uniquely identifies the object, which can be any K8s object, like a Pod, Job, Component, or PVC. Either `objectKey` or `actionName` must be provided." type: "string" startTime: - description: "Represents the start time of object processing." + description: "Records the start time of object processing." format: "date-time" type: "string" status: - description: "Indicates the state of processing the object." + description: "Represents the current processing state of the object, including \"Processing\", \"Pending\", \"Failed\", \"Succeed\"" enum: - "Processing" - "Pending" @@ -3933,15 +2348,15 @@ spec: - "status" type: "object" x-kubernetes-validations: - - message: "either objectKey and actionName." + - message: "at least one objectKey or actionName." rule: "has(self.objectKey) || has(self.actionName)" type: "array" reason: - description: "Describes the reason for the component phase." + description: "Provides an explanation for the Component being in its current state." maxLength: 1024 type: "string" workloadType: - description: "References the workload type of component in ClusterDefinition." + description: "Records the workload type of Component in ClusterDefinition. Deprecated and should be removed in the future version." enum: - "Stateless" - "Stateful" @@ -3949,10 +2364,10 @@ spec: - "Replication" type: "string" type: "object" - description: "Records the status information of components changed due to the operation request." + description: "Records the status information of Components changed due to the OpsRequest." type: "object" conditions: - description: "Describes the detailed status of the OpsRequest." + description: "Describes the detailed status of the OpsRequest. Possible condition types include \"Cancelled\", \"WaitForProgressing\", \"Validated\", \"Succeed\", \"Failed\", \"Restarting\", \"VerticalScaling\", \"HorizontalScaling\", \"VolumeExpanding\", \"Reconfigure\", \"Switchover\", \"Stopping\", \"Starting\", \"VersionUpgrading\", \"Exposing\", \"ExecuteDataScript\", \"Backup\", \"InstancesRebuilding\", \"CustomOperation\"." items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: @@ -3999,20 +2414,21 @@ spec: - "type" x-kubernetes-list-type: "map" extras: - description: "A collection of additional key-value pairs that provide supplementary information for the opsRequest." + description: "A collection of additional key-value pairs that provide supplementary information for the OpsRequest." items: additionalProperties: type: "string" type: "object" type: "array" lastConfiguration: - description: "Records the last configuration before this operation took effect." + description: "Records the configuration prior to any changes." properties: clusterVersionRef: - description: "Specifies the reference to the ClusterVersion name." + description: "Specifies the name of the ClusterVersion. Deprecated and should be removed in the future version." type: "string" components: additionalProperties: + description: "LastComponentConfiguration can be used to track and compare the desired state of the Component over time." properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." @@ -4030,7 +2446,7 @@ spec: - "name" x-kubernetes-list-type: "map" instances: - description: "Records the last instances of the component." + description: "Records the InstanceTemplate list of the Component prior to any changes." items: description: "InstanceTemplate allows customization of individual replica configurations within a Component, without altering the base component template defined in ClusterComponentSpec. It enables the application of distinct settings to specific instances (replicas), providing flexibility while maintaining a common configuration baseline." properties: @@ -4213,80 +2629,21 @@ spec: volumeClaimTemplates: description: "Defines VolumeClaimTemplates to override. Add new or override existing volume claim templates." items: - description: "PersistentVolumeClaim is a user's request for and claim to a persistent volume" properties: - apiVersion: - description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" - type: "string" - kind: - description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + name: + description: "Refers to the name of a volumeMount defined in either: \n - `componentDefinition.spec.runtime.containers[*].volumeMounts` - `clusterDefinition.spec.componentDefs[*].podSpec.containers[*].volumeMounts` (deprecated) \n The value of `name` must match the `name` field of a volumeMount specified in the corresponding `volumeMounts` array." type: "string" - metadata: - description: "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" - properties: - annotations: - additionalProperties: - type: "string" - type: "object" - finalizers: - items: - type: "string" - type: "array" - labels: - additionalProperties: - type: "string" - type: "object" - name: - type: "string" - namespace: - type: "string" - type: "object" spec: - description: "spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" + description: "Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. \n When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field." properties: accessModes: - description: "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" + description: "Contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1." items: type: "string" type: "array" - dataSource: - description: "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - required: - - "kind" - - "name" - type: "object" - x-kubernetes-map-type: "atomic" - dataSourceRef: - description: "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - properties: - apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." - type: "string" - kind: - description: "Kind is the type of resource being referenced" - type: "string" - name: - description: "Name is the name of resource being referenced" - type: "string" - namespace: - description: "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled." - type: "string" - required: - - "kind" - - "name" - type: "object" + x-kubernetes-preserve-unknown-fields: true resources: - description: "resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources" + description: "Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources." properties: claims: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." @@ -4322,113 +2679,16 @@ spec: description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" - selector: - description: "selector is a label query over volumes to consider for binding." - properties: - matchExpressions: - description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." - items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." - properties: - key: - description: "key is the label key that the selector applies to." - type: "string" - operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." - type: "string" - values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." - items: - type: "string" - type: "array" - required: - - "key" - - "operator" - type: "object" - type: "array" - matchLabels: - additionalProperties: - type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." - type: "object" - type: "object" - x-kubernetes-map-type: "atomic" + x-kubernetes-preserve-unknown-fields: true storageClassName: - description: "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1" + description: "The name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1." type: "string" volumeMode: - description: "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec." - type: "string" - volumeName: - description: "volumeName is the binding reference to the PersistentVolume backing this claim." - type: "string" - type: "object" - status: - description: "status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" - properties: - accessModes: - description: "accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" - items: - type: "string" - type: "array" - allocatedResourceStatuses: - additionalProperties: - description: "When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it." - type: "string" - description: "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. \n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature." - type: "object" - x-kubernetes-map-type: "granular" - allocatedResources: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. \n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature." - type: "object" - capacity: - additionalProperties: - anyOf: - - type: "integer" - - type: "string" - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - x-kubernetes-int-or-string: true - description: "capacity represents the actual resources of the underlying volume." - type: "object" - conditions: - description: "conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'." - items: - description: "PersistentVolumeClaimCondition contains details about state of pvc" - properties: - lastProbeTime: - description: "lastProbeTime is the time we probed the condition." - format: "date-time" - type: "string" - lastTransitionTime: - description: "lastTransitionTime is the time the condition transitioned from one status to another." - format: "date-time" - type: "string" - message: - description: "message is the human-readable message indicating details about last transition." - type: "string" - reason: - description: "reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized." - type: "string" - status: - type: "string" - type: - description: "PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type" - type: "string" - required: - - "status" - - "type" - type: "object" - type: "array" - phase: - description: "phase represents the current phase of PersistentVolumeClaim." + description: "Defines what type of volume is required by the claim, either Block or Filesystem." type: "string" type: "object" + required: + - "name" type: "object" type: "array" volumeMounts: @@ -5441,12 +3701,12 @@ spec: description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" offlineInstances: - description: "Records the last offline instances of the component." + description: "Records the offline instances of the Component prior to any changes." items: type: "string" type: "array" replicas: - description: "Represents the last replicas of the component." + description: "Records the `replicas` of the Component prior to any changes." format: "int32" type: "integer" requests: @@ -5459,7 +3719,7 @@ spec: description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" services: - description: "Records the last services of the component." + description: "Records the ClusterComponentService list of the Component prior to any changes." items: properties: annotations: @@ -5468,7 +3728,7 @@ spec: description: "If ServiceType is LoadBalancer, cloud provider related parameters can be put here. More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer." type: "object" name: - description: "References the component service name defined in the ComponentDefinition.Spec.Services[x].Name." + description: "References the component service name defined in the `componentDefinition.spec.services[*].name`." maxLength: 25 type: "string" podService: @@ -5476,7 +3736,7 @@ spec: type: "boolean" serviceType: default: "ClusterIP" - description: "Determines how the Service is exposed. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. \n - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. \n More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types." + description: "Determines how the Service is exposed. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. \n - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. \n Note: although K8s Service type allows the 'ExternalName' type, it is not a valid option for ClusterComponentService. \n For more info, see: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types." enum: - "ClusterIP" - "NodePort" @@ -5492,20 +3752,20 @@ spec: items: type: "string" type: "array" - description: "Records the information about the target resources affected by the component. The resource key is in the list of [pods]." + description: "Records the information about various types of resources associated with the Component prior to any changes. Currently, only one type of resource is supported: \"pods\". The \"pods\" key maps to a list of names of all Pods of the Component." type: "object" volumeClaimTemplates: - description: "Records the last volumeClaimTemplates of the component." + description: "Records volumes' storage size of the Component prior to any changes." items: properties: name: - description: "A reference to the volumeClaimTemplate name from the cluster components." + description: "Specify the name of the volumeClaimTemplate in the Component. The specified name must match one of the volumeClaimTemplates defined in the `clusterComponentSpec.volumeClaimTemplates` field." type: "string" storage: anyOf: - type: "integer" - type: "string" - description: "Specifies the requested storage size for the volume." + description: "Specifies the desired storage size for the volume." pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true required: @@ -5515,17 +3775,18 @@ spec: type: "array" type: "object" x-kubernetes-preserve-unknown-fields: true - description: "Records the last configuration of the component." + description: "Records the configuration of each Component prior to any changes." type: "object" type: "object" phase: - description: "Defines the phase of the OpsRequest." + description: "Represents the phase of the OpsRequest. Possible values include \"Pending\", \"Creating\", \"Running\", \"Cancelling\", \"Cancelled\", \"Failed\", \"Succeed\"." enum: - "Pending" - "Creating" - "Running" - "Cancelling" - "Cancelled" + - "Aborted" - "Failed" - "Succeed" type: "string" @@ -5538,7 +3799,7 @@ spec: description: "Deprecated: Replaced by ReconfiguringStatusAsComponent. Defines the status information of reconfiguring." properties: conditions: - description: "Describes the reconfiguring detail status." + description: "Describes the reconfiguring detail status. Possible condition types include \"Creating\", \"Init\", \"Running\", \"Pending\", \"Merged\", \"MergeFailed\", \"FailedAndPause\", \"Upgrading\", \"Deleting\", \"FailedAndRetry\", \"Finished\", \"ReconfigurePersisting\", \"ReconfigurePersisted\"." items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: @@ -5590,7 +3851,7 @@ spec: properties: expectedCount: default: -1 - description: "Specifies the number of expected reconfigurations." + description: "Represents the total count of pods intended to be updated by a configuration change." format: "int32" type: "integer" lastAppliedConfiguration: @@ -5599,26 +3860,26 @@ spec: description: "Stores the last applied configuration." type: "object" lastStatus: - description: "Records the last status of the reconfiguration controller." + description: "Records the last state of the reconfiguration finite state machine. Possible values include \"None\", \"Retry\", \"Failed\", \"NotSupport\", \"FailedAndRetry\". \n - \"None\" describes fsm has finished and quit. - \"Retry\" describes fsm is running. - \"Failed\" describes fsm is failed and exited. - \"NotSupport\" describes fsm does not support the feature. - \"FailedAndRetry\" describes fsm is failed in current state, but can be retried." type: "string" message: description: "Provides details about the operation." type: "string" name: - description: "Specifies the name of the configuration template." + description: "Indicates the name of the configuration template (as ConfigMap)." maxLength: 63 pattern: "^[a-z0-9]([a-z0-9\\.\\-]*[a-z0-9])?$" type: "string" status: - description: "Indicates the current state of the reconfiguration state machine." + description: "Represents the current state of the reconfiguration state machine. Possible values include \"Creating\", \"Init\", \"Running\", \"Pending\", \"Merged\", \"MergeFailed\", \"FailedAndPause\", \"Upgrading\", \"Deleting\", \"FailedAndRetry\", \"Finished\", \"ReconfigurePersisting\", \"ReconfigurePersisted\"." type: "string" succeedCount: default: 0 - description: "Counts the number of successful reconfigurations." + description: "Records the number of pods successfully updated following a configuration change." format: "int32" type: "integer" updatePolicy: - description: "Defines the policy for reconfiguration." + description: "Records the UpgradePolicy of the configuration change operation." enum: - "simple" - "parallel" @@ -5633,17 +3894,17 @@ spec: addedKeys: additionalProperties: type: "string" - description: "Lists the keys that have been added." + description: "Maps newly added configuration files to their content." type: "object" deletedKeys: additionalProperties: type: "string" - description: "Lists the keys that have been deleted." + description: "Lists the name of configuration files that have been deleted." type: "object" updatedKeys: additionalProperties: type: "string" - description: "Lists the keys that have been updated." + description: "Maps the name of configuration files to their updated content, detailing the changes made." type: "object" type: "object" required: @@ -5660,7 +3921,7 @@ spec: additionalProperties: properties: conditions: - description: "Describes the reconfiguring detail status." + description: "Describes the reconfiguring detail status. Possible condition types include \"Creating\", \"Init\", \"Running\", \"Pending\", \"Merged\", \"MergeFailed\", \"FailedAndPause\", \"Upgrading\", \"Deleting\", \"FailedAndRetry\", \"Finished\", \"ReconfigurePersisting\", \"ReconfigurePersisted\"." items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: @@ -5712,7 +3973,7 @@ spec: properties: expectedCount: default: -1 - description: "Specifies the number of expected reconfigurations." + description: "Represents the total count of pods intended to be updated by a configuration change." format: "int32" type: "integer" lastAppliedConfiguration: @@ -5721,26 +3982,26 @@ spec: description: "Stores the last applied configuration." type: "object" lastStatus: - description: "Records the last status of the reconfiguration controller." + description: "Records the last state of the reconfiguration finite state machine. Possible values include \"None\", \"Retry\", \"Failed\", \"NotSupport\", \"FailedAndRetry\". \n - \"None\" describes fsm has finished and quit. - \"Retry\" describes fsm is running. - \"Failed\" describes fsm is failed and exited. - \"NotSupport\" describes fsm does not support the feature. - \"FailedAndRetry\" describes fsm is failed in current state, but can be retried." type: "string" message: description: "Provides details about the operation." type: "string" name: - description: "Specifies the name of the configuration template." + description: "Indicates the name of the configuration template (as ConfigMap)." maxLength: 63 pattern: "^[a-z0-9]([a-z0-9\\.\\-]*[a-z0-9])?$" type: "string" status: - description: "Indicates the current state of the reconfiguration state machine." + description: "Represents the current state of the reconfiguration state machine. Possible values include \"Creating\", \"Init\", \"Running\", \"Pending\", \"Merged\", \"MergeFailed\", \"FailedAndPause\", \"Upgrading\", \"Deleting\", \"FailedAndRetry\", \"Finished\", \"ReconfigurePersisting\", \"ReconfigurePersisted\"." type: "string" succeedCount: default: 0 - description: "Counts the number of successful reconfigurations." + description: "Records the number of pods successfully updated following a configuration change." format: "int32" type: "integer" updatePolicy: - description: "Defines the policy for reconfiguration." + description: "Records the UpgradePolicy of the configuration change operation." enum: - "simple" - "parallel" @@ -5755,17 +4016,17 @@ spec: addedKeys: additionalProperties: type: "string" - description: "Lists the keys that have been added." + description: "Maps newly added configuration files to their content." type: "object" deletedKeys: additionalProperties: type: "string" - description: "Lists the keys that have been deleted." + description: "Lists the name of configuration files that have been deleted." type: "object" updatedKeys: additionalProperties: type: "string" - description: "Lists the keys that have been updated." + description: "Maps the name of configuration files to their updated content, detailing the changes made." type: "object" type: "object" required: @@ -5778,10 +4039,10 @@ spec: required: - "configurationStatus" type: "object" - description: "Represents the status information of reconfiguring." + description: "Records the status of a reconfiguring operation if `opsRequest.spec.type` equals to \"Reconfiguring\"." type: "object" startTimestamp: - description: "Indicates the time when the OpsRequest started processing." + description: "Records the time when the OpsRequest started processing." format: "date-time" type: "string" required: diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1beta1/configconstraints.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1beta1/configconstraints.yaml index a392da81c..c61bec9b2 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1beta1/configconstraints.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1beta1/configconstraints.yaml @@ -315,6 +315,9 @@ spec: items: description: "ToolConfig specifies the settings of an init container that prepare tools for dynamic reload." properties: + asContainerImage: + description: "Indicates whether the tool image should be used as the container image for a sidecar. This is useful for large tool images, such as those for C++ tools, which may depend on numerous libraries (e.g., *.so files). \n If enabled, the tool image is deployed as a sidecar container image. \n Examples: ```yaml reloadToolsImage: mountPoint: /kb_tools toolConfigs: - name: kb-tools asContainerImage: true image: apecloud/oceanbase:4.2.0.0-100010032023083021 ``` \n generated containers: ```yaml initContainers: - name: install-config-manager-tool image: apecloud/kubeblocks-tools:${version} command: - cp - /bin/config_render - /opt/tools volumemounts: - name: kb-tools mountpath: /opt/tools \n containers: - name: config-manager image: apecloud/oceanbase:4.2.0.0-100010032023083021 imagePullPolicy: IfNotPresent command: - /opt/tools/reloader - --log-level - info - --operator-update-enable - --tcp - \"9901\" - --config - /opt/config-manager/config-manager.yaml volumemounts: - name: kb-tools mountpath: /opt/tools ```" + type: "boolean" command: description: "Specifies the command to be executed by the init container." items: @@ -328,8 +331,6 @@ spec: maxLength: 63 pattern: "^[a-z]([a-z0-9\\-]*[a-z0-9])?$" type: "string" - required: - - "command" type: "object" type: "array" required: diff --git a/crd-catalog/apecloud/kubeblocks/storage.kubeblocks.io/v1alpha1/storageproviders.yaml b/crd-catalog/apecloud/kubeblocks/storage.kubeblocks.io/v1alpha1/storageproviders.yaml index f35ec1cb9..9f6e99a67 100644 --- a/crd-catalog/apecloud/kubeblocks/storage.kubeblocks.io/v1alpha1/storageproviders.yaml +++ b/crd-catalog/apecloud/kubeblocks/storage.kubeblocks.io/v1alpha1/storageproviders.yaml @@ -30,7 +30,7 @@ spec: name: "v1alpha1" schema: openAPIV3Schema: - description: "StorageProvider comprises specifications that provide guidance on accessing remote storage. Currently the supported access methods are via a dedicated CSI driver or the `datasafed` tool. In case of CSI driver, the specification expounds on provisioning PVCs for that driver. As for the `datasafed` tool, the specification provides insights on generating the necessary configuration file." + description: "StorageProvider comprises specifications that provide guidance on accessing remote storage. Currently the supported access methods are via a dedicated CSI driver or the `datasafed` tool. In case of CSI driver, the specification expounds on provisioning PVCs for that driver. As for the `datasafed` tool, the specification provides insights on generating the necessary configuration file. \n Deprecated since v0.9, moving to dataprotection.kubeblocks.io API group, will be removed in v0.11." properties: apiVersion: description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" diff --git a/crd-catalog/apecloud/kubeblocks/workloads.kubeblocks.io/v1alpha1/instancesets.yaml b/crd-catalog/apecloud/kubeblocks/workloads.kubeblocks.io/v1alpha1/instancesets.yaml index 342603572..68cf1a46b 100644 --- a/crd-catalog/apecloud/kubeblocks/workloads.kubeblocks.io/v1alpha1/instancesets.yaml +++ b/crd-catalog/apecloud/kubeblocks/workloads.kubeblocks.io/v1alpha1/instancesets.yaml @@ -1856,6 +1856,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" memberUpdateStrategy: description: "Members(Pods) update strategy. \n - serial: update Members one by one that guarantee minimum component unavailable time. - bestEffortParallel: update Members in parallel that guarantee minimum component un-writable time. - parallel: force parallel" enum: @@ -6921,49 +6924,62 @@ spec: description: "Represents the current information about the state machine. This data may be out of date." properties: availableReplicas: - description: "Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset." - format: "int32" - type: "integer" - collisionCount: - description: "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision." + description: "Total number of available instances (ready for at least minReadySeconds) targeted by this InstanceSet." format: "int32" type: "integer" conditions: - description: "Represents the latest available observations of a statefulset's current state." + description: "Represents the latest available observations of an instanceset's current state. Known .status.conditions.type are: \"InstanceFailure\", \"InstanceReady\"" items: - description: "StatefulSetCondition describes the state of a statefulset at a certain point." + description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: - description: "Last time the condition transitioned from one status to another." + description: "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable." format: "date-time" type: "string" message: - description: "A human readable message indicating details about the transition." + description: "message is a human readable message indicating details about the transition. This may be an empty string." + maxLength: 32768 type: "string" + observedGeneration: + description: "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance." + format: "int64" + minimum: 0.0 + type: "integer" reason: - description: "The reason for the condition's last transition." + description: "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty." + maxLength: 1024 + minLength: 1 + pattern: "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." + enum: + - "True" + - "False" + - "Unknown" type: "string" type: - description: "Type of statefulset condition." + description: "type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)" + maxLength: 316 + pattern: "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$" type: "string" required: + - "lastTransitionTime" + - "message" + - "reason" - "status" - "type" type: "object" type: "array" - currentGeneration: - description: "When not empty, indicates the version of the InstanceSet used to generate the underlying workload." - format: "int64" - type: "integer" + x-kubernetes-list-map-keys: + - "type" + x-kubernetes-list-type: "map" currentReplicas: - description: "currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision." + description: "currentReplicas is the number of instances created by the InstanceSet controller from the InstanceSet version indicated by CurrentRevisions." format: "int32" type: "integer" currentRevision: - description: "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas)." + description: "currentRevision, if not empty, indicates the version of the InstanceSet used to generate instances in the sequence [0,currentReplicas)." type: "string" currentRevisions: additionalProperties: @@ -6971,7 +6987,7 @@ spec: description: "currentRevisions, if not empty, indicates the old version of the InstanceSet used to generate the underlying workload. key is the pod name, value is the revision." type: "object" initReplicas: - description: "Defines the initial number of pods (members) when the cluster is first initialized. This value is set to spec.Replicas at the time of object creation and remains constant thereafter." + description: "Defines the initial number of instances when the cluster is first initialized. This value is set to spec.Replicas at the time of object creation and remains constant thereafter. Used only when spec.roles set." format: "int32" type: "integer" membersStatus: @@ -6982,12 +6998,6 @@ spec: default: "Unknown" description: "Represents the name of the pod." type: "string" - ready: - description: "Whether the corresponding Pod is in ready condition." - type: "boolean" - readyWithoutPrimary: - description: "Indicates whether it is required for the InstanceSet to have at least one primary instance ready." - type: "boolean" role: description: "Defines the role of the replica in the cluster." properties: @@ -7020,23 +7030,26 @@ spec: type: "object" type: "array" observedGeneration: - description: "observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server." + description: "observedGeneration is the most recent generation observed for this InstanceSet. It corresponds to the InstanceSet's generation, which is updated on mutation by the API Server." format: "int64" type: "integer" readyInitReplicas: - description: "Represents the number of pods (members) that have already reached the MembersStatus during the cluster initialization stage. This value remains constant once it equals InitReplicas." + description: "Represents the number of instances that have already reached the MembersStatus during the cluster initialization stage. This value remains constant once it equals InitReplicas. Used only when spec.roles set." format: "int32" type: "integer" readyReplicas: - description: "readyReplicas is the number of pods created for this StatefulSet with a Ready Condition." + description: "readyReplicas is the number of instances created for this InstanceSet with a Ready Condition." format: "int32" type: "integer" + readyWithoutPrimary: + description: "Indicates whether it is required for the InstanceSet to have at least one primary instance ready." + type: "boolean" replicas: - description: "replicas is the number of Pods created by the StatefulSet controller." + description: "replicas is the number of instances created by the InstanceSet controller." format: "int32" type: "integer" updateRevision: - description: "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)" + description: "updateRevision, if not empty, indicates the version of the InstanceSet used to generate instances in the sequence [replicas-updatedReplicas,replicas)" type: "string" updateRevisions: additionalProperties: @@ -7044,11 +7057,10 @@ spec: description: "updateRevisions, if not empty, indicates the new version of the InstanceSet used to generate the underlying workload. key is the pod name, value is the revision." type: "object" updatedReplicas: - description: "updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision." + description: "updatedReplicas is the number of instances created by the InstanceSet controller from the InstanceSet version indicated by UpdateRevisions." format: "int32" type: "integer" required: - - "initReplicas" - "replicas" type: "object" type: "object" diff --git a/crd-catalog/aws-controllers-k8s/acmpca-controller/acmpca.services.k8s.aws/v1alpha1/certificateauthorities.yaml b/crd-catalog/aws-controllers-k8s/acmpca-controller/acmpca.services.k8s.aws/v1alpha1/certificateauthorities.yaml index 389e57cc2..fb1dfa90b 100644 --- a/crd-catalog/aws-controllers-k8s/acmpca-controller/acmpca.services.k8s.aws/v1alpha1/certificateauthorities.yaml +++ b/crd-catalog/aws-controllers-k8s/acmpca-controller/acmpca.services.k8s.aws/v1alpha1/certificateauthorities.yaml @@ -233,6 +233,7 @@ spec: type: "object" type: "array" type: + description: "The type of the certificate authority." type: "string" usageMode: description: "Specifies whether the CA issues general-purpose certificates that typically\nrequire a revocation mechanism, or short-lived certificates that may optionally\nomit revocation because they expire quickly. Short-lived certificate validity\nis limited to seven days.\n\n\nThe default value is GENERAL_PURPOSE." diff --git a/crd-catalog/aws-controllers-k8s/ec2-controller/ec2.services.k8s.aws/v1alpha1/securitygroups.yaml b/crd-catalog/aws-controllers-k8s/ec2-controller/ec2.services.k8s.aws/v1alpha1/securitygroups.yaml index 0466b4638..065f14e59 100644 --- a/crd-catalog/aws-controllers-k8s/ec2-controller/ec2.services.k8s.aws/v1alpha1/securitygroups.yaml +++ b/crd-catalog/aws-controllers-k8s/ec2-controller/ec2.services.k8s.aws/v1alpha1/securitygroups.yaml @@ -88,6 +88,16 @@ spec: type: "string" groupName: type: "string" + groupRef: + description: "Reference field for GroupName" + properties: + from: + description: "AWSResourceReference provides all the values necessary to reference another\nk8s resource for finding the identifier(Id/ARN/Name)" + properties: + name: + type: "string" + type: "object" + type: "object" peeringStatus: type: "string" userID: @@ -96,6 +106,16 @@ spec: type: "string" vpcPeeringConnectionID: type: "string" + vpcRef: + description: "Reference field for VPCID" + properties: + from: + description: "AWSResourceReference provides all the values necessary to reference another\nk8s resource for finding the identifier(Id/ARN/Name)" + properties: + name: + type: "string" + type: "object" + type: "object" type: "object" type: "array" type: "object" @@ -152,6 +172,16 @@ spec: type: "string" groupName: type: "string" + groupRef: + description: "Reference field for GroupName" + properties: + from: + description: "AWSResourceReference provides all the values necessary to reference another\nk8s resource for finding the identifier(Id/ARN/Name)" + properties: + name: + type: "string" + type: "object" + type: "object" peeringStatus: type: "string" userID: @@ -160,6 +190,16 @@ spec: type: "string" vpcPeeringConnectionID: type: "string" + vpcRef: + description: "Reference field for VPCID" + properties: + from: + description: "AWSResourceReference provides all the values necessary to reference another\nk8s resource for finding the identifier(Id/ARN/Name)" + properties: + name: + type: "string" + type: "object" + type: "object" type: "object" type: "array" type: "object" diff --git a/crd-catalog/aws/amazon-cloudwatch-agent-operator/cloudwatch.aws.amazon.com/v1alpha1/amazoncloudwatchagents.yaml b/crd-catalog/aws/amazon-cloudwatch-agent-operator/cloudwatch.aws.amazon.com/v1alpha1/amazoncloudwatchagents.yaml index a70313e5e..0aa870bc0 100644 --- a/crd-catalog/aws/amazon-cloudwatch-agent-operator/cloudwatch.aws.amazon.com/v1alpha1/amazoncloudwatchagents.yaml +++ b/crd-catalog/aws/amazon-cloudwatch-agent-operator/cloudwatch.aws.amazon.com/v1alpha1/amazoncloudwatchagents.yaml @@ -4518,6 +4518,9 @@ spec: type: "object" type: "array" x-kubernetes-list-type: "atomic" + workingDir: + description: "WorkingDir represents Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated." + type: "string" type: "object" status: description: "AmazonCloudWatchAgentStatus defines the observed state of AmazonCloudWatchAgent." diff --git a/crd-catalog/aws/karpenter-provider-aws/karpenter.k8s.aws/v1beta1/ec2nodeclasses.yaml b/crd-catalog/aws/karpenter-provider-aws/karpenter.k8s.aws/v1beta1/ec2nodeclasses.yaml index 466ceb229..38a5fe16e 100644 --- a/crd-catalog/aws/karpenter-provider-aws/karpenter.k8s.aws/v1beta1/ec2nodeclasses.yaml +++ b/crd-catalog/aws/karpenter-provider-aws/karpenter.k8s.aws/v1beta1/ec2nodeclasses.yaml @@ -111,14 +111,9 @@ spec: format: "int64" type: "integer" volumeSize: - allOf: - - pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" - - pattern: "^((?:[1-9][0-9]{0,3}|[1-4][0-9]{4}|[5][0-8][0-9]{3}|59000)Gi|(?:[1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-3][0-9]{3}|64000)G|([1-9]||[1-5][0-7]|58)Ti|([1-9]||[1-5][0-9]|6[0-3]|64)T)$" - anyOf: - - type: "integer" - - type: "string" description: "VolumeSize in `Gi`, `G`, `Ti`, or `T`. You must specify either a snapshot ID or\na volume size. The following are the supported volumes sizes for each volume\ntype:\n\n\n * gp2 and gp3: 1-16,384\n\n\n * io1 and io2: 4-16,384\n\n\n * st1 and sc1: 125-16,384\n\n\n * standard: 1-1,024" - x-kubernetes-int-or-string: true + pattern: "^((?:[1-9][0-9]{0,3}|[1-4][0-9]{4}|[5][0-8][0-9]{3}|59000)Gi|(?:[1-9][0-9]{0,3}|[1-5][0-9]{4}|[6][0-3][0-9]{3}|64000)G|([1-9]||[1-5][0-7]|58)Ti|([1-9]||[1-5][0-9]|6[0-3]|64)T)$" + type: "string" volumeType: description: "VolumeType of the block device.\nFor more information, see Amazon EBS volume types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)\nin the Amazon Elastic Compute Cloud User Guide." enum: diff --git a/crd-catalog/cilium/cilium/cilium.io/v2/ciliumclusterwideenvoyconfigs.yaml b/crd-catalog/cilium/cilium/cilium.io/v2/ciliumclusterwideenvoyconfigs.yaml index d161f5547..70ecce912 100644 --- a/crd-catalog/cilium/cilium/cilium.io/v2/ciliumclusterwideenvoyconfigs.yaml +++ b/crd-catalog/cilium/cilium/cilium.io/v2/ciliumclusterwideenvoyconfigs.yaml @@ -79,11 +79,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." diff --git a/crd-catalog/cilium/cilium/cilium.io/v2/ciliumclusterwidenetworkpolicies.yaml b/crd-catalog/cilium/cilium/cilium.io/v2/ciliumclusterwidenetworkpolicies.yaml index c26aec69e..44431be43 100644 --- a/crd-catalog/cilium/cilium/cilium.io/v2/ciliumclusterwidenetworkpolicies.yaml +++ b/crd-catalog/cilium/cilium/cilium.io/v2/ciliumclusterwidenetworkpolicies.yaml @@ -159,11 +159,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -257,11 +259,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -530,11 +534,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -587,11 +593,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -708,11 +716,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -792,11 +802,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -861,11 +873,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -918,11 +932,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -973,11 +989,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1070,11 +1088,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1154,11 +1174,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1195,11 +1217,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1544,11 +1568,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1628,11 +1654,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1669,11 +1697,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1784,11 +1814,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1929,11 +1961,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2027,11 +2061,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2300,11 +2336,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2357,11 +2395,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2478,11 +2518,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2562,11 +2604,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2631,11 +2675,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2688,11 +2734,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2743,11 +2791,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2840,11 +2890,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2924,11 +2976,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2965,11 +3019,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -3314,11 +3370,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -3398,11 +3456,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -3439,11 +3499,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -3554,11 +3616,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." diff --git a/crd-catalog/cilium/cilium/cilium.io/v2/ciliumegressgatewaypolicies.yaml b/crd-catalog/cilium/cilium/cilium.io/v2/ciliumegressgatewaypolicies.yaml index fa976e230..7dc4599c6 100644 --- a/crd-catalog/cilium/cilium/cilium.io/v2/ciliumegressgatewaypolicies.yaml +++ b/crd-catalog/cilium/cilium/cilium.io/v2/ciliumegressgatewaypolicies.yaml @@ -76,11 +76,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -127,11 +129,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -165,11 +169,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." diff --git a/crd-catalog/cilium/cilium/cilium.io/v2/ciliumenvoyconfigs.yaml b/crd-catalog/cilium/cilium/cilium.io/v2/ciliumenvoyconfigs.yaml index d1c458f5f..7f3a2a75c 100644 --- a/crd-catalog/cilium/cilium/cilium.io/v2/ciliumenvoyconfigs.yaml +++ b/crd-catalog/cilium/cilium/cilium.io/v2/ciliumenvoyconfigs.yaml @@ -79,11 +79,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." diff --git a/crd-catalog/cilium/cilium/cilium.io/v2/ciliumlocalredirectpolicies.yaml b/crd-catalog/cilium/cilium/cilium.io/v2/ciliumlocalredirectpolicies.yaml index 764dc5a43..544f49b2f 100644 --- a/crd-catalog/cilium/cilium/cilium.io/v2/ciliumlocalredirectpolicies.yaml +++ b/crd-catalog/cilium/cilium/cilium.io/v2/ciliumlocalredirectpolicies.yaml @@ -68,11 +68,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -195,6 +197,9 @@ spec: - "serviceName" type: "object" type: "object" + skipRedirectFromBackend: + description: "SkipRedirectFromBackend indicates whether traffic matching RedirectFrontend from RedirectBackend should skip redirection, and hence the traffic will be forwarded as-is. \n The default is false which means traffic matching RedirectFrontend will get redirected from all pods, including the RedirectBackend(s). \n Example: If RedirectFrontend is configured to \"169.254.169.254:80\" as the traffic that needs to be redirected to backends selected by RedirectBackend, if SkipRedirectFromBackend is set to true, traffic going to \"169.254.169.254:80\" from such backends will not be redirected back to the backends. Instead, the matched traffic from the backends will be forwarded to the original destination \"169.254.169.254:80\"." + type: "boolean" required: - "redirectBackend" - "redirectFrontend" diff --git a/crd-catalog/cilium/cilium/cilium.io/v2/ciliumnetworkpolicies.yaml b/crd-catalog/cilium/cilium/cilium.io/v2/ciliumnetworkpolicies.yaml index 63c857906..f7ab8211e 100644 --- a/crd-catalog/cilium/cilium/cilium.io/v2/ciliumnetworkpolicies.yaml +++ b/crd-catalog/cilium/cilium/cilium.io/v2/ciliumnetworkpolicies.yaml @@ -164,11 +164,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -262,11 +264,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -535,11 +539,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -592,11 +598,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -713,11 +721,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -797,11 +807,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -866,11 +878,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -923,11 +937,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -978,11 +994,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1075,11 +1093,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1159,11 +1179,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1200,11 +1222,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1549,11 +1573,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1633,11 +1659,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1674,11 +1702,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1789,11 +1819,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -1934,11 +1966,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2032,11 +2066,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2305,11 +2341,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2362,11 +2400,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2483,11 +2523,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2567,11 +2609,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2636,11 +2680,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2693,11 +2739,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2748,11 +2796,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2845,11 +2895,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2929,11 +2981,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -2970,11 +3024,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -3319,11 +3375,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -3403,11 +3461,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -3444,11 +3504,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -3559,11 +3621,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." diff --git a/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliumbgppeeringpolicies.yaml b/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliumbgppeeringpolicies.yaml index 67d0cde18..4f4e043b6 100644 --- a/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliumbgppeeringpolicies.yaml +++ b/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliumbgppeeringpolicies.yaml @@ -62,11 +62,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -170,11 +172,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -327,11 +331,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -377,11 +383,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." diff --git a/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliuml2announcementpolicies.yaml b/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliuml2announcementpolicies.yaml index fea2a9ed6..b3f3ddfc8 100644 --- a/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliuml2announcementpolicies.yaml +++ b/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliuml2announcementpolicies.yaml @@ -72,11 +72,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." @@ -110,11 +112,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." diff --git a/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliumloadbalancerippools.yaml b/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliumloadbalancerippools.yaml index 8e2be88fe..fec36effd 100644 --- a/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliumloadbalancerippools.yaml +++ b/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliumloadbalancerippools.yaml @@ -111,11 +111,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: description: "MatchLabelsValue represents the value from the MatchLabels {key,value} pair." diff --git a/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliumnodeconfigs.yaml b/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliumnodeconfigs.yaml index 92ffa4492..5c6d10e91 100644 --- a/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliumnodeconfigs.yaml +++ b/crd-catalog/cilium/cilium/cilium.io/v2alpha1/ciliumnodeconfigs.yaml @@ -55,11 +55,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/clastix/kamaji/kamaji.clastix.io/v1alpha1/datastores.yaml b/crd-catalog/clastix/kamaji/kamaji.clastix.io/v1alpha1/datastores.yaml index ed98fb098..a275e9b18 100644 --- a/crd-catalog/clastix/kamaji/kamaji.clastix.io/v1alpha1/datastores.yaml +++ b/crd-catalog/clastix/kamaji/kamaji.clastix.io/v1alpha1/datastores.yaml @@ -97,6 +97,7 @@ spec: - "etcd" - "MySQL" - "PostgreSQL" + - "NATS" type: "string" endpoints: description: "List of the endpoints to connect to the shared datastore.\nNo need for protocol, just bare IP/FQDN and port." diff --git a/crd-catalog/clastix/kamaji/kamaji.clastix.io/v1alpha1/tenantcontrolplanes.yaml b/crd-catalog/clastix/kamaji/kamaji.clastix.io/v1alpha1/tenantcontrolplanes.yaml index 2c4a1cf31..d3c9e5e69 100644 --- a/crd-catalog/clastix/kamaji/kamaji.clastix.io/v1alpha1/tenantcontrolplanes.yaml +++ b/crd-catalog/clastix/kamaji/kamaji.clastix.io/v1alpha1/tenantcontrolplanes.yaml @@ -3623,6 +3623,18 @@ spec: type: "string" description: "NodeSelector is a selector which must be true for the pod to fit on a node.\nSelector which must match a node's labels for the pod to be scheduled on that node.\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/" type: "object" + podAdditionalMetadata: + description: "AdditionalMetadata defines which additional metadata, such as labels and annotations, must be attached to the created resource." + properties: + annotations: + additionalProperties: + type: "string" + type: "object" + labels: + additionalProperties: + type: "string" + type: "object" + type: "object" registrySettings: default: apiServerImage: "kube-apiserver" @@ -3806,6 +3818,10 @@ spec: runtimeClassName: description: "RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\nto run the Tenant Control Plane pod. If no RuntimeClass resource matches the named class, the pod will not be run.\nIf unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an\nempty definition that uses the default runtime handler.\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class" type: "string" + serviceAccountName: + default: "default" + description: "ServiceAccountName allows to specify the service account to be mounted to the pods of the Control plane deployment" + type: "string" strategy: default: rollingUpdate: diff --git a/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/clusters.yaml b/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/clusters.yaml index 2ce4eab50..a2e18aedc 100644 --- a/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/clusters.yaml +++ b/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/clusters.yaml @@ -3435,6 +3435,13 @@ spec: description: "The resource version of the \"postgres\" user secret" type: "string" type: "object" + switchReplicaClusterStatus: + description: "SwitchReplicaClusterStatus is the status of the switch to replica cluster" + properties: + inProgress: + description: "InProgress indicates if there is an ongoing procedure of switching a cluster to a replica cluster." + type: "boolean" + type: "object" tablespacesStatus: description: "TablespacesStatus reports the state of the declarative tablespaces in the cluster" items: diff --git a/crd-catalog/eclipse-che/che-operator/org.eclipse.che/v2/checlusters.yaml b/crd-catalog/eclipse-che/che-operator/org.eclipse.che/v2/checlusters.yaml index 77459edfe..d413260a0 100644 --- a/crd-catalog/eclipse-che/che-operator/org.eclipse.che/v2/checlusters.yaml +++ b/crd-catalog/eclipse-che/che-operator/org.eclipse.che/v2/checlusters.yaml @@ -225,7 +225,7 @@ spec: description: "The secret name that contains `user` and `password` for a proxy server. The secret must have a `app.kubernetes.io/part-of=che.eclipse.org` label." type: "string" nonProxyHosts: - description: "A list of hosts that can be reached directly, bypassing the proxy. Specify wild card domain use the following form `.`, for example: - localhost - my.host.com - 123.42.12.32 Use only when a proxy configuration is required. The Operator respects OpenShift cluster-wide proxy configuration, defining `nonProxyHosts` in a custom resource leads to merging non-proxy hosts lists from the cluster proxy configuration, and the ones defined in the custom resources. See the following page: https://docs.openshift.com/container-platform/4.4/networking/enable-cluster-wide-proxy.html." + description: "A list of hosts that can be reached directly, bypassing the proxy. Specify wild card domain use the following form `.`, for example: - localhost - my.host.com - 123.42.12.32 Use only when a proxy configuration is required. The Operator respects OpenShift cluster-wide proxy configuration, defining `nonProxyHosts` in a custom resource leads to merging non-proxy hosts lists from the cluster proxy configuration, and the ones defined in the custom resources. See the following page: https://docs.openshift.com/container-platform/latest/networking/enable-cluster-wide-proxy.html." items: type: "string" type: "array" @@ -233,7 +233,7 @@ spec: description: "Proxy server port." type: "string" url: - description: "URL (protocol+hostname) of the proxy server. Use only when a proxy configuration is required. The Operator respects OpenShift cluster-wide proxy configuration, defining `url` in a custom resource leads to overriding the cluster proxy configuration. See the following page: https://docs.openshift.com/container-platform/4.4/networking/enable-cluster-wide-proxy.html." + description: "URL (protocol+hostname) of the proxy server. Use only when a proxy configuration is required. The Operator respects OpenShift cluster-wide proxy configuration, defining `url` in a custom resource leads to overriding the cluster proxy configuration. See the following page: https://docs.openshift.com/container-platform/latest/networking/enable-cluster-wide-proxy.html." type: "string" type: "object" type: "object" diff --git a/crd-catalog/elastic/cloud-on-k8s/elasticsearch.k8s.elastic.co/v1/elasticsearches.yaml b/crd-catalog/elastic/cloud-on-k8s/elasticsearch.k8s.elastic.co/v1/elasticsearches.yaml index 2d86ebce3..73bb6fce6 100644 --- a/crd-catalog/elastic/cloud-on-k8s/elasticsearch.k8s.elastic.co/v1/elasticsearches.yaml +++ b/crd-catalog/elastic/cloud-on-k8s/elasticsearch.k8s.elastic.co/v1/elasticsearches.yaml @@ -54,6 +54,9 @@ spec: auth: description: "Auth contains user authentication and authorization security settings for Elasticsearch." properties: + disableElasticUser: + description: "DisableElasticUser disables the default elastic user that is created by ECK." + type: "boolean" fileRealm: description: "FileRealm to propagate to the Elasticsearch cluster." items: diff --git a/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/canaries.yaml b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/canaries.yaml index fcf685589..739a2da5b 100644 --- a/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/canaries.yaml +++ b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/canaries.yaml @@ -1296,94 +1296,6 @@ spec: - "name" type: "object" type: "array" - configDB: - items: - properties: - description: - description: "Description for the check" - type: "string" - display: - properties: - expr: - type: "string" - javascript: - type: "string" - jsonPath: - type: "string" - template: - type: "string" - type: "object" - icon: - description: "Icon for overwriting default icon on the dashboard" - type: "string" - labels: - additionalProperties: - type: "string" - description: "Labels for the check" - type: "object" - metrics: - description: "Metrics to expose from check results" - items: - properties: - labels: - items: - properties: - name: - type: "string" - value: - type: "string" - valueExpr: - type: "string" - required: - - "name" - type: "object" - type: "array" - name: - type: "string" - type: - type: "string" - value: - type: "string" - type: "object" - type: "array" - name: - description: "Name of the check" - type: "string" - namespace: - description: "Namespace to insert the check into, if different to the namespace the canary is defined, e.g." - type: "string" - query: - type: "string" - test: - properties: - expr: - type: "string" - javascript: - type: "string" - jsonPath: - type: "string" - template: - type: "string" - type: "object" - transform: - properties: - expr: - type: "string" - javascript: - type: "string" - jsonPath: - type: "string" - template: - type: "string" - type: "object" - transformDeleteStrategy: - description: "Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is" - type: "string" - required: - - "name" - - "query" - type: "object" - type: "array" containerd: items: properties: @@ -2221,213 +2133,6 @@ spec: - "name" type: "object" type: "array" - ec2: - items: - properties: - accessKey: - properties: - name: - type: "string" - value: - type: "string" - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: "string" - name: - type: "string" - required: - - "key" - type: "object" - helmRef: - properties: - key: - description: "Key is a JSONPath expression used to fetch the key from the merged JSON." - type: "string" - name: - type: "string" - required: - - "key" - type: "object" - secretKeyRef: - properties: - key: - type: "string" - name: - type: "string" - required: - - "key" - type: "object" - serviceAccount: - description: "ServiceAccount specifies the service account whose token should be fetched" - type: "string" - type: "object" - type: "object" - ami: - type: "string" - canaryRef: - items: - description: "LocalObjectReference contains enough information to let you locate the\nreferenced object inside the same namespace." - properties: - name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" - type: "string" - type: "object" - x-kubernetes-map-type: "atomic" - type: "array" - connection: - description: "ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey." - type: "string" - description: - description: "Description for the check" - type: "string" - endpoint: - type: "string" - icon: - description: "Icon for overwriting default icon on the dashboard" - type: "string" - keepAlive: - type: "boolean" - labels: - additionalProperties: - type: "string" - description: "Labels for the check" - type: "object" - metrics: - description: "Metrics to expose from check results" - items: - properties: - labels: - items: - properties: - name: - type: "string" - value: - type: "string" - valueExpr: - type: "string" - required: - - "name" - type: "object" - type: "array" - name: - type: "string" - type: - type: "string" - value: - type: "string" - type: "object" - type: "array" - name: - description: "Name of the check" - type: "string" - namespace: - description: "Namespace to insert the check into, if different to the namespace the canary is defined, e.g." - type: "string" - region: - type: "string" - secretKey: - properties: - name: - type: "string" - value: - type: "string" - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: "string" - name: - type: "string" - required: - - "key" - type: "object" - helmRef: - properties: - key: - description: "Key is a JSONPath expression used to fetch the key from the merged JSON." - type: "string" - name: - type: "string" - required: - - "key" - type: "object" - secretKeyRef: - properties: - key: - type: "string" - name: - type: "string" - required: - - "key" - type: "object" - serviceAccount: - description: "ServiceAccount specifies the service account whose token should be fetched" - type: "string" - type: "object" - type: "object" - securityGroup: - type: "string" - sessionToken: - properties: - name: - type: "string" - value: - type: "string" - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: "string" - name: - type: "string" - required: - - "key" - type: "object" - helmRef: - properties: - key: - description: "Key is a JSONPath expression used to fetch the key from the merged JSON." - type: "string" - name: - type: "string" - required: - - "key" - type: "object" - secretKeyRef: - properties: - key: - type: "string" - name: - type: "string" - required: - - "key" - type: "object" - serviceAccount: - description: "ServiceAccount specifies the service account whose token should be fetched" - type: "string" - type: "object" - type: "object" - skipTLSVerify: - description: "Skip TLS verify when connecting to aws" - type: "boolean" - timeOut: - type: "integer" - transformDeleteStrategy: - description: "Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is" - type: "string" - userData: - type: "string" - waitTime: - type: "integer" - required: - - "name" - type: "object" - type: "array" elasticsearch: items: properties: diff --git a/crd-catalog/fluent/fluent-operator/fluentbit.fluent.io/v1alpha2/clusteroutputs.yaml b/crd-catalog/fluent/fluent-operator/fluentbit.fluent.io/v1alpha2/clusteroutputs.yaml index 5553e3aaf..86770132d 100644 --- a/crd-catalog/fluent/fluent-operator/fluentbit.fluent.io/v1alpha2/clusteroutputs.yaml +++ b/crd-catalog/fluent/fluent-operator/fluentbit.fluent.io/v1alpha2/clusteroutputs.yaml @@ -303,7 +303,28 @@ spec: properties: apikey: description: "Your Datadog API key." - type: "string" + properties: + valueFrom: + description: "ValueSource defines how to find a value's key." + properties: + secretKeyRef: + description: "Selects a key of a secret in the pod's namespace" + properties: + key: + description: "The key of the secret to select from. Must be a valid secret key." + type: "string" + name: + description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the Secret or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + type: "object" + type: "object" compress: description: "Compress the payload in GZIP format. Datadog supports and recommends setting this to gzip." type: "string" diff --git a/crd-catalog/fluent/fluent-operator/fluentbit.fluent.io/v1alpha2/outputs.yaml b/crd-catalog/fluent/fluent-operator/fluentbit.fluent.io/v1alpha2/outputs.yaml index 690aa38a0..11eeba76f 100644 --- a/crd-catalog/fluent/fluent-operator/fluentbit.fluent.io/v1alpha2/outputs.yaml +++ b/crd-catalog/fluent/fluent-operator/fluentbit.fluent.io/v1alpha2/outputs.yaml @@ -303,7 +303,28 @@ spec: properties: apikey: description: "Your Datadog API key." - type: "string" + properties: + valueFrom: + description: "ValueSource defines how to find a value's key." + properties: + secretKeyRef: + description: "Selects a key of a secret in the pod's namespace" + properties: + key: + description: "The key of the secret to select from. Must be a valid secret key." + type: "string" + name: + description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the Secret or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + type: "object" + type: "object" compress: description: "Compress the payload in GZIP format. Datadog supports and recommends setting this to gzip." type: "string" diff --git a/crd-catalog/fluxcd/helm-controller/helm.toolkit.fluxcd.io/v2beta1/helmreleases.yaml b/crd-catalog/fluxcd/helm-controller/helm.toolkit.fluxcd.io/v2beta1/helmreleases.yaml index 48d4622f9..13e212b3f 100644 --- a/crd-catalog/fluxcd/helm-controller/helm.toolkit.fluxcd.io/v2beta1/helmreleases.yaml +++ b/crd-catalog/fluxcd/helm-controller/helm.toolkit.fluxcd.io/v2beta1/helmreleases.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "helmreleases.helm.toolkit.fluxcd.io" spec: group: "helm.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/helm-controller/helm.toolkit.fluxcd.io/v2beta2/helmreleases.yaml b/crd-catalog/fluxcd/helm-controller/helm.toolkit.fluxcd.io/v2beta2/helmreleases.yaml index 375d57d89..1e26d803c 100644 --- a/crd-catalog/fluxcd/helm-controller/helm.toolkit.fluxcd.io/v2beta2/helmreleases.yaml +++ b/crd-catalog/fluxcd/helm-controller/helm.toolkit.fluxcd.io/v2beta2/helmreleases.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "helmreleases.helm.toolkit.fluxcd.io" spec: group: "helm.toolkit.fluxcd.io" @@ -154,6 +154,7 @@ spec: description: "Kind of the referent." enum: - "OCIRepository" + - "HelmChart" type: "string" name: description: "Name of the referent." diff --git a/crd-catalog/fluxcd/image-automation-controller/image.toolkit.fluxcd.io/v1beta1/imageupdateautomations.yaml b/crd-catalog/fluxcd/image-automation-controller/image.toolkit.fluxcd.io/v1beta1/imageupdateautomations.yaml index fbe5136a6..2ce9670a4 100644 --- a/crd-catalog/fluxcd/image-automation-controller/image.toolkit.fluxcd.io/v1beta1/imageupdateautomations.yaml +++ b/crd-catalog/fluxcd/image-automation-controller/image.toolkit.fluxcd.io/v1beta1/imageupdateautomations.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "imageupdateautomations.image.toolkit.fluxcd.io" spec: group: "image.toolkit.fluxcd.io" @@ -231,6 +231,6 @@ spec: type: "object" type: "object" served: true - storage: true + storage: false subresources: status: {} diff --git a/crd-catalog/fluxcd/image-automation-controller/image.toolkit.fluxcd.io/v1beta2/imageupdateautomations.yaml b/crd-catalog/fluxcd/image-automation-controller/image.toolkit.fluxcd.io/v1beta2/imageupdateautomations.yaml new file mode 100644 index 000000000..9defddcaa --- /dev/null +++ b/crd-catalog/fluxcd/image-automation-controller/image.toolkit.fluxcd.io/v1beta2/imageupdateautomations.yaml @@ -0,0 +1,288 @@ +apiVersion: "apiextensions.k8s.io/v1" +kind: "CustomResourceDefinition" +metadata: + annotations: + controller-gen.kubebuilder.io/version: "v0.15.0" + name: "imageupdateautomations.image.toolkit.fluxcd.io" +spec: + group: "image.toolkit.fluxcd.io" + names: + kind: "ImageUpdateAutomation" + listKind: "ImageUpdateAutomationList" + plural: "imageupdateautomations" + singular: "imageupdateautomation" + scope: "Namespaced" + versions: + - additionalPrinterColumns: + - jsonPath: ".status.lastAutomationRunTime" + name: "Last run" + type: "string" + name: "v1beta2" + schema: + openAPIV3Schema: + description: "ImageUpdateAutomation is the Schema for the imageupdateautomations API" + properties: + apiVersion: + description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + type: "string" + kind: + description: "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + type: "string" + metadata: + type: "object" + spec: + description: "ImageUpdateAutomationSpec defines the desired state of ImageUpdateAutomation" + properties: + git: + description: "GitSpec contains all the git-specific definitions. This is\ntechnically optional, but in practice mandatory until there are\nother kinds of source allowed." + properties: + checkout: + description: "Checkout gives the parameters for cloning the git repository,\nready to make changes. If not present, the `spec.ref` field from the\nreferenced `GitRepository` or its default will be used." + properties: + ref: + description: "Reference gives a branch, tag or commit to clone from the Git\nrepository." + properties: + branch: + description: "Branch to check out, defaults to 'master' if no other field is defined." + type: "string" + commit: + description: "Commit SHA to check out, takes precedence over all reference fields.\n\n\nThis can be combined with Branch to shallow clone the branch, in which\nthe commit is expected to exist." + type: "string" + name: + description: "Name of the reference to check out; takes precedence over Branch, Tag and SemVer.\n\n\nIt must be a valid Git reference: https://git-scm.com/docs/git-check-ref-format#_description\nExamples: \"refs/heads/main\", \"refs/tags/v0.1.0\", \"refs/pull/420/head\", \"refs/merge-requests/1/head\"" + type: "string" + semver: + description: "SemVer tag expression to check out, takes precedence over Tag." + type: "string" + tag: + description: "Tag to check out, takes precedence over Branch." + type: "string" + type: "object" + required: + - "ref" + type: "object" + commit: + description: "Commit specifies how to commit to the git repository." + properties: + author: + description: "Author gives the email and optionally the name to use as the\nauthor of commits." + properties: + email: + description: "Email gives the email to provide when making a commit." + type: "string" + name: + description: "Name gives the name to provide when making a commit." + type: "string" + required: + - "email" + type: "object" + messageTemplate: + description: "MessageTemplate provides a template for the commit message,\ninto which will be interpolated the details of the change made." + type: "string" + signingKey: + description: "SigningKey provides the option to sign commits with a GPG key" + properties: + secretRef: + description: "SecretRef holds the name to a secret that contains a 'git.asc' key\ncorresponding to the ASCII Armored file containing the GPG signing\nkeypair as the value. It must be in the same namespace as the\nImageUpdateAutomation." + properties: + name: + description: "Name of the referent." + type: "string" + required: + - "name" + type: "object" + type: "object" + required: + - "author" + type: "object" + push: + description: "Push specifies how and where to push commits made by the\nautomation. If missing, commits are pushed (back) to\n`.spec.checkout.branch` or its default." + properties: + branch: + description: "Branch specifies that commits should be pushed to the branch\nnamed. The branch is created using `.spec.checkout.branch` as the\nstarting point, if it doesn't already exist." + type: "string" + options: + additionalProperties: + type: "string" + description: "Options specifies the push options that are sent to the Git\nserver when performing a push operation. For details, see:\nhttps://git-scm.com/docs/git-push#Documentation/git-push.txt---push-optionltoptiongt" + type: "object" + refspec: + description: "Refspec specifies the Git Refspec to use for a push operation.\nIf both Branch and Refspec are provided, then the commit is pushed\nto the branch and also using the specified refspec.\nFor more details about Git Refspecs, see:\nhttps://git-scm.com/book/en/v2/Git-Internals-The-Refspec" + type: "string" + type: "object" + required: + - "commit" + type: "object" + interval: + description: "Interval gives an lower bound for how often the automation\nrun should be attempted." + pattern: "^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$" + type: "string" + policySelector: + description: "PolicySelector allows to filter applied policies based on labels.\nBy default includes all policies in namespace." + properties: + matchExpressions: + description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." + items: + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." + properties: + key: + description: "key is the label key that the selector applies to." + type: "string" + operator: + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." + type: "string" + values: + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + required: + - "key" + - "operator" + type: "object" + type: "array" + x-kubernetes-list-type: "atomic" + matchLabels: + additionalProperties: + type: "string" + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + type: "object" + type: "object" + x-kubernetes-map-type: "atomic" + sourceRef: + description: "SourceRef refers to the resource giving access details\nto a git repository." + properties: + apiVersion: + description: "API version of the referent." + type: "string" + kind: + default: "GitRepository" + description: "Kind of the referent." + enum: + - "GitRepository" + type: "string" + name: + description: "Name of the referent." + type: "string" + namespace: + description: "Namespace of the referent, defaults to the namespace of the Kubernetes resource object that contains the reference." + type: "string" + required: + - "kind" + - "name" + type: "object" + suspend: + description: "Suspend tells the controller to not run this automation, until\nit is unset (or set to false). Defaults to false." + type: "boolean" + update: + default: + strategy: "Setters" + description: "Update gives the specification for how to update the files in\nthe repository. This can be left empty, to use the default\nvalue." + properties: + path: + description: "Path to the directory containing the manifests to be updated.\nDefaults to 'None', which translates to the root path\nof the GitRepositoryRef." + type: "string" + strategy: + default: "Setters" + description: "Strategy names the strategy to be used." + enum: + - "Setters" + type: "string" + required: + - "strategy" + type: "object" + required: + - "interval" + - "sourceRef" + type: "object" + status: + default: + observedGeneration: -1 + description: "ImageUpdateAutomationStatus defines the observed state of ImageUpdateAutomation" + properties: + conditions: + items: + description: "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}" + properties: + lastTransitionTime: + description: "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable." + format: "date-time" + type: "string" + message: + description: "message is a human readable message indicating details about the transition.\nThis may be an empty string." + maxLength: 32768 + type: "string" + observedGeneration: + description: "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance." + format: "int64" + minimum: 0.0 + type: "integer" + reason: + description: "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty." + maxLength: 1024 + minLength: 1 + pattern: "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" + type: "string" + status: + description: "status of the condition, one of True, False, Unknown." + enum: + - "True" + - "False" + - "Unknown" + type: "string" + type: + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)" + maxLength: 316 + pattern: "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$" + type: "string" + required: + - "lastTransitionTime" + - "message" + - "reason" + - "status" + - "type" + type: "object" + type: "array" + lastAutomationRunTime: + description: "LastAutomationRunTime records the last time the controller ran\nthis automation through to completion (even if no updates were\nmade)." + format: "date-time" + type: "string" + lastHandledReconcileAt: + description: "LastHandledReconcileAt holds the value of the most recent\nreconcile request value, so a change of the annotation value\ncan be detected." + type: "string" + lastPushCommit: + description: "LastPushCommit records the SHA1 of the last commit made by the\ncontroller, for this automation object" + type: "string" + lastPushTime: + description: "LastPushTime records the time of the last pushed change." + format: "date-time" + type: "string" + observedGeneration: + format: "int64" + type: "integer" + observedPolicies: + additionalProperties: + description: "ImageRef represents an image reference." + properties: + name: + description: "Name is the bare image's name." + type: "string" + tag: + description: "Tag is the image's tag." + type: "string" + required: + - "name" + - "tag" + type: "object" + description: "ObservedPolicies is the list of observed ImagePolicies that were\nconsidered by the ImageUpdateAutomation update process." + type: "object" + observedSourceRevision: + description: "ObservedPolicies []ObservedPolicy `json:\"observedPolicies,omitempty\"`\nObservedSourceRevision is the last observed source revision. This can be\nused to determine if the source has been updated since last observation." + type: "string" + type: "object" + type: "object" + served: true + storage: true + subresources: + status: {} diff --git a/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta1/imagepolicies.yaml b/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta1/imagepolicies.yaml index 1e8c34fd1..059b052d9 100644 --- a/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta1/imagepolicies.yaml +++ b/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta1/imagepolicies.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "imagepolicies.image.toolkit.fluxcd.io" spec: group: "image.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta1/imagerepositories.yaml b/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta1/imagerepositories.yaml index 763c65d69..410af0315 100644 --- a/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta1/imagerepositories.yaml +++ b/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta1/imagerepositories.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "imagerepositories.image.toolkit.fluxcd.io" spec: group: "image.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta2/imagepolicies.yaml b/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta2/imagepolicies.yaml index b3d899bd0..af75ec225 100644 --- a/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta2/imagepolicies.yaml +++ b/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta2/imagepolicies.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "imagepolicies.image.toolkit.fluxcd.io" spec: group: "image.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta2/imagerepositories.yaml b/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta2/imagerepositories.yaml index 33170b347..c3fdd7a66 100644 --- a/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta2/imagerepositories.yaml +++ b/crd-catalog/fluxcd/image-reflector-controller/image.toolkit.fluxcd.io/v1beta2/imagerepositories.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "imagerepositories.image.toolkit.fluxcd.io" spec: group: "image.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/kustomize-controller/kustomize.toolkit.fluxcd.io/v1/kustomizations.yaml b/crd-catalog/fluxcd/kustomize-controller/kustomize.toolkit.fluxcd.io/v1/kustomizations.yaml index 28a5f6ba7..dfcf32cbd 100644 --- a/crd-catalog/fluxcd/kustomize-controller/kustomize.toolkit.fluxcd.io/v1/kustomizations.yaml +++ b/crd-catalog/fluxcd/kustomize-controller/kustomize.toolkit.fluxcd.io/v1/kustomizations.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "kustomizations.kustomize.toolkit.fluxcd.io" spec: group: "kustomize.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/kustomize-controller/kustomize.toolkit.fluxcd.io/v1beta1/kustomizations.yaml b/crd-catalog/fluxcd/kustomize-controller/kustomize.toolkit.fluxcd.io/v1beta1/kustomizations.yaml index d451c7f31..6642f6897 100644 --- a/crd-catalog/fluxcd/kustomize-controller/kustomize.toolkit.fluxcd.io/v1beta1/kustomizations.yaml +++ b/crd-catalog/fluxcd/kustomize-controller/kustomize.toolkit.fluxcd.io/v1beta1/kustomizations.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "kustomizations.kustomize.toolkit.fluxcd.io" spec: group: "kustomize.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/kustomize-controller/kustomize.toolkit.fluxcd.io/v1beta2/kustomizations.yaml b/crd-catalog/fluxcd/kustomize-controller/kustomize.toolkit.fluxcd.io/v1beta2/kustomizations.yaml index 252b3784f..0b528f476 100644 --- a/crd-catalog/fluxcd/kustomize-controller/kustomize.toolkit.fluxcd.io/v1beta2/kustomizations.yaml +++ b/crd-catalog/fluxcd/kustomize-controller/kustomize.toolkit.fluxcd.io/v1beta2/kustomizations.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "kustomizations.kustomize.toolkit.fluxcd.io" spec: group: "kustomize.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1/receivers.yaml b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1/receivers.yaml index 7363198a3..acb2f2fe6 100644 --- a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1/receivers.yaml +++ b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1/receivers.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "receivers.notification.toolkit.fluxcd.io" spec: group: "notification.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta1/alerts.yaml b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta1/alerts.yaml index e59889e97..61af86c30 100644 --- a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta1/alerts.yaml +++ b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta1/alerts.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "alerts.notification.toolkit.fluxcd.io" spec: group: "notification.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta1/providers.yaml b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta1/providers.yaml index 8ad02bfc5..0db81f858 100644 --- a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta1/providers.yaml +++ b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta1/providers.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "providers.notification.toolkit.fluxcd.io" spec: group: "notification.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta1/receivers.yaml b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta1/receivers.yaml index f0c58b9cc..72ecf0952 100644 --- a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta1/receivers.yaml +++ b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta1/receivers.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "receivers.notification.toolkit.fluxcd.io" spec: group: "notification.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta2/alerts.yaml b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta2/alerts.yaml index e28076c3e..e9082a9d7 100644 --- a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta2/alerts.yaml +++ b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta2/alerts.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "alerts.notification.toolkit.fluxcd.io" spec: group: "notification.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta2/providers.yaml b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta2/providers.yaml index 507367118..a452f716e 100644 --- a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta2/providers.yaml +++ b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta2/providers.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "providers.notification.toolkit.fluxcd.io" spec: group: "notification.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta2/receivers.yaml b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta2/receivers.yaml index 46b219975..1af3e85e6 100644 --- a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta2/receivers.yaml +++ b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta2/receivers.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "receivers.notification.toolkit.fluxcd.io" spec: group: "notification.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta3/alerts.yaml b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta3/alerts.yaml index e7b22d2c4..412ef0353 100644 --- a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta3/alerts.yaml +++ b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta3/alerts.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "alerts.notification.toolkit.fluxcd.io" spec: group: "notification.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta3/providers.yaml b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta3/providers.yaml index 12bb7224f..44a785b9f 100644 --- a/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta3/providers.yaml +++ b/crd-catalog/fluxcd/notification-controller/notification.toolkit.fluxcd.io/v1beta3/providers.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "providers.notification.toolkit.fluxcd.io" spec: group: "notification.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1/gitrepositories.yaml b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1/gitrepositories.yaml index e552ea593..228fc316d 100644 --- a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1/gitrepositories.yaml +++ b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1/gitrepositories.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "gitrepositories.source.toolkit.fluxcd.io" spec: group: "source.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/buckets.yaml b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/buckets.yaml index 9cf709ca8..c108956e6 100644 --- a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/buckets.yaml +++ b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/buckets.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "buckets.source.toolkit.fluxcd.io" spec: group: "source.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/gitrepositories.yaml b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/gitrepositories.yaml index 3946aea58..ee5be6e63 100644 --- a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/gitrepositories.yaml +++ b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/gitrepositories.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "gitrepositories.source.toolkit.fluxcd.io" spec: group: "source.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/helmcharts.yaml b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/helmcharts.yaml index 915d4961c..51a0bce96 100644 --- a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/helmcharts.yaml +++ b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/helmcharts.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "helmcharts.source.toolkit.fluxcd.io" spec: group: "source.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/helmrepositories.yaml b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/helmrepositories.yaml index a8032c6a1..7efd5f8e7 100644 --- a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/helmrepositories.yaml +++ b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta1/helmrepositories.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "helmrepositories.source.toolkit.fluxcd.io" spec: group: "source.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/buckets.yaml b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/buckets.yaml index ec3ade4ee..5a6f55006 100644 --- a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/buckets.yaml +++ b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/buckets.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "buckets.source.toolkit.fluxcd.io" spec: group: "source.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/gitrepositories.yaml b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/gitrepositories.yaml index dbc45725d..2566c93c1 100644 --- a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/gitrepositories.yaml +++ b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/gitrepositories.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "gitrepositories.source.toolkit.fluxcd.io" spec: group: "source.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/helmcharts.yaml b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/helmcharts.yaml index 0603e91b6..3df66288c 100644 --- a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/helmcharts.yaml +++ b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/helmcharts.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "helmcharts.source.toolkit.fluxcd.io" spec: group: "source.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/helmrepositories.yaml b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/helmrepositories.yaml index 417a2d46e..761562237 100644 --- a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/helmrepositories.yaml +++ b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/helmrepositories.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "helmrepositories.source.toolkit.fluxcd.io" spec: group: "source.toolkit.fluxcd.io" diff --git a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/ocirepositories.yaml b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/ocirepositories.yaml index cf4a16973..495633caf 100644 --- a/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/ocirepositories.yaml +++ b/crd-catalog/fluxcd/source-controller/source.toolkit.fluxcd.io/v1beta2/ocirepositories.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "ocirepositories.source.toolkit.fluxcd.io" spec: group: "source.toolkit.fluxcd.io" diff --git a/crd-catalog/gravitational/teleport/resources.teleport.dev/v2/teleportprovisiontokens.yaml b/crd-catalog/gravitational/teleport/resources.teleport.dev/v2/teleportprovisiontokens.yaml index 66d8c3bd1..efe4527c6 100644 --- a/crd-catalog/gravitational/teleport/resources.teleport.dev/v2/teleportprovisiontokens.yaml +++ b/crd-catalog/gravitational/teleport/resources.teleport.dev/v2/teleportprovisiontokens.yaml @@ -60,7 +60,7 @@ spec: nullable: true type: "array" aws_role: - description: "AWSRole is used for the EC2 join method and is the the ARN of the AWS role that the auth server will assume in order to call the ec2 API." + description: "AWSRole is used for the EC2 join method and is the ARN of the AWS role that the auth server will assume in order to call the ec2 API." type: "string" type: "object" nullable: true diff --git a/crd-catalog/hashicorp/terraform-cloud-operator/app.terraform.io/v1alpha2/workspaces.yaml b/crd-catalog/hashicorp/terraform-cloud-operator/app.terraform.io/v1alpha2/workspaces.yaml index 6698d3e5d..e545e052e 100644 --- a/crd-catalog/hashicorp/terraform-cloud-operator/app.terraform.io/v1alpha2/workspaces.yaml +++ b/crd-catalog/hashicorp/terraform-cloud-operator/app.terraform.io/v1alpha2/workspaces.yaml @@ -523,6 +523,33 @@ spec: description: "Workspace last update timestamp." format: "int64" type: "integer" + variables: + description: "Workspace variables." + items: + properties: + category: + description: "Category of the variable." + type: "string" + id: + description: "ID of the variable." + type: "string" + name: + description: "Name of the variable." + type: "string" + valueID: + description: "ValueID is a hash of the variable on the CRD end." + type: "string" + versionID: + description: "VersionID is a hash of the variable on the TFC end." + type: "string" + required: + - "category" + - "id" + - "name" + - "valueID" + - "versionID" + type: "object" + type: "array" workspaceID: description: "Workspace ID that is managed by the controller." type: "string" diff --git a/crd-catalog/hashicorp/vault-secrets-operator/secrets.hashicorp.com/v1beta1/vaultdynamicsecrets.yaml b/crd-catalog/hashicorp/vault-secrets-operator/secrets.hashicorp.com/v1beta1/vaultdynamicsecrets.yaml index 8e0390662..c93805583 100644 --- a/crd-catalog/hashicorp/vault-secrets-operator/secrets.hashicorp.com/v1beta1/vaultdynamicsecrets.yaml +++ b/crd-catalog/hashicorp/vault-secrets-operator/secrets.hashicorp.com/v1beta1/vaultdynamicsecrets.yaml @@ -251,6 +251,16 @@ spec: - "rotationPeriod" - "ttl" type: "object" + vaultClientMeta: + description: "VaultClientMeta contains the status of the Vault client and is used during\nresource reconciliation." + properties: + cacheKey: + description: "CacheKey is the unique key used to identify the client cache." + type: "string" + id: + description: "ID is the Vault ID of the authenticated client. The ID should never contain\nany sensitive information." + type: "string" + type: "object" required: - "lastGeneration" - "lastRenewalTime" diff --git a/crd-catalog/instana/instana-agent-operator/instana.io/v1/agents.yaml b/crd-catalog/instana/instana-agent-operator/instana.io/v1/agents.yaml index 27d6264e0..122e72f88 100644 --- a/crd-catalog/instana/instana-agent-operator/instana.io/v1/agents.yaml +++ b/crd-catalog/instana/instana-agent-operator/instana.io/v1/agents.yaml @@ -122,6 +122,9 @@ spec: listenAddress: description: "ListenAddress is the IP addresses the Agent HTTP server will listen on. Normally this will just be localhost (`127.0.0.1`), the pod public IP and any container runtime bridge interfaces. Set `listenAddress: *` for making the Agent listen on all network interfaces." type: "string" + minReadySeconds: + description: "The minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing, for it to be considered available" + type: "integer" mode: description: "Set agent mode, possible options are APM, INFRASTRUCTURE or AWS. KUBERNETES should not be used but instead enabled via `kubernetes.deployment.enabled: true`." type: "string" @@ -787,6 +790,9 @@ spec: properties: enabled: type: "boolean" + minReadySeconds: + description: "The minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing, for it to be considered available" + type: "integer" pod: description: "Override pod resource requirements for the Kubernetes Sensor pods." properties: @@ -844,6 +850,9 @@ spec: properties: enabled: type: "boolean" + minReadySeconds: + description: "The minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing, for it to be considered available" + type: "integer" pod: description: "Override pod resource requirements for the Kubernetes Sensor pods." properties: diff --git a/crd-catalog/istio/istio/extensions.istio.io/v1alpha1/wasmplugins.yaml b/crd-catalog/istio/istio/extensions.istio.io/v1alpha1/wasmplugins.yaml index 6555328bc..f469ba72c 100644 --- a/crd-catalog/istio/istio/extensions.istio.io/v1alpha1/wasmplugins.yaml +++ b/crd-catalog/istio/istio/extensions.istio.io/v1alpha1/wasmplugins.yaml @@ -99,6 +99,7 @@ spec: type: "string" priority: description: "Determines ordering of `WasmPlugins` in the same `phase`." + format: "int32" nullable: true type: "integer" selector: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1/destinationrules.yaml b/crd-catalog/istio/istio/networking.istio.io/v1/destinationrules.yaml index 4ba7fd1cd..08ce33650 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1/destinationrules.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1/destinationrules.yaml @@ -125,6 +125,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -205,16 +207,19 @@ spec: properties: tableSize: description: "The table size for Maglev hashing." + minimum: 0.0 type: "integer" type: "object" minimumRingSize: description: "Deprecated." + minimum: 0.0 type: "integer" ringHash: description: "The ring/modulo hash load balancer implements consistent hashing to backend hosts." properties: minimumRingSize: description: "The minimum number of virtual nodes to use for the hash ring." + minimum: 0.0 type: "integer" type: "object" useSourceIp: @@ -232,6 +237,8 @@ spec: type: "string" to: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Map of upstream localities to traffic distribution weights." type: "object" @@ -280,6 +287,8 @@ spec: type: "string" consecutive5xxErrors: description: "Number of 5xx errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveErrors: @@ -287,10 +296,14 @@ spec: type: "integer" consecutiveGatewayErrors: description: "Number of gateway errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveLocalOriginFailures: description: "The number of consecutive locally originated failures before ejection occurs." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" interval: @@ -375,6 +388,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -455,16 +470,19 @@ spec: properties: tableSize: description: "The table size for Maglev hashing." + minimum: 0.0 type: "integer" type: "object" minimumRingSize: description: "Deprecated." + minimum: 0.0 type: "integer" ringHash: description: "The ring/modulo hash load balancer implements consistent hashing to backend hosts." properties: minimumRingSize: description: "The minimum number of virtual nodes to use for the hash ring." + minimum: 0.0 type: "integer" type: "object" useSourceIp: @@ -482,6 +500,8 @@ spec: type: "string" to: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Map of upstream localities to traffic distribution weights." type: "object" @@ -530,6 +550,8 @@ spec: type: "string" consecutive5xxErrors: description: "Number of 5xx errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveErrors: @@ -537,10 +559,14 @@ spec: type: "integer" consecutiveGatewayErrors: description: "Number of gateway errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveLocalOriginFailures: description: "The number of consecutive locally originated failures before ejection occurs." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" interval: @@ -562,6 +588,8 @@ spec: description: "Specifies the number of a port on the destination service on which this policy is being applied." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" tls: @@ -665,6 +693,8 @@ spec: type: "string" targetPort: description: "Specifies a port to which the downstream connection is tunneled." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "targetHost" @@ -741,6 +771,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -821,16 +853,19 @@ spec: properties: tableSize: description: "The table size for Maglev hashing." + minimum: 0.0 type: "integer" type: "object" minimumRingSize: description: "Deprecated." + minimum: 0.0 type: "integer" ringHash: description: "The ring/modulo hash load balancer implements consistent hashing to backend hosts." properties: minimumRingSize: description: "The minimum number of virtual nodes to use for the hash ring." + minimum: 0.0 type: "integer" type: "object" useSourceIp: @@ -848,6 +883,8 @@ spec: type: "string" to: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Map of upstream localities to traffic distribution weights." type: "object" @@ -896,6 +933,8 @@ spec: type: "string" consecutive5xxErrors: description: "Number of 5xx errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveErrors: @@ -903,10 +942,14 @@ spec: type: "integer" consecutiveGatewayErrors: description: "Number of gateway errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveLocalOriginFailures: description: "The number of consecutive locally originated failures before ejection occurs." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" interval: @@ -991,6 +1034,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -1071,16 +1116,19 @@ spec: properties: tableSize: description: "The table size for Maglev hashing." + minimum: 0.0 type: "integer" type: "object" minimumRingSize: description: "Deprecated." + minimum: 0.0 type: "integer" ringHash: description: "The ring/modulo hash load balancer implements consistent hashing to backend hosts." properties: minimumRingSize: description: "The minimum number of virtual nodes to use for the hash ring." + minimum: 0.0 type: "integer" type: "object" useSourceIp: @@ -1098,6 +1146,8 @@ spec: type: "string" to: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Map of upstream localities to traffic distribution weights." type: "object" @@ -1146,6 +1196,8 @@ spec: type: "string" consecutive5xxErrors: description: "Number of 5xx errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveErrors: @@ -1153,10 +1205,14 @@ spec: type: "integer" consecutiveGatewayErrors: description: "Number of gateway errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveLocalOriginFailures: description: "The number of consecutive locally originated failures before ejection occurs." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" interval: @@ -1178,6 +1234,8 @@ spec: description: "Specifies the number of a port on the destination service on which this policy is being applied." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" tls: @@ -1281,6 +1339,8 @@ spec: type: "string" targetPort: description: "Specifies a port to which the downstream connection is tunneled." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "targetHost" diff --git a/crd-catalog/istio/istio/networking.istio.io/v1/gateways.yaml b/crd-catalog/istio/istio/networking.istio.io/v1/gateways.yaml index 180ae9e44..e1458cf33 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1/gateways.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1/gateways.yaml @@ -60,11 +60,15 @@ spec: type: "string" number: description: "A valid non-negative integer port number." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" protocol: description: "The protocol exposed on the port." type: "string" targetPort: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "number" diff --git a/crd-catalog/istio/istio/networking.istio.io/v1/serviceentries.yaml b/crd-catalog/istio/istio/networking.istio.io/v1/serviceentries.yaml index 049c98d15..b3c153ec9 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1/serviceentries.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1/serviceentries.yaml @@ -72,6 +72,8 @@ spec: type: "string" ports: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Set of ports associated with the endpoint." type: "object" @@ -80,6 +82,8 @@ spec: type: "string" weight: description: "The load balancing weight associated with the endpoint." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" type: "array" @@ -108,12 +112,16 @@ spec: type: "string" number: description: "A valid non-negative integer port number." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" protocol: description: "The protocol exposed on the port." type: "string" targetPort: description: "The port number on the endpoint where the traffic will be received." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "number" diff --git a/crd-catalog/istio/istio/networking.istio.io/v1/sidecars.yaml b/crd-catalog/istio/istio/networking.istio.io/v1/sidecars.yaml index 98171ee95..acd013267 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1/sidecars.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1/sidecars.yaml @@ -55,11 +55,15 @@ spec: type: "string" number: description: "A valid non-negative integer port number." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" protocol: description: "The protocol exposed on the port." type: "string" targetPort: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" required: @@ -130,6 +134,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -215,6 +221,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -233,11 +241,15 @@ spec: type: "string" number: description: "A valid non-negative integer port number." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" protocol: description: "The protocol exposed on the port." type: "string" targetPort: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" tls: @@ -326,6 +338,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1/virtualservices.yaml b/crd-catalog/istio/istio/networking.istio.io/v1/virtualservices.yaml index aaa94ed46..599f66bca 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1/virtualservices.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1/virtualservices.yaml @@ -156,6 +156,8 @@ spec: type: "object" status: description: "Specifies the HTTP response status to be returned." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "status" @@ -360,6 +362,8 @@ spec: type: "string" port: description: "Specifies the ports on the host that is being addressed." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" queryParams: additionalProperties: @@ -492,6 +496,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: @@ -501,6 +507,8 @@ spec: - "host" type: "object" mirrorPercent: + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" mirrorPercentage: @@ -511,6 +519,8 @@ spec: type: "number" type: "object" mirror_percent: + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" mirrors: @@ -527,6 +537,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: @@ -574,9 +586,13 @@ spec: type: "string" port: description: "On a redirect, overwrite the port portion of the URL with this value." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" redirectCode: description: "On a redirect, Specifies the HTTP status code to use in the redirect response." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" scheme: description: "On a redirect, overwrite the scheme portion of the URL with this value." @@ -637,6 +653,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: @@ -711,6 +729,8 @@ spec: type: "array" port: description: "Specifies the port on the host that is being addressed." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" sourceLabels: additionalProperties: @@ -738,6 +758,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: @@ -776,6 +798,8 @@ spec: type: "array" port: description: "Specifies the port on the host that is being addressed." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" sniHosts: description: "SNI (server name indicator) to match on." @@ -808,6 +832,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1/workloadentries.yaml b/crd-catalog/istio/istio/networking.istio.io/v1/workloadentries.yaml index 4cb748ab2..23190d7a5 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1/workloadentries.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1/workloadentries.yaml @@ -55,6 +55,8 @@ spec: type: "string" ports: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Set of ports associated with the endpoint." type: "object" @@ -63,6 +65,8 @@ spec: type: "string" weight: description: "The load balancing weight associated with the endpoint." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" status: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1/workloadgroups.yaml b/crd-catalog/istio/istio/networking.istio.io/v1/workloadgroups.yaml index 2fde2287f..33088ab77 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1/workloadgroups.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1/workloadgroups.yaml @@ -97,6 +97,8 @@ spec: type: "string" port: description: "Port on which the endpoint lives." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" scheme: type: "string" @@ -121,6 +123,8 @@ spec: host: type: "string" port: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "port" @@ -149,6 +153,8 @@ spec: type: "string" ports: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Set of ports associated with the endpoint." type: "object" @@ -157,6 +163,8 @@ spec: type: "string" weight: description: "The load balancing weight associated with the endpoint." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" required: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/destinationrules.yaml b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/destinationrules.yaml index 1e62a6302..7109ed2ae 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/destinationrules.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/destinationrules.yaml @@ -125,6 +125,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -205,16 +207,19 @@ spec: properties: tableSize: description: "The table size for Maglev hashing." + minimum: 0.0 type: "integer" type: "object" minimumRingSize: description: "Deprecated." + minimum: 0.0 type: "integer" ringHash: description: "The ring/modulo hash load balancer implements consistent hashing to backend hosts." properties: minimumRingSize: description: "The minimum number of virtual nodes to use for the hash ring." + minimum: 0.0 type: "integer" type: "object" useSourceIp: @@ -232,6 +237,8 @@ spec: type: "string" to: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Map of upstream localities to traffic distribution weights." type: "object" @@ -280,6 +287,8 @@ spec: type: "string" consecutive5xxErrors: description: "Number of 5xx errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveErrors: @@ -287,10 +296,14 @@ spec: type: "integer" consecutiveGatewayErrors: description: "Number of gateway errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveLocalOriginFailures: description: "The number of consecutive locally originated failures before ejection occurs." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" interval: @@ -375,6 +388,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -455,16 +470,19 @@ spec: properties: tableSize: description: "The table size for Maglev hashing." + minimum: 0.0 type: "integer" type: "object" minimumRingSize: description: "Deprecated." + minimum: 0.0 type: "integer" ringHash: description: "The ring/modulo hash load balancer implements consistent hashing to backend hosts." properties: minimumRingSize: description: "The minimum number of virtual nodes to use for the hash ring." + minimum: 0.0 type: "integer" type: "object" useSourceIp: @@ -482,6 +500,8 @@ spec: type: "string" to: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Map of upstream localities to traffic distribution weights." type: "object" @@ -530,6 +550,8 @@ spec: type: "string" consecutive5xxErrors: description: "Number of 5xx errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveErrors: @@ -537,10 +559,14 @@ spec: type: "integer" consecutiveGatewayErrors: description: "Number of gateway errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveLocalOriginFailures: description: "The number of consecutive locally originated failures before ejection occurs." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" interval: @@ -562,6 +588,8 @@ spec: description: "Specifies the number of a port on the destination service on which this policy is being applied." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" tls: @@ -665,6 +693,8 @@ spec: type: "string" targetPort: description: "Specifies a port to which the downstream connection is tunneled." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "targetHost" @@ -741,6 +771,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -821,16 +853,19 @@ spec: properties: tableSize: description: "The table size for Maglev hashing." + minimum: 0.0 type: "integer" type: "object" minimumRingSize: description: "Deprecated." + minimum: 0.0 type: "integer" ringHash: description: "The ring/modulo hash load balancer implements consistent hashing to backend hosts." properties: minimumRingSize: description: "The minimum number of virtual nodes to use for the hash ring." + minimum: 0.0 type: "integer" type: "object" useSourceIp: @@ -848,6 +883,8 @@ spec: type: "string" to: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Map of upstream localities to traffic distribution weights." type: "object" @@ -896,6 +933,8 @@ spec: type: "string" consecutive5xxErrors: description: "Number of 5xx errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveErrors: @@ -903,10 +942,14 @@ spec: type: "integer" consecutiveGatewayErrors: description: "Number of gateway errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveLocalOriginFailures: description: "The number of consecutive locally originated failures before ejection occurs." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" interval: @@ -991,6 +1034,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -1071,16 +1116,19 @@ spec: properties: tableSize: description: "The table size for Maglev hashing." + minimum: 0.0 type: "integer" type: "object" minimumRingSize: description: "Deprecated." + minimum: 0.0 type: "integer" ringHash: description: "The ring/modulo hash load balancer implements consistent hashing to backend hosts." properties: minimumRingSize: description: "The minimum number of virtual nodes to use for the hash ring." + minimum: 0.0 type: "integer" type: "object" useSourceIp: @@ -1098,6 +1146,8 @@ spec: type: "string" to: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Map of upstream localities to traffic distribution weights." type: "object" @@ -1146,6 +1196,8 @@ spec: type: "string" consecutive5xxErrors: description: "Number of 5xx errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveErrors: @@ -1153,10 +1205,14 @@ spec: type: "integer" consecutiveGatewayErrors: description: "Number of gateway errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveLocalOriginFailures: description: "The number of consecutive locally originated failures before ejection occurs." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" interval: @@ -1178,6 +1234,8 @@ spec: description: "Specifies the number of a port on the destination service on which this policy is being applied." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" tls: @@ -1281,6 +1339,8 @@ spec: type: "string" targetPort: description: "Specifies a port to which the downstream connection is tunneled." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "targetHost" diff --git a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/envoyfilters.yaml b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/envoyfilters.yaml index e2c17825c..1e96e2ffc 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/envoyfilters.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/envoyfilters.yaml @@ -74,6 +74,8 @@ spec: type: "string" portNumber: description: "The service port for which this cluster was generated." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" service: description: "The fully qualified service name for this cluster." @@ -101,6 +103,8 @@ spec: type: "string" destinationPort: description: "The destination_port value used by a filter chain's match condition." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" filter: description: "The name of a specific filter to apply the patch to." @@ -136,6 +140,8 @@ spec: type: "string" portNumber: description: "The service port/gateway port to which traffic is being sent/received." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" proxy: @@ -164,6 +170,8 @@ spec: type: "string" portNumber: description: "The service port number or gateway server port number for which this route configuration was generated." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" vhost: description: "Match a specific virtual host in a route configuration and apply the patch to the virtual host." diff --git a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/gateways.yaml b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/gateways.yaml index 801e9208a..c37f91ab0 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/gateways.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/gateways.yaml @@ -60,11 +60,15 @@ spec: type: "string" number: description: "A valid non-negative integer port number." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" protocol: description: "The protocol exposed on the port." type: "string" targetPort: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "number" diff --git a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/serviceentries.yaml b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/serviceentries.yaml index b57f51f0d..b7c119f48 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/serviceentries.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/serviceentries.yaml @@ -72,6 +72,8 @@ spec: type: "string" ports: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Set of ports associated with the endpoint." type: "object" @@ -80,6 +82,8 @@ spec: type: "string" weight: description: "The load balancing weight associated with the endpoint." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" type: "array" @@ -108,12 +112,16 @@ spec: type: "string" number: description: "A valid non-negative integer port number." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" protocol: description: "The protocol exposed on the port." type: "string" targetPort: description: "The port number on the endpoint where the traffic will be received." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "number" diff --git a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/sidecars.yaml b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/sidecars.yaml index 5b7247f93..08513c842 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/sidecars.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/sidecars.yaml @@ -55,11 +55,15 @@ spec: type: "string" number: description: "A valid non-negative integer port number." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" protocol: description: "The protocol exposed on the port." type: "string" targetPort: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" required: @@ -130,6 +134,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -215,6 +221,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -233,11 +241,15 @@ spec: type: "string" number: description: "A valid non-negative integer port number." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" protocol: description: "The protocol exposed on the port." type: "string" targetPort: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" tls: @@ -326,6 +338,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/virtualservices.yaml b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/virtualservices.yaml index 6814065dd..c193098ad 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/virtualservices.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/virtualservices.yaml @@ -156,6 +156,8 @@ spec: type: "object" status: description: "Specifies the HTTP response status to be returned." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "status" @@ -360,6 +362,8 @@ spec: type: "string" port: description: "Specifies the ports on the host that is being addressed." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" queryParams: additionalProperties: @@ -492,6 +496,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: @@ -501,6 +507,8 @@ spec: - "host" type: "object" mirrorPercent: + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" mirrorPercentage: @@ -511,6 +519,8 @@ spec: type: "number" type: "object" mirror_percent: + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" mirrors: @@ -527,6 +537,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: @@ -574,9 +586,13 @@ spec: type: "string" port: description: "On a redirect, overwrite the port portion of the URL with this value." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" redirectCode: description: "On a redirect, Specifies the HTTP status code to use in the redirect response." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" scheme: description: "On a redirect, overwrite the scheme portion of the URL with this value." @@ -637,6 +653,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: @@ -711,6 +729,8 @@ spec: type: "array" port: description: "Specifies the port on the host that is being addressed." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" sourceLabels: additionalProperties: @@ -738,6 +758,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: @@ -776,6 +798,8 @@ spec: type: "array" port: description: "Specifies the port on the host that is being addressed." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" sniHosts: description: "SNI (server name indicator) to match on." @@ -808,6 +832,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/workloadentries.yaml b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/workloadentries.yaml index bea968878..a19cece53 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/workloadentries.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/workloadentries.yaml @@ -55,6 +55,8 @@ spec: type: "string" ports: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Set of ports associated with the endpoint." type: "object" @@ -63,6 +65,8 @@ spec: type: "string" weight: description: "The load balancing weight associated with the endpoint." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" status: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/workloadgroups.yaml b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/workloadgroups.yaml index 1c5ddc7a2..262787fe4 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1alpha3/workloadgroups.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1alpha3/workloadgroups.yaml @@ -97,6 +97,8 @@ spec: type: "string" port: description: "Port on which the endpoint lives." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" scheme: type: "string" @@ -121,6 +123,8 @@ spec: host: type: "string" port: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "port" @@ -149,6 +153,8 @@ spec: type: "string" ports: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Set of ports associated with the endpoint." type: "object" @@ -157,6 +163,8 @@ spec: type: "string" weight: description: "The load balancing weight associated with the endpoint." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" required: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1beta1/destinationrules.yaml b/crd-catalog/istio/istio/networking.istio.io/v1beta1/destinationrules.yaml index 8896e7c34..d2fd69771 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1beta1/destinationrules.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1beta1/destinationrules.yaml @@ -125,6 +125,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -205,16 +207,19 @@ spec: properties: tableSize: description: "The table size for Maglev hashing." + minimum: 0.0 type: "integer" type: "object" minimumRingSize: description: "Deprecated." + minimum: 0.0 type: "integer" ringHash: description: "The ring/modulo hash load balancer implements consistent hashing to backend hosts." properties: minimumRingSize: description: "The minimum number of virtual nodes to use for the hash ring." + minimum: 0.0 type: "integer" type: "object" useSourceIp: @@ -232,6 +237,8 @@ spec: type: "string" to: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Map of upstream localities to traffic distribution weights." type: "object" @@ -280,6 +287,8 @@ spec: type: "string" consecutive5xxErrors: description: "Number of 5xx errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveErrors: @@ -287,10 +296,14 @@ spec: type: "integer" consecutiveGatewayErrors: description: "Number of gateway errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveLocalOriginFailures: description: "The number of consecutive locally originated failures before ejection occurs." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" interval: @@ -375,6 +388,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -455,16 +470,19 @@ spec: properties: tableSize: description: "The table size for Maglev hashing." + minimum: 0.0 type: "integer" type: "object" minimumRingSize: description: "Deprecated." + minimum: 0.0 type: "integer" ringHash: description: "The ring/modulo hash load balancer implements consistent hashing to backend hosts." properties: minimumRingSize: description: "The minimum number of virtual nodes to use for the hash ring." + minimum: 0.0 type: "integer" type: "object" useSourceIp: @@ -482,6 +500,8 @@ spec: type: "string" to: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Map of upstream localities to traffic distribution weights." type: "object" @@ -530,6 +550,8 @@ spec: type: "string" consecutive5xxErrors: description: "Number of 5xx errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveErrors: @@ -537,10 +559,14 @@ spec: type: "integer" consecutiveGatewayErrors: description: "Number of gateway errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveLocalOriginFailures: description: "The number of consecutive locally originated failures before ejection occurs." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" interval: @@ -562,6 +588,8 @@ spec: description: "Specifies the number of a port on the destination service on which this policy is being applied." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" tls: @@ -665,6 +693,8 @@ spec: type: "string" targetPort: description: "Specifies a port to which the downstream connection is tunneled." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "targetHost" @@ -741,6 +771,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -821,16 +853,19 @@ spec: properties: tableSize: description: "The table size for Maglev hashing." + minimum: 0.0 type: "integer" type: "object" minimumRingSize: description: "Deprecated." + minimum: 0.0 type: "integer" ringHash: description: "The ring/modulo hash load balancer implements consistent hashing to backend hosts." properties: minimumRingSize: description: "The minimum number of virtual nodes to use for the hash ring." + minimum: 0.0 type: "integer" type: "object" useSourceIp: @@ -848,6 +883,8 @@ spec: type: "string" to: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Map of upstream localities to traffic distribution weights." type: "object" @@ -896,6 +933,8 @@ spec: type: "string" consecutive5xxErrors: description: "Number of 5xx errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveErrors: @@ -903,10 +942,14 @@ spec: type: "integer" consecutiveGatewayErrors: description: "Number of gateway errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveLocalOriginFailures: description: "The number of consecutive locally originated failures before ejection occurs." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" interval: @@ -991,6 +1034,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -1071,16 +1116,19 @@ spec: properties: tableSize: description: "The table size for Maglev hashing." + minimum: 0.0 type: "integer" type: "object" minimumRingSize: description: "Deprecated." + minimum: 0.0 type: "integer" ringHash: description: "The ring/modulo hash load balancer implements consistent hashing to backend hosts." properties: minimumRingSize: description: "The minimum number of virtual nodes to use for the hash ring." + minimum: 0.0 type: "integer" type: "object" useSourceIp: @@ -1098,6 +1146,8 @@ spec: type: "string" to: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Map of upstream localities to traffic distribution weights." type: "object" @@ -1146,6 +1196,8 @@ spec: type: "string" consecutive5xxErrors: description: "Number of 5xx errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveErrors: @@ -1153,10 +1205,14 @@ spec: type: "integer" consecutiveGatewayErrors: description: "Number of gateway errors before a host is ejected from the connection pool." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" consecutiveLocalOriginFailures: description: "The number of consecutive locally originated failures before ejection occurs." + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" interval: @@ -1178,6 +1234,8 @@ spec: description: "Specifies the number of a port on the destination service on which this policy is being applied." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" tls: @@ -1281,6 +1339,8 @@ spec: type: "string" targetPort: description: "Specifies a port to which the downstream connection is tunneled." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "targetHost" diff --git a/crd-catalog/istio/istio/networking.istio.io/v1beta1/gateways.yaml b/crd-catalog/istio/istio/networking.istio.io/v1beta1/gateways.yaml index ed0a605b8..92675793b 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1beta1/gateways.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1beta1/gateways.yaml @@ -60,11 +60,15 @@ spec: type: "string" number: description: "A valid non-negative integer port number." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" protocol: description: "The protocol exposed on the port." type: "string" targetPort: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "number" diff --git a/crd-catalog/istio/istio/networking.istio.io/v1beta1/proxyconfigs.yaml b/crd-catalog/istio/istio/networking.istio.io/v1beta1/proxyconfigs.yaml index d7f45fb02..5c43fa73b 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1beta1/proxyconfigs.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1beta1/proxyconfigs.yaml @@ -30,6 +30,7 @@ spec: properties: concurrency: description: "The number of worker threads to run." + format: "int32" nullable: true type: "integer" environmentVariables: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1beta1/serviceentries.yaml b/crd-catalog/istio/istio/networking.istio.io/v1beta1/serviceentries.yaml index ed5eb6297..49d785e0c 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1beta1/serviceentries.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1beta1/serviceentries.yaml @@ -72,6 +72,8 @@ spec: type: "string" ports: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Set of ports associated with the endpoint." type: "object" @@ -80,6 +82,8 @@ spec: type: "string" weight: description: "The load balancing weight associated with the endpoint." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" type: "array" @@ -108,12 +112,16 @@ spec: type: "string" number: description: "A valid non-negative integer port number." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" protocol: description: "The protocol exposed on the port." type: "string" targetPort: description: "The port number on the endpoint where the traffic will be received." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "number" diff --git a/crd-catalog/istio/istio/networking.istio.io/v1beta1/sidecars.yaml b/crd-catalog/istio/istio/networking.istio.io/v1beta1/sidecars.yaml index 3ca54e09a..d3e728753 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1beta1/sidecars.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1beta1/sidecars.yaml @@ -55,11 +55,15 @@ spec: type: "string" number: description: "A valid non-negative integer port number." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" protocol: description: "The protocol exposed on the port." type: "string" targetPort: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" required: @@ -130,6 +134,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -215,6 +221,8 @@ spec: type: "string" probes: description: "Maximum number of keepalive probes to send without response before deciding the connection is dead." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" time: description: "The time duration a connection needs to be idle before keep-alive probes start being sent." @@ -233,11 +241,15 @@ spec: type: "string" number: description: "A valid non-negative integer port number." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" protocol: description: "The protocol exposed on the port." type: "string" targetPort: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" tls: @@ -326,6 +338,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1beta1/virtualservices.yaml b/crd-catalog/istio/istio/networking.istio.io/v1beta1/virtualservices.yaml index 6b70efccd..c1324b035 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1beta1/virtualservices.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1beta1/virtualservices.yaml @@ -156,6 +156,8 @@ spec: type: "object" status: description: "Specifies the HTTP response status to be returned." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "status" @@ -360,6 +362,8 @@ spec: type: "string" port: description: "Specifies the ports on the host that is being addressed." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" queryParams: additionalProperties: @@ -492,6 +496,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: @@ -501,6 +507,8 @@ spec: - "host" type: "object" mirrorPercent: + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" mirrorPercentage: @@ -511,6 +519,8 @@ spec: type: "number" type: "object" mirror_percent: + maximum: 4294967295.0 + minimum: 0.0 nullable: true type: "integer" mirrors: @@ -527,6 +537,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: @@ -574,9 +586,13 @@ spec: type: "string" port: description: "On a redirect, overwrite the port portion of the URL with this value." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" redirectCode: description: "On a redirect, Specifies the HTTP status code to use in the redirect response." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" scheme: description: "On a redirect, overwrite the scheme portion of the URL with this value." @@ -637,6 +653,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: @@ -711,6 +729,8 @@ spec: type: "array" port: description: "Specifies the port on the host that is being addressed." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" sourceLabels: additionalProperties: @@ -738,6 +758,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: @@ -776,6 +798,8 @@ spec: type: "array" port: description: "Specifies the port on the host that is being addressed." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" sniHosts: description: "SNI (server name indicator) to match on." @@ -808,6 +832,8 @@ spec: description: "Specifies the port on the host that is being addressed." properties: number: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" subset: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1beta1/workloadentries.yaml b/crd-catalog/istio/istio/networking.istio.io/v1beta1/workloadentries.yaml index 3cfd3b6ed..591a11b89 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1beta1/workloadentries.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1beta1/workloadentries.yaml @@ -55,6 +55,8 @@ spec: type: "string" ports: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Set of ports associated with the endpoint." type: "object" @@ -63,6 +65,8 @@ spec: type: "string" weight: description: "The load balancing weight associated with the endpoint." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" status: diff --git a/crd-catalog/istio/istio/networking.istio.io/v1beta1/workloadgroups.yaml b/crd-catalog/istio/istio/networking.istio.io/v1beta1/workloadgroups.yaml index e359681cf..ad3f84e78 100644 --- a/crd-catalog/istio/istio/networking.istio.io/v1beta1/workloadgroups.yaml +++ b/crd-catalog/istio/istio/networking.istio.io/v1beta1/workloadgroups.yaml @@ -97,6 +97,8 @@ spec: type: "string" port: description: "Port on which the endpoint lives." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" scheme: type: "string" @@ -121,6 +123,8 @@ spec: host: type: "string" port: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" required: - "port" @@ -149,6 +153,8 @@ spec: type: "string" ports: additionalProperties: + maximum: 4294967295.0 + minimum: 0.0 type: "integer" description: "Set of ports associated with the endpoint." type: "object" @@ -157,6 +163,8 @@ spec: type: "string" weight: description: "The load balancing weight associated with the endpoint." + maximum: 4294967295.0 + minimum: 0.0 type: "integer" type: "object" required: diff --git a/crd-catalog/istio/istio/telemetry.istio.io/v1/telemetries.yaml b/crd-catalog/istio/istio/telemetry.istio.io/v1/telemetries.yaml index 526e44a99..15b49d879 100644 --- a/crd-catalog/istio/istio/telemetry.istio.io/v1/telemetries.yaml +++ b/crd-catalog/istio/istio/telemetry.istio.io/v1/telemetries.yaml @@ -300,6 +300,7 @@ spec: type: "array" randomSamplingPercentage: description: "Controls the rate at which traffic will be selected for tracing if no prior sampling decision has been made." + format: "double" maximum: 100.0 minimum: 0.0 nullable: true diff --git a/crd-catalog/istio/istio/telemetry.istio.io/v1alpha1/telemetries.yaml b/crd-catalog/istio/istio/telemetry.istio.io/v1alpha1/telemetries.yaml index 4be5c9b8e..9a022d9aa 100644 --- a/crd-catalog/istio/istio/telemetry.istio.io/v1alpha1/telemetries.yaml +++ b/crd-catalog/istio/istio/telemetry.istio.io/v1alpha1/telemetries.yaml @@ -300,6 +300,7 @@ spec: type: "array" randomSamplingPercentage: description: "Controls the rate at which traffic will be selected for tracing if no prior sampling decision has been made." + format: "double" maximum: 100.0 minimum: 0.0 nullable: true diff --git a/crd-catalog/karmada-io/karmada/work.karmada.io/v1alpha2/clusterresourcebindings.yaml b/crd-catalog/karmada-io/karmada/work.karmada.io/v1alpha2/clusterresourcebindings.yaml index 8530d3fd7..808c00666 100644 --- a/crd-catalog/karmada-io/karmada/work.karmada.io/v1alpha2/clusterresourcebindings.yaml +++ b/crd-catalog/karmada-io/karmada/work.karmada.io/v1alpha2/clusterresourcebindings.yaml @@ -593,6 +593,10 @@ spec: - "name" type: "object" type: "array" + rescheduleTriggeredAt: + description: "RescheduleTriggeredAt is a timestamp representing when the referenced resource is triggered rescheduling. When this field is updated, it means a rescheduling is manually triggered by user, and the expected behavior of this action is to do a complete recalculation without referring to last scheduling results. It works with the status.lastScheduledTime field, and only when this timestamp is later than timestamp in status.lastScheduledTime will the rescheduling actually execute, otherwise, ignored. \n It is represented in RFC3339 form (like '2006-01-02T15:04:05Z') and is in UTC." + format: "date-time" + type: "string" resource: description: "Resource represents the Kubernetes resource to be propagated." properties: @@ -701,6 +705,10 @@ spec: - "type" type: "object" type: "array" + lastScheduledTime: + description: "LastScheduledTime representing the latest timestamp when scheduler successfully finished a scheduling. It is represented in RFC3339 form (like '2006-01-02T15:04:05Z') and is in UTC." + format: "date-time" + type: "string" schedulerObservedGeneration: description: "SchedulerObservedGeneration is the generation(.metadata.generation) observed by the scheduler. If SchedulerObservedGeneration is less than the generation in metadata means the scheduler hasn't confirmed the scheduling result or hasn't done the schedule yet." format: "int64" diff --git a/crd-catalog/karmada-io/karmada/work.karmada.io/v1alpha2/resourcebindings.yaml b/crd-catalog/karmada-io/karmada/work.karmada.io/v1alpha2/resourcebindings.yaml index 7fb760aeb..72992b4d9 100644 --- a/crd-catalog/karmada-io/karmada/work.karmada.io/v1alpha2/resourcebindings.yaml +++ b/crd-catalog/karmada-io/karmada/work.karmada.io/v1alpha2/resourcebindings.yaml @@ -593,6 +593,10 @@ spec: - "name" type: "object" type: "array" + rescheduleTriggeredAt: + description: "RescheduleTriggeredAt is a timestamp representing when the referenced resource is triggered rescheduling. When this field is updated, it means a rescheduling is manually triggered by user, and the expected behavior of this action is to do a complete recalculation without referring to last scheduling results. It works with the status.lastScheduledTime field, and only when this timestamp is later than timestamp in status.lastScheduledTime will the rescheduling actually execute, otherwise, ignored. \n It is represented in RFC3339 form (like '2006-01-02T15:04:05Z') and is in UTC." + format: "date-time" + type: "string" resource: description: "Resource represents the Kubernetes resource to be propagated." properties: @@ -701,6 +705,10 @@ spec: - "type" type: "object" type: "array" + lastScheduledTime: + description: "LastScheduledTime representing the latest timestamp when scheduler successfully finished a scheduling. It is represented in RFC3339 form (like '2006-01-02T15:04:05Z') and is in UTC." + format: "date-time" + type: "string" schedulerObservedGeneration: description: "SchedulerObservedGeneration is the generation(.metadata.generation) observed by the scheduler. If SchedulerObservedGeneration is less than the generation in metadata means the scheduler hasn't confirmed the scheduling result or hasn't done the schedule yet." format: "int64" diff --git a/crd-catalog/kiali/kiali-operator/kiali.io/v1alpha1/kialis.yaml b/crd-catalog/kiali/kiali-operator/kiali.io/v1alpha1/kialis.yaml index 9a266c48b..eb04abecf 100644 --- a/crd-catalog/kiali/kiali-operator/kiali.io/v1alpha1/kialis.yaml +++ b/crd-catalog/kiali/kiali-operator/kiali.io/v1alpha1/kialis.yaml @@ -103,12 +103,6 @@ spec: openshift: description: "To learn more about these settings and how to configure the OpenShift authentication strategy, read the documentation at https://kiali.io/docs/configuration/authentication/openshift/" properties: - auth_timeout: - description: "The amount of time in seconds Kiali will wait for a response from the OpenShift API server when requesting authentication results." - type: "integer" - client_id_prefix: - description: "The Route resource name and OAuthClient resource name will have this value as its prefix. This value normally should never change. The installer will ensure this value is set correctly." - type: "string" token_inactivity_timeout: description: "Timeout that overrides the default OpenShift token inactivity timeout. This value represents the maximum amount of time in seconds that can occur between consecutive uses of the token. Tokens become invalid if they are not used within this temporal window. If 0, the Kiali tokens never timeout. OpenShift may have a minimum allowed value - see the OpenShift documentation specific for the version of OpenShift you are using. WARNING: existing tokens will not be affected by changing this setting." type: "integer" diff --git a/crd-catalog/knative/operator/operator.knative.dev/v1beta1/knativeeventings.yaml b/crd-catalog/knative/operator/operator.knative.dev/v1beta1/knativeeventings.yaml index 1a0938d0e..d9b5654d1 100644 --- a/crd-catalog/knative/operator/operator.knative.dev/v1beta1/knativeeventings.yaml +++ b/crd-catalog/knative/operator/operator.knative.dev/v1beta1/knativeeventings.yaml @@ -12,7 +12,7 @@ spec: clientConfig: service: name: "operator-webhook" - namespace: "default" + namespace: "knative-operator" path: "/resource-conversion" conversionReviewVersions: - "v1beta1" diff --git a/crd-catalog/knative/operator/operator.knative.dev/v1beta1/knativeservings.yaml b/crd-catalog/knative/operator/operator.knative.dev/v1beta1/knativeservings.yaml index 68d9a7a59..bb816ad80 100644 --- a/crd-catalog/knative/operator/operator.knative.dev/v1beta1/knativeservings.yaml +++ b/crd-catalog/knative/operator/operator.knative.dev/v1beta1/knativeservings.yaml @@ -12,7 +12,7 @@ spec: clientConfig: service: name: "operator-webhook" - namespace: "default" + namespace: "knative-operator" path: "/resource-conversion" conversionReviewVersions: - "v1beta1" diff --git a/crd-catalog/kubeedge/kubeedge/devices.kubeedge.io/v1beta1/devicemodels.yaml b/crd-catalog/kubeedge/kubeedge/devices.kubeedge.io/v1beta1/devicemodels.yaml index cdd2dcfcf..320826c84 100644 --- a/crd-catalog/kubeedge/kubeedge/devices.kubeedge.io/v1beta1/devicemodels.yaml +++ b/crd-catalog/kubeedge/kubeedge/devices.kubeedge.io/v1beta1/devicemodels.yaml @@ -48,10 +48,10 @@ spec: minimum: type: "string" name: - description: "Required: The device property name." + description: "Required: The device property name. Note: If you need to use the built-in stream data processing function, you need to define Name as saveFrame or saveVideo" type: "string" type: - description: "Required: Type of device property, ENUM: INT,FLOAT,DOUBLE,STRING,BOOLEAN,BYTES" + description: "Required: Type of device property, ENUM: INT,FLOAT,DOUBLE,STRING,BOOLEAN,BYTES,STREAM" enum: - "INT" - "FLOAT" @@ -59,6 +59,7 @@ spec: - "STRING" - "BOOLEAN" - "BYTES" + - "STREAM" type: "string" unit: description: "The unit of the property" diff --git a/crd-catalog/kubeedge/kubeedge/devices.kubeedge.io/v1beta1/devices.yaml b/crd-catalog/kubeedge/kubeedge/devices.kubeedge.io/v1beta1/devices.yaml index 62c70deb5..b62501e33 100644 --- a/crd-catalog/kubeedge/kubeedge/devices.kubeedge.io/v1beta1/devices.yaml +++ b/crd-catalog/kubeedge/kubeedge/devices.kubeedge.io/v1beta1/devices.yaml @@ -63,7 +63,7 @@ spec: - "value" type: "object" name: - description: "Required: The device property name to be accessed. It must be unique." + description: "Required: The device property name to be accessed. It must be unique. Note: If you need to use the built-in stream data processing function, you need to define Name as saveFrame or saveVideo" type: "string" pushMethod: description: "PushMethod represents the protocol used to push data, please ensure that the mapper can access the destination address." @@ -116,6 +116,21 @@ spec: type: "object" type: "object" type: "object" + mysql: + properties: + mysqlClientConfig: + properties: + addr: + description: "mysql address,like localhost:3306" + type: "string" + database: + description: "database name" + type: "string" + userName: + description: "user name" + type: "string" + type: "object" + type: "object" redis: properties: redisClientConfig: diff --git a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/bootstrapproviders.yaml b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/bootstrapproviders.yaml index 9646258ff..7dda72f91 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/bootstrapproviders.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/bootstrapproviders.yaml @@ -191,7 +191,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -221,6 +221,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -278,7 +290,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -308,6 +320,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -364,7 +388,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -394,6 +418,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -451,7 +487,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -481,6 +517,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: diff --git a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/controlplaneproviders.yaml b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/controlplaneproviders.yaml index 118a4ae77..a3cbeeff4 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/controlplaneproviders.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/controlplaneproviders.yaml @@ -191,7 +191,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -221,6 +221,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -278,7 +290,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -308,6 +320,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -364,7 +388,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -394,6 +418,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -451,7 +487,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -481,6 +517,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: diff --git a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/coreproviders.yaml b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/coreproviders.yaml index fc741b35f..48517f26f 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/coreproviders.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/coreproviders.yaml @@ -191,7 +191,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -221,6 +221,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -278,7 +290,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -308,6 +320,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -364,7 +388,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -394,6 +418,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -451,7 +487,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -481,6 +517,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: diff --git a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/infrastructureproviders.yaml b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/infrastructureproviders.yaml index c05b4a2fc..223ac73d1 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/infrastructureproviders.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha1/infrastructureproviders.yaml @@ -191,7 +191,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -221,6 +221,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -278,7 +290,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -308,6 +320,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -364,7 +388,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -394,6 +418,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -451,7 +487,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -481,6 +517,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: diff --git a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/addonproviders.yaml b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/addonproviders.yaml index 6e0a10ded..6591a5a75 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/addonproviders.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/addonproviders.yaml @@ -202,7 +202,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -232,6 +232,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -289,7 +301,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -319,6 +331,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -375,7 +399,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -405,6 +429,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -462,7 +498,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -492,6 +528,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: diff --git a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/bootstrapproviders.yaml b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/bootstrapproviders.yaml index 9593d4dfe..d6bae6bbd 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/bootstrapproviders.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/bootstrapproviders.yaml @@ -202,7 +202,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -232,6 +232,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -289,7 +301,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -319,6 +331,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -375,7 +399,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -405,6 +429,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -462,7 +498,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -492,6 +528,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: diff --git a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/controlplaneproviders.yaml b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/controlplaneproviders.yaml index 8fa493260..6b771715e 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/controlplaneproviders.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/controlplaneproviders.yaml @@ -202,7 +202,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -232,6 +232,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -289,7 +301,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -319,6 +331,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -375,7 +399,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -405,6 +429,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -462,7 +498,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -492,6 +528,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: diff --git a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/coreproviders.yaml b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/coreproviders.yaml index bc75c43de..dfcb8b84b 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/coreproviders.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/coreproviders.yaml @@ -202,7 +202,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -232,6 +232,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -289,7 +301,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -319,6 +331,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -375,7 +399,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -405,6 +429,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -462,7 +498,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -492,6 +528,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: diff --git a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/infrastructureproviders.yaml b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/infrastructureproviders.yaml index a9ebe91bc..fadafc7ea 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/infrastructureproviders.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-operator/operator.cluster.x-k8s.io/v1alpha2/infrastructureproviders.yaml @@ -202,7 +202,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -232,6 +232,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -289,7 +301,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -319,6 +331,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -375,7 +399,7 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -405,6 +429,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: @@ -462,7 +498,7 @@ spec: description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -492,6 +528,18 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: diff --git a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesetbindings.yaml b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesetbindings.yaml index 8b271bc34..49a7a3ad5 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesetbindings.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesetbindings.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "clusterresourcesetbindings.addons.cluster.x-k8s.io" spec: group: "addons.cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesets.yaml b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesets.yaml index 6867b3ee7..eaf7980e3 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesets.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesets.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "clusterresourcesets.addons.cluster.x-k8s.io" spec: group: "addons.cluster.x-k8s.io" @@ -51,11 +51,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesetbindings.yaml b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesetbindings.yaml index 4d26c84c2..467f08d83 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesetbindings.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesetbindings.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "clusterresourcesetbindings.addons.cluster.x-k8s.io" spec: group: "addons.cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesets.yaml b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesets.yaml index df8aee011..68c4bb2af 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesets.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesets.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "clusterresourcesets.addons.cluster.x-k8s.io" spec: group: "addons.cluster.x-k8s.io" @@ -56,11 +56,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesetbindings.yaml b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesetbindings.yaml index c9fac5939..c1e9223fd 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesetbindings.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesetbindings.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "clusterresourcesetbindings.addons.cluster.x-k8s.io" spec: group: "addons.cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesets.yaml b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesets.yaml index fea9fdd46..f3fd567e3 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesets.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesets.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "clusterresourcesets.addons.cluster.x-k8s.io" spec: group: "addons.cluster.x-k8s.io" @@ -55,11 +55,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/clusters.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/clusters.yaml index c25cd57c5..011943df4 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/clusters.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/clusters.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "clusters.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinedeployments.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinedeployments.yaml index 526ddc26c..90bf51fde 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinedeployments.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinedeployments.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machinedeployments.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" @@ -97,11 +97,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinehealthchecks.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinehealthchecks.yaml index 252af4fd1..53c7688b0 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinehealthchecks.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinehealthchecks.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machinehealthchecks.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" @@ -106,11 +106,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinepools.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinepools.yaml index b598cdff4..85c0ca2c0 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinepools.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinepools.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machinepools.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machines.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machines.yaml index dd4d62273..0cb2a0c45 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machines.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machines.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machines.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinesets.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinesets.yaml index c82a40969..79deae33b 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinesets.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinesets.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machinesets.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" @@ -85,11 +85,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusterclasses.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusterclasses.yaml index 17ff5fbb7..1c35eebe0 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusterclasses.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusterclasses.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "clusterclasses.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusters.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusters.yaml index b24215749..9b6a9389d 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusters.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusters.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "clusters.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinedeployments.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinedeployments.yaml index 2191cde94..003dd0600 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinedeployments.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinedeployments.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machinedeployments.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" @@ -106,11 +106,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinehealthchecks.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinehealthchecks.yaml index bbfb5a4d3..349a7b2f8 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinehealthchecks.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinehealthchecks.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machinehealthchecks.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" @@ -114,11 +114,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinepools.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinepools.yaml index 0e1d09e65..c0968aedf 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinepools.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinepools.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machinepools.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machines.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machines.yaml index 4723faeec..ff79b489b 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machines.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machines.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machines.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinesets.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinesets.yaml index 34be78501..2e2136ee7 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinesets.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinesets.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machinesets.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" @@ -94,11 +94,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusterclasses.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusterclasses.yaml index 9767fd488..8d2db5e61 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusterclasses.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusterclasses.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "clusterclasses.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusters.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusters.yaml index fa6fdc869..ef3d65c80 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusters.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusters.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "clusters.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinedeployments.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinedeployments.yaml index 0a5330c01..b00804b41 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinedeployments.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinedeployments.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machinedeployments.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" @@ -117,11 +117,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinehealthchecks.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinehealthchecks.yaml index f2ab35db7..0a325d5af 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinehealthchecks.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinehealthchecks.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machinehealthchecks.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" @@ -113,11 +113,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinepools.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinepools.yaml index 72ceed4d6..0e6d2d357 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinepools.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinepools.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machinepools.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machines.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machines.yaml index 43f5906eb..4ec7c0031 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machines.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machines.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machines.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinesets.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinesets.yaml index 38b32c18c..8b1564c57 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinesets.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinesets.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "machinesets.cluster.x-k8s.io" spec: group: "cluster.x-k8s.io" @@ -101,11 +101,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddressclaims.yaml b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddressclaims.yaml index 742e97b8c..5a289a50c 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddressclaims.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddressclaims.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "ipaddressclaims.ipam.cluster.x-k8s.io" spec: group: "ipam.cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddresses.yaml b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddresses.yaml index a048a9355..62ce981f9 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddresses.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddresses.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "ipaddresses.ipam.cluster.x-k8s.io" spec: group: "ipam.cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddressclaims.yaml b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddressclaims.yaml index a19542ce8..615043d7e 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddressclaims.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddressclaims.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "ipaddressclaims.ipam.cluster.x-k8s.io" spec: group: "ipam.cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddresses.yaml b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddresses.yaml index 6c64ccdfd..5d2954a1e 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddresses.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddresses.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "ipaddresses.ipam.cluster.x-k8s.io" spec: group: "ipam.cluster.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/runtime.cluster.x-k8s.io/v1alpha1/extensionconfigs.yaml b/crd-catalog/kubernetes-sigs/cluster-api/runtime.cluster.x-k8s.io/v1alpha1/extensionconfigs.yaml index 40ee222c4..78a5aca4b 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/runtime.cluster.x-k8s.io/v1alpha1/extensionconfigs.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/runtime.cluster.x-k8s.io/v1alpha1/extensionconfigs.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "extensionconfigs.runtime.cluster.x-k8s.io" spec: group: "runtime.cluster.x-k8s.io" @@ -88,11 +88,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/external-dns/externaldns.k8s.io/v1alpha1/dnsendpoints.yaml b/crd-catalog/kubernetes-sigs/external-dns/externaldns.k8s.io/v1alpha1/dnsendpoints.yaml index a485e9dfd..268eace5e 100644 --- a/crd-catalog/kubernetes-sigs/external-dns/externaldns.k8s.io/v1alpha1/dnsendpoints.yaml +++ b/crd-catalog/kubernetes-sigs/external-dns/externaldns.k8s.io/v1alpha1/dnsendpoints.yaml @@ -2,8 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/external-dns/pull/2007" - controller-gen.kubebuilder.io/version: "v0.5.0" + controller-gen.kubebuilder.io/version: "v0.14.0" name: "dnsendpoints.externaldns.k8s.io" spec: group: "externaldns.k8s.io" @@ -19,10 +18,10 @@ spec: openAPIV3Schema: properties: apiVersion: - description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" type: "string" kind: - description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + description: "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" metadata: type: "object" @@ -57,7 +56,7 @@ spec: format: "int64" type: "integer" recordType: - description: "RecordType type of record, e.g. CNAME, A, SRV, TXT etc" + description: "RecordType type of record, e.g. CNAME, A, AAAA, SRV, TXT etc" type: "string" setIdentifier: description: "Identifier to distinguish multiple records with the same name and type (e.g. Route53 records with routing policies other than 'simple')" @@ -83,9 +82,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/gatewayclasses.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/gatewayclasses.yaml index b4e14356d..be14b0d01 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/gatewayclasses.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/gatewayclasses.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "gatewayclasses.gateway.networking.k8s.io" spec: diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/gateways.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/gateways.yaml index 7bc9306a5..beaa34d66 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/gateways.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/gateways.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "gateways.gateway.networking.k8s.io" spec: @@ -208,11 +208,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/grpcroutes.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/grpcroutes.yaml index e8e9a1c42..e701e3b1e 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/grpcroutes.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/grpcroutes.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "grpcroutes.gateway.networking.k8s.io" spec: diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/httproutes.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/httproutes.yaml index c7bb8cbbd..a666de335 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/httproutes.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/httproutes.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "httproutes.gateway.networking.k8s.io" spec: @@ -1024,11 +1024,11 @@ spec: description: "Timeouts defines the timeouts that can be configured for an HTTP request.\n\n\nSupport: Extended\n\n\n" properties: backendRequest: - description: "BackendRequest specifies a timeout for an individual request from the gateway\nto a backend. This covers the time from when the request first starts being\nsent from the gateway to when the full response has been received from the backend.\n\n\nAn entire client HTTP transaction with a gateway, covered by the Request timeout,\nmay result in more than one call from the gateway to the destination backend,\nfor example, if automatic retries are supported.\n\n\nBecause the Request timeout encompasses the BackendRequest timeout, the value of\nBackendRequest must be <= the value of Request timeout.\n\n\nSupport: Extended" + description: "BackendRequest specifies a timeout for an individual request from the gateway\nto a backend. This covers the time from when the request first starts being\nsent from the gateway to when the full response has been received from the backend.\n\n\nSetting a timeout to the zero duration (e.g. \"0s\") SHOULD disable the timeout\ncompletely. Implementations that cannot completely disable the timeout MUST\ninstead interpret the zero duration as the longest possible value to which\nthe timeout can be set.\n\n\nAn entire client HTTP transaction with a gateway, covered by the Request timeout,\nmay result in more than one call from the gateway to the destination backend,\nfor example, if automatic retries are supported.\n\n\nBecause the Request timeout encompasses the BackendRequest timeout, the value of\nBackendRequest must be <= the value of Request timeout.\n\n\nSupport: Extended" pattern: "^([0-9]{1,5}(h|m|s|ms)){1,4}$" type: "string" request: - description: "Request specifies the maximum duration for a gateway to respond to an HTTP request.\nIf the gateway has not been able to respond before this deadline is met, the gateway\nMUST return a timeout error.\n\n\nFor example, setting the `rules.timeouts.request` field to the value `10s` in an\n`HTTPRoute` will cause a timeout if a client request is taking longer than 10 seconds\nto complete.\n\n\nThis timeout is intended to cover as close to the whole request-response transaction\nas possible although an implementation MAY choose to start the timeout after the entire\nrequest stream has been received instead of immediately after the transaction is\ninitiated by the client.\n\n\nWhen this field is unspecified, request timeout behavior is implementation-specific.\n\n\nSupport: Extended" + description: "Request specifies the maximum duration for a gateway to respond to an HTTP request.\nIf the gateway has not been able to respond before this deadline is met, the gateway\nMUST return a timeout error.\n\n\nFor example, setting the `rules.timeouts.request` field to the value `10s` in an\n`HTTPRoute` will cause a timeout if a client request is taking longer than 10 seconds\nto complete.\n\n\nSetting a timeout to the zero duration (e.g. \"0s\") SHOULD disable the timeout\ncompletely. Implementations that cannot completely disable the timeout MUST\ninstead interpret the zero duration as the longest possible value to which\nthe timeout can be set.\n\n\nThis timeout is intended to cover as close to the whole request-response transaction\nas possible although an implementation MAY choose to start the timeout after the entire\nrequest stream has been received instead of immediately after the transaction is\ninitiated by the client.\n\n\nWhen this field is unspecified, request timeout behavior is implementation-specific.\n\n\nSupport: Extended" pattern: "^([0-9]{1,5}(h|m|s|ms)){1,4}$" type: "string" type: "object" diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/grpcroutes.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/grpcroutes.yaml index 686cfc2e5..9aa9d7770 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/grpcroutes.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/grpcroutes.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "grpcroutes.gateway.networking.k8s.io" spec: diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/referencegrants.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/referencegrants.yaml index 3ffe79a3b..3e3de92b2 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/referencegrants.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/referencegrants.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "referencegrants.gateway.networking.k8s.io" spec: diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/tcproutes.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/tcproutes.yaml index 0b40c1d29..625c91dc0 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/tcproutes.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/tcproutes.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "tcproutes.gateway.networking.k8s.io" spec: diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/tlsroutes.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/tlsroutes.yaml index 24f5ace6c..73ce4ea96 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/tlsroutes.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/tlsroutes.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "tlsroutes.gateway.networking.k8s.io" spec: diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/udproutes.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/udproutes.yaml index 05fca2104..c0459cb2a 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/udproutes.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1alpha2/udproutes.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "udproutes.gateway.networking.k8s.io" spec: diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/gatewayclasses.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/gatewayclasses.yaml index 7ba87d4f6..37d959ed9 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/gatewayclasses.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/gatewayclasses.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "gatewayclasses.gateway.networking.k8s.io" spec: diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/gateways.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/gateways.yaml index 0d35350d6..d76d87f5d 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/gateways.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/gateways.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "gateways.gateway.networking.k8s.io" spec: @@ -208,11 +208,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/httproutes.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/httproutes.yaml index 517c95c14..96dd2c9f7 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/httproutes.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/httproutes.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "httproutes.gateway.networking.k8s.io" spec: @@ -1024,11 +1024,11 @@ spec: description: "Timeouts defines the timeouts that can be configured for an HTTP request.\n\n\nSupport: Extended\n\n\n" properties: backendRequest: - description: "BackendRequest specifies a timeout for an individual request from the gateway\nto a backend. This covers the time from when the request first starts being\nsent from the gateway to when the full response has been received from the backend.\n\n\nAn entire client HTTP transaction with a gateway, covered by the Request timeout,\nmay result in more than one call from the gateway to the destination backend,\nfor example, if automatic retries are supported.\n\n\nBecause the Request timeout encompasses the BackendRequest timeout, the value of\nBackendRequest must be <= the value of Request timeout.\n\n\nSupport: Extended" + description: "BackendRequest specifies a timeout for an individual request from the gateway\nto a backend. This covers the time from when the request first starts being\nsent from the gateway to when the full response has been received from the backend.\n\n\nSetting a timeout to the zero duration (e.g. \"0s\") SHOULD disable the timeout\ncompletely. Implementations that cannot completely disable the timeout MUST\ninstead interpret the zero duration as the longest possible value to which\nthe timeout can be set.\n\n\nAn entire client HTTP transaction with a gateway, covered by the Request timeout,\nmay result in more than one call from the gateway to the destination backend,\nfor example, if automatic retries are supported.\n\n\nBecause the Request timeout encompasses the BackendRequest timeout, the value of\nBackendRequest must be <= the value of Request timeout.\n\n\nSupport: Extended" pattern: "^([0-9]{1,5}(h|m|s|ms)){1,4}$" type: "string" request: - description: "Request specifies the maximum duration for a gateway to respond to an HTTP request.\nIf the gateway has not been able to respond before this deadline is met, the gateway\nMUST return a timeout error.\n\n\nFor example, setting the `rules.timeouts.request` field to the value `10s` in an\n`HTTPRoute` will cause a timeout if a client request is taking longer than 10 seconds\nto complete.\n\n\nThis timeout is intended to cover as close to the whole request-response transaction\nas possible although an implementation MAY choose to start the timeout after the entire\nrequest stream has been received instead of immediately after the transaction is\ninitiated by the client.\n\n\nWhen this field is unspecified, request timeout behavior is implementation-specific.\n\n\nSupport: Extended" + description: "Request specifies the maximum duration for a gateway to respond to an HTTP request.\nIf the gateway has not been able to respond before this deadline is met, the gateway\nMUST return a timeout error.\n\n\nFor example, setting the `rules.timeouts.request` field to the value `10s` in an\n`HTTPRoute` will cause a timeout if a client request is taking longer than 10 seconds\nto complete.\n\n\nSetting a timeout to the zero duration (e.g. \"0s\") SHOULD disable the timeout\ncompletely. Implementations that cannot completely disable the timeout MUST\ninstead interpret the zero duration as the longest possible value to which\nthe timeout can be set.\n\n\nThis timeout is intended to cover as close to the whole request-response transaction\nas possible although an implementation MAY choose to start the timeout after the entire\nrequest stream has been received instead of immediately after the transaction is\ninitiated by the client.\n\n\nWhen this field is unspecified, request timeout behavior is implementation-specific.\n\n\nSupport: Extended" pattern: "^([0-9]{1,5}(h|m|s|ms)){1,4}$" type: "string" type: "object" diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/referencegrants.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/referencegrants.yaml index 4f34179e9..c615061fd 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/referencegrants.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/referencegrants.yaml @@ -2,8 +2,8 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2466" - gateway.networking.k8s.io/bundle-version: "v1.0.0" + api-approved.kubernetes.io: "https://github.com/kubernetes-sigs/gateway-api/pull/2997" + gateway.networking.k8s.io/bundle-version: "v1.1.0-rc1" gateway.networking.k8s.io/channel: "experimental" name: "referencegrants.gateway.networking.k8s.io" spec: diff --git a/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta1/modules.yaml b/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta1/modules.yaml index e99b1033f..48ac38369 100644 --- a/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta1/modules.yaml +++ b/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta1/modules.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "modules.kmm.sigs.x-k8s.io" spec: group: "kmm.sigs.x-k8s.io" @@ -180,7 +180,7 @@ spec: description: "Path within the container at which the volume should be mounted. Must\nnot contain ':'." type: "string" mountPropagation: - description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10." + description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10.\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n(which defaults to None)." type: "string" name: description: "This must match the Name of a Volume." @@ -188,6 +188,9 @@ spec: readOnly: description: "Mounted read-only if true, read-write otherwise (false or unspecified).\nDefaults to false." type: "boolean" + recursiveReadOnly: + description: "RecursiveReadOnly specifies whether read-only mounts should be handled\nrecursively.\n\n\nIf ReadOnly is false, this field has no meaning and must be unspecified.\n\n\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\nrecursively read-only. If this field is set to IfPossible, the mount is made\nrecursively read-only, if it is supported by the container runtime. If this\nfield is set to Enabled, the mount is made recursively read-only if it is\nsupported by the container runtime, otherwise the pod will not be started and\nan error will be generated to indicate the reason.\n\n\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\nNone (or be unspecified, which defaults to None).\n\n\nIf this field is not specified, it is treated as an equivalent of Disabled." + type: "string" subPath: description: "Path within the volume from which the container's volume should be mounted.\nDefaults to \"\" (volume's root)." type: "string" @@ -277,6 +280,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" path: description: "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /" type: "string" @@ -350,6 +354,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" type: "string" @@ -399,7 +404,7 @@ spec: description: "DownwardAPIVolumeFile represents information to create the file containing the pod field" properties: fieldRef: - description: "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -442,6 +447,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" emptyDir: description: "emptyDir represents a temporary directory that shares a pod's lifetime.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir" @@ -474,6 +480,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: description: "dataSource field can be used to specify either:\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n* An existing PVC (PersistentVolumeClaim)\nIf the provisioner or an external controller can support the specified data source,\nit will create a new volume based on the contents of the specified data source.\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource." properties: @@ -551,11 +558,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -567,7 +576,7 @@ spec: description: "storageClassName is the name of the StorageClass required by the claim.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1" type: "string" volumeAttributesClassName: - description: "volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\nIf specified, the CSI driver will create or update the volume with the attributes defined\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\nwill be set by the persistentvolume controller if it exists.\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\nexists.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled." + description: "volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\nIf specified, the CSI driver will create or update the volume with the attributes defined\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\nwill be set by the persistentvolume controller if it exists.\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\nexists.\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled." type: "string" volumeMode: description: "volumeMode defines what type of volume is required by the claim.\nValue of Filesystem is implied when not included in claim spec." @@ -598,11 +607,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" wwids: description: "wwids Optional: FC volume world wide identifiers (wwids)\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" flexVolume: description: "flexVolume represents a generic volume resource that is\nprovisioned/attached using an exec based plugin." @@ -734,6 +745,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" readOnly: description: "readOnly here will force the ReadOnly setting in VolumeMounts.\nDefaults to false." type: "boolean" @@ -845,11 +857,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -895,6 +909,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" type: "string" @@ -912,7 +927,7 @@ spec: description: "DownwardAPIVolumeFile represents information to create the file containing the pod field" properties: fieldRef: - description: "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -955,6 +970,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" secret: description: "secret information about the secret data to project" @@ -979,6 +995,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" type: "string" @@ -1005,6 +1022,7 @@ spec: type: "object" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" quobyte: description: "quobyte represents a Quobyte mount on the host that shares a pod's lifetime" @@ -1048,6 +1066,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" pool: description: "pool is the rados pool name.\nDefault is rbd.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" type: "string" @@ -1139,6 +1158,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" optional: description: "optional field specify whether the Secret or its keys must be defined" type: "boolean" diff --git a/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta1/nodemodulesconfigs.yaml b/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta1/nodemodulesconfigs.yaml index b4f055541..e73443508 100644 --- a/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta1/nodemodulesconfigs.yaml +++ b/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta1/nodemodulesconfigs.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "nodemodulesconfigs.kmm.sigs.x-k8s.io" spec: group: "kmm.sigs.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta1/preflightvalidations.yaml b/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta1/preflightvalidations.yaml index 629d3c0f6..ccf99c208 100644 --- a/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta1/preflightvalidations.yaml +++ b/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta1/preflightvalidations.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "preflightvalidations.kmm.sigs.x-k8s.io" spec: group: "kmm.sigs.x-k8s.io" diff --git a/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta2/preflightvalidations.yaml b/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta2/preflightvalidations.yaml index b089938a5..21550afa7 100644 --- a/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta2/preflightvalidations.yaml +++ b/crd-catalog/kubernetes-sigs/kernel-module-management/kmm.sigs.x-k8s.io/v1beta2/preflightvalidations.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "preflightvalidations.kmm.sigs.x-k8s.io" spec: group: "kmm.sigs.x-k8s.io" diff --git a/crd-catalog/kubeshop/testkube-operator/tests.testkube.io/v1/testtriggers.yaml b/crd-catalog/kubeshop/testkube-operator/tests.testkube.io/v1/testtriggers.yaml index d62213e03..946cdf40a 100644 --- a/crd-catalog/kubeshop/testkube-operator/tests.testkube.io/v1/testtriggers.yaml +++ b/crd-catalog/kubeshop/testkube-operator/tests.testkube.io/v1/testtriggers.yaml @@ -113,6 +113,7 @@ spec: enum: - "test" - "testsuite" + - "testworkflow" type: "string" probeSpec: description: "What resource probes should be matched" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v1/clusterpolicies.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v1/clusterpolicies.yaml index f0e704e10..a049d5cbd 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v1/clusterpolicies.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v1/clusterpolicies.yaml @@ -301,11 +301,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -348,11 +350,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -441,11 +445,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -488,11 +494,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -576,11 +584,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -623,11 +633,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -711,11 +723,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -824,11 +838,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -871,11 +887,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -964,11 +982,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1011,11 +1031,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1099,11 +1121,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1146,11 +1170,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1676,11 +1702,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -2777,11 +2805,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3026,11 +3056,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3073,11 +3105,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3166,11 +3200,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3213,11 +3249,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3301,11 +3339,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3348,11 +3388,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3436,11 +3478,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3549,11 +3593,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3596,11 +3642,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3689,11 +3737,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3736,11 +3786,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3824,11 +3876,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3871,11 +3925,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -4401,11 +4457,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v1/policies.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v1/policies.yaml index eb1690509..c30d2d170 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v1/policies.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v1/policies.yaml @@ -301,11 +301,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -348,11 +350,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -441,11 +445,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -488,11 +494,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -576,11 +584,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -623,11 +633,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -711,11 +723,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -824,11 +838,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -871,11 +887,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -964,11 +982,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1011,11 +1031,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1099,11 +1121,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1146,11 +1170,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1676,11 +1702,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -2777,11 +2805,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3026,11 +3056,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3073,11 +3105,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3166,11 +3200,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3213,11 +3249,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3301,11 +3339,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3348,11 +3388,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3436,11 +3478,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3549,11 +3593,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3596,11 +3642,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3689,11 +3737,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3736,11 +3786,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3824,11 +3876,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3871,11 +3925,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -4401,11 +4457,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/admissionreports.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/admissionreports.yaml index 5c0033c9c..57c0a4cac 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/admissionreports.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/admissionreports.yaml @@ -127,11 +127,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/backgroundscanreports.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/backgroundscanreports.yaml index 23d38d485..d50cc2e4c 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/backgroundscanreports.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/backgroundscanreports.yaml @@ -102,11 +102,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/clusteradmissionreports.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/clusteradmissionreports.yaml index b783af50a..d1f69cae2 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/clusteradmissionreports.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/clusteradmissionreports.yaml @@ -127,11 +127,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/clusterbackgroundscanreports.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/clusterbackgroundscanreports.yaml index c9a077814..90e395739 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/clusterbackgroundscanreports.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v1alpha2/clusterbackgroundscanreports.yaml @@ -102,11 +102,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2/admissionreports.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2/admissionreports.yaml index 6dc0bae26..fbee9fe6b 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2/admissionreports.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2/admissionreports.yaml @@ -127,11 +127,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2/backgroundscanreports.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2/backgroundscanreports.yaml index 7842d726b..2fa31382f 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2/backgroundscanreports.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2/backgroundscanreports.yaml @@ -102,11 +102,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2/cleanuppolicies.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2/cleanuppolicies.yaml index 6a56b4d73..12b5e3ec7 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2/cleanuppolicies.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2/cleanuppolicies.yaml @@ -289,11 +289,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -336,11 +338,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -429,11 +433,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -476,11 +482,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -573,11 +581,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -620,11 +630,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -713,11 +725,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -760,11 +774,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2/clusteradmissionreports.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2/clusteradmissionreports.yaml index 38c0e6fd3..9a987f33f 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2/clusteradmissionreports.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2/clusteradmissionreports.yaml @@ -127,11 +127,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2/clusterbackgroundscanreports.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2/clusterbackgroundscanreports.yaml index 6da06336f..a838b7ed1 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2/clusterbackgroundscanreports.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2/clusterbackgroundscanreports.yaml @@ -102,11 +102,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2/clustercleanuppolicies.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2/clustercleanuppolicies.yaml index 0e005a14c..67f5a39fe 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2/clustercleanuppolicies.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2/clustercleanuppolicies.yaml @@ -289,11 +289,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -336,11 +338,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -429,11 +433,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -476,11 +482,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -573,11 +581,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -620,11 +630,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -713,11 +725,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -760,11 +774,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2/policyexceptions.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2/policyexceptions.yaml index 275c0f51b..6a703e7c6 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2/policyexceptions.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2/policyexceptions.yaml @@ -177,11 +177,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -224,11 +226,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -317,11 +321,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -364,11 +370,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2alpha1/cleanuppolicies.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2alpha1/cleanuppolicies.yaml index e96f30c7b..7951cf858 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2alpha1/cleanuppolicies.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2alpha1/cleanuppolicies.yaml @@ -289,11 +289,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -336,11 +338,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -429,11 +433,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -476,11 +482,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -573,11 +581,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -620,11 +630,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -713,11 +725,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -760,11 +774,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2alpha1/clustercleanuppolicies.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2alpha1/clustercleanuppolicies.yaml index af811699d..82395f8f9 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2alpha1/clustercleanuppolicies.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2alpha1/clustercleanuppolicies.yaml @@ -289,11 +289,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -336,11 +338,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -429,11 +433,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -476,11 +482,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -573,11 +581,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -620,11 +630,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -713,11 +725,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -760,11 +774,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2alpha1/policyexceptions.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2alpha1/policyexceptions.yaml index a7accf134..94f578fc1 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2alpha1/policyexceptions.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2alpha1/policyexceptions.yaml @@ -177,11 +177,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -224,11 +226,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -317,11 +321,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -364,11 +370,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/cleanuppolicies.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/cleanuppolicies.yaml index 6cc970859..9aee63849 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/cleanuppolicies.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/cleanuppolicies.yaml @@ -289,11 +289,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -336,11 +338,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -429,11 +433,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -476,11 +482,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -573,11 +581,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -620,11 +630,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -713,11 +725,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -760,11 +774,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/clustercleanuppolicies.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/clustercleanuppolicies.yaml index fbe06650a..affe09397 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/clustercleanuppolicies.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/clustercleanuppolicies.yaml @@ -289,11 +289,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -336,11 +338,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -429,11 +433,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -476,11 +482,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -573,11 +581,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -620,11 +630,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -713,11 +725,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -760,11 +774,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/clusterpolicies.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/clusterpolicies.yaml index fc1e44821..60cd893f8 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/clusterpolicies.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/clusterpolicies.yaml @@ -301,11 +301,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -348,11 +350,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -441,11 +445,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -488,11 +494,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -578,11 +586,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -691,11 +701,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -738,11 +750,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -831,11 +845,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -878,11 +894,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1477,11 +1495,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -2620,11 +2640,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -2869,11 +2891,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -2916,11 +2940,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3009,11 +3035,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3056,11 +3084,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3144,11 +3174,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3191,11 +3223,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3279,11 +3313,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3392,11 +3428,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3439,11 +3477,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3532,11 +3572,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3579,11 +3621,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3667,11 +3711,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3714,11 +3760,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -4244,11 +4292,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/policies.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/policies.yaml index 1db4d559e..74b53cfd6 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/policies.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/policies.yaml @@ -301,11 +301,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -348,11 +350,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -441,11 +445,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -488,11 +494,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -578,11 +586,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -691,11 +701,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -738,11 +750,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -831,11 +845,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -878,11 +894,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1477,11 +1495,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -2620,11 +2640,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -2869,11 +2891,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -2916,11 +2940,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3009,11 +3035,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3056,11 +3084,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3144,11 +3174,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3191,11 +3223,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3279,11 +3313,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3392,11 +3428,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3439,11 +3477,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3532,11 +3572,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3579,11 +3621,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3667,11 +3711,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3714,11 +3760,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -4244,11 +4292,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/policyexceptions.yaml b/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/policyexceptions.yaml index 8d42385bc..5372cd968 100644 --- a/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/policyexceptions.yaml +++ b/crd-catalog/kyverno/kyverno/kyverno.io/v2beta1/policyexceptions.yaml @@ -177,11 +177,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -224,11 +226,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -317,11 +321,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -364,11 +370,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/reports.kyverno.io/v1/clusterephemeralreports.yaml b/crd-catalog/kyverno/kyverno/reports.kyverno.io/v1/clusterephemeralreports.yaml index 8ef028cbc..549a2732f 100644 --- a/crd-catalog/kyverno/kyverno/reports.kyverno.io/v1/clusterephemeralreports.yaml +++ b/crd-catalog/kyverno/kyverno/reports.kyverno.io/v1/clusterephemeralreports.yaml @@ -136,11 +136,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/kyverno/kyverno/reports.kyverno.io/v1/ephemeralreports.yaml b/crd-catalog/kyverno/kyverno/reports.kyverno.io/v1/ephemeralreports.yaml index 36e15449e..63ef80d99 100644 --- a/crd-catalog/kyverno/kyverno/reports.kyverno.io/v1/ephemeralreports.yaml +++ b/crd-catalog/kyverno/kyverno/reports.kyverno.io/v1/ephemeralreports.yaml @@ -137,11 +137,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/mariadb-operator/mariadb-operator/k8s.mariadb.com/v1alpha1/grants.yaml b/crd-catalog/mariadb-operator/mariadb-operator/k8s.mariadb.com/v1alpha1/grants.yaml index 26083a23c..76696a63d 100644 --- a/crd-catalog/mariadb-operator/mariadb-operator/k8s.mariadb.com/v1alpha1/grants.yaml +++ b/crd-catalog/mariadb-operator/mariadb-operator/k8s.mariadb.com/v1alpha1/grants.yaml @@ -65,7 +65,7 @@ spec: description: "GrantOption to use in the Grant." type: "boolean" host: - description: "Host to use in the Grant." + description: "Host to use in the Grant. It can be localhost, an IP or '%'." type: "string" mariaDbRef: description: "MariaDBRef is a reference to a MariaDB object." diff --git a/crd-catalog/mariadb-operator/mariadb-operator/k8s.mariadb.com/v1alpha1/mariadbs.yaml b/crd-catalog/mariadb-operator/mariadb-operator/k8s.mariadb.com/v1alpha1/mariadbs.yaml index 9f8bddd0a..50b4e7a79 100644 --- a/crd-catalog/mariadb-operator/mariadb-operator/k8s.mariadb.com/v1alpha1/mariadbs.yaml +++ b/crd-catalog/mariadb-operator/mariadb-operator/k8s.mariadb.com/v1alpha1/mariadbs.yaml @@ -5235,6 +5235,49 @@ spec: enabled: description: "Enabled is a flag to enable a MaxScale instance to be used with the current MariaDB." type: "boolean" + guiKubernetesService: + description: "GuiKubernetesService define a template for a Kubernetes Service object to connect to MaxScale's GUI." + properties: + allocateLoadBalancerNodePorts: + description: "AllocateLoadBalancerNodePorts Service field." + type: "boolean" + externalTrafficPolicy: + description: "ExternalTrafficPolicy Service field." + type: "string" + loadBalancerIP: + description: "LoadBalancerIP Service field." + type: "string" + loadBalancerSourceRanges: + description: "LoadBalancerSourceRanges Service field." + items: + type: "string" + type: "array" + metadata: + description: "Metadata to be added to the Service metadata." + properties: + annotations: + additionalProperties: + type: "string" + description: "Annotations to be added to children resources." + type: "object" + labels: + additionalProperties: + type: "string" + description: "Labels to be added to children resources." + type: "object" + type: "object" + sessionAffinity: + description: "SessionAffinity Service field." + type: "string" + type: + default: "ClusterIP" + description: "Type is the Service type. One of `ClusterIP`, `NodePort` or `LoadBalancer`. If not defined, it defaults to `ClusterIP`." + enum: + - "ClusterIP" + - "NodePort" + - "LoadBalancer" + type: "string" + type: "object" image: description: "Image name to be used by the MaxScale instances. The supported format is `:`.\nOnly MaxScale official images are supported." type: "string" @@ -5246,7 +5289,7 @@ spec: - "IfNotPresent" type: "string" kubernetesService: - description: "Service defines templates to configure the Kubernetes Service object." + description: "KubernetesService defines a template for a Kubernetes Service object to connect to MaxScale." properties: allocateLoadBalancerNodePorts: description: "AllocateLoadBalancerNodePorts Service field." diff --git a/crd-catalog/mariadb-operator/mariadb-operator/k8s.mariadb.com/v1alpha1/maxscales.yaml b/crd-catalog/mariadb-operator/mariadb-operator/k8s.mariadb.com/v1alpha1/maxscales.yaml index 9c3493486..ace85057b 100644 --- a/crd-catalog/mariadb-operator/mariadb-operator/k8s.mariadb.com/v1alpha1/maxscales.yaml +++ b/crd-catalog/mariadb-operator/mariadb-operator/k8s.mariadb.com/v1alpha1/maxscales.yaml @@ -1058,6 +1058,49 @@ spec: x-kubernetes-map-type: "atomic" type: "object" type: "array" + guiKubernetesService: + description: "GuiKubernetesService defines a template for a Kubernetes Service object to connect to MaxScale's GUI." + properties: + allocateLoadBalancerNodePorts: + description: "AllocateLoadBalancerNodePorts Service field." + type: "boolean" + externalTrafficPolicy: + description: "ExternalTrafficPolicy Service field." + type: "string" + loadBalancerIP: + description: "LoadBalancerIP Service field." + type: "string" + loadBalancerSourceRanges: + description: "LoadBalancerSourceRanges Service field." + items: + type: "string" + type: "array" + metadata: + description: "Metadata to be added to the Service metadata." + properties: + annotations: + additionalProperties: + type: "string" + description: "Annotations to be added to children resources." + type: "object" + labels: + additionalProperties: + type: "string" + description: "Labels to be added to children resources." + type: "object" + type: "object" + sessionAffinity: + description: "SessionAffinity Service field." + type: "string" + type: + default: "ClusterIP" + description: "Type is the Service type. One of `ClusterIP`, `NodePort` or `LoadBalancer`. If not defined, it defaults to `ClusterIP`." + enum: + - "ClusterIP" + - "NodePort" + - "LoadBalancer" + type: "string" + type: "object" image: description: "Image name to be used by the MaxScale instances. The supported format is `:`.\nOnly MaxScale official images are supported." type: "string" @@ -1595,7 +1638,7 @@ spec: type: "object" type: "array" kubernetesService: - description: "Service defines templates to configure the Kubernetes Service object." + description: "KubernetesService defines a template for a Kubernetes Service object to connect to MaxScale." properties: allocateLoadBalancerNodePorts: description: "AllocateLoadBalancerNodePorts Service field." diff --git a/crd-catalog/minio/operator/minio.min.io/v2/tenants.yaml b/crd-catalog/minio/operator/minio.min.io/v2/tenants.yaml index 488e26bb4..173d1c567 100644 --- a/crd-catalog/minio/operator/minio.min.io/v2/tenants.yaml +++ b/crd-catalog/minio/operator/minio.min.io/v2/tenants.yaml @@ -2377,6 +2377,109 @@ spec: required: - "kesSecret" type: "object" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + required: + - "name" + - "value" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + required: + - "port" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + required: + - "port" + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + required: + - "name" + - "value" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + required: + - "port" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + required: + - "port" + type: "object" + type: "object" + type: "object" liveness: properties: exec: diff --git a/crd-catalog/netobserv/network-observability-operator/flows.netobserv.io/v1beta1/flowcollectors.yaml b/crd-catalog/netobserv/network-observability-operator/flows.netobserv.io/v1beta1/flowcollectors.yaml index b712e56d0..3936d0004 100644 --- a/crd-catalog/netobserv/network-observability-operator/flows.netobserv.io/v1beta1/flowcollectors.yaml +++ b/crd-catalog/netobserv/network-observability-operator/flows.netobserv.io/v1beta1/flowcollectors.yaml @@ -183,7 +183,6 @@ spec: description: "Metrics server endpoint configuration for Prometheus scraper" properties: port: - default: 9102 description: "The prometheus HTTP port" format: "int32" maximum: 65535.0 @@ -1698,7 +1697,6 @@ spec: description: "Metrics server endpoint configuration for Prometheus scraper" properties: port: - default: 9102 description: "The prometheus HTTP port" format: "int32" maximum: 65535.0 diff --git a/crd-catalog/netobserv/network-observability-operator/flows.netobserv.io/v1beta2/flowcollectors.yaml b/crd-catalog/netobserv/network-observability-operator/flows.netobserv.io/v1beta2/flowcollectors.yaml index 06396066e..aeecf1b74 100644 --- a/crd-catalog/netobserv/network-observability-operator/flows.netobserv.io/v1beta2/flowcollectors.yaml +++ b/crd-catalog/netobserv/network-observability-operator/flows.netobserv.io/v1beta2/flowcollectors.yaml @@ -738,7 +738,6 @@ spec: description: "Metrics server endpoint configuration for Prometheus scraper" properties: port: - default: 9102 description: "The prometheus HTTP port" format: "int32" maximum: 65535.0 @@ -3554,7 +3553,6 @@ spec: description: "Metrics server endpoint configuration for Prometheus scraper" properties: port: - default: 9102 description: "The prometheus HTTP port" format: "int32" maximum: 65535.0 diff --git a/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/clientsettingspolicies.yaml b/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/clientsettingspolicies.yaml index 45abf2760..7dfb57457 100644 --- a/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/clientsettingspolicies.yaml +++ b/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/clientsettingspolicies.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" labels: gateway.networking.k8s.io/policy: "inherited" name: "clientsettingspolicies.gateway.nginx.org" diff --git a/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/nginxgateways.yaml b/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/nginxgateways.yaml index cd0607e0c..261220834 100644 --- a/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/nginxgateways.yaml +++ b/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/nginxgateways.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "nginxgateways.gateway.nginx.org" spec: group: "gateway.nginx.org" diff --git a/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/nginxproxies.yaml b/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/nginxproxies.yaml index f929c29a1..ff9954820 100644 --- a/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/nginxproxies.yaml +++ b/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/nginxproxies.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "nginxproxies.gateway.nginx.org" spec: group: "gateway.nginx.org" diff --git a/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/observabilitypolicies.yaml b/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/observabilitypolicies.yaml index c63dc9e00..ecbf62b2c 100644 --- a/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/observabilitypolicies.yaml +++ b/crd-catalog/nginxinc/nginx-kubernetes-gateway/gateway.nginx.org/v1alpha1/observabilitypolicies.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" labels: gateway.networking.k8s.io/policy: "direct" name: "observabilitypolicies.gateway.nginx.org" diff --git a/crd-catalog/open-cluster-management-io/ocm/operator.open-cluster-management.io/v1/klusterlets.yaml b/crd-catalog/open-cluster-management-io/ocm/operator.open-cluster-management.io/v1/klusterlets.yaml index 908b094ee..7fe49ec46 100644 --- a/crd-catalog/open-cluster-management-io/ocm/operator.open-cluster-management.io/v1/klusterlets.yaml +++ b/crd-catalog/open-cluster-management-io/ocm/operator.open-cluster-management.io/v1/klusterlets.yaml @@ -115,6 +115,32 @@ spec: registrationConfiguration: description: "RegistrationConfiguration contains the configuration of registration" properties: + bootstrapKubeConfigs: + description: "BootstrapKubeConfigs defines the ordered list of bootstrap kubeconfigs. The order decides which bootstrap kubeconfig to use first when rebootstrap. \n When the agent loses the connection to the current hub over HubConnectionTimeoutSeconds, or the managedcluster CR is set `hubAcceptsClient=false` on the hub, the controller marks the related bootstrap kubeconfig as \"failed\". \n A failed bootstrapkubeconfig won't be used for the duration specified by SkipFailedBootstrapKubeConfigSeconds. But if the user updates the content of a failed bootstrapkubeconfig, the \"failed\" mark will be cleared." + properties: + localSecretsConfig: + description: "LocalSecretsConfig include a list of secrets that contains the kubeconfigs for ordered bootstrap kubeconifigs. The secrets must be in the same namespace where the agent controller runs." + properties: + hubConnectionTimeoutSeconds: + default: 600 + description: "HubConnectionTimeoutSeconds is used to set the timeout of connecting to the hub cluster. When agent loses the connection to the hub over the timeout seconds, the agent do a rebootstrap. By default is 10 mins." + format: "int32" + minimum: 180.0 + type: "integer" + secretNames: + description: "SecretNames is a list of secret names. The secrets are in the same namespace where the agent controller runs." + items: + type: "string" + type: "array" + type: "object" + type: + default: "None" + description: "Type specifies the type of priority bootstrap kubeconfigs. By default, it is set to None, representing no priority bootstrap kubeconfigs are set." + enum: + - "None" + - "LocalSecrets" + type: "string" + type: "object" clientCertExpirationSeconds: description: "clientCertExpirationSeconds represents the seconds of a client certificate to expire. If it is not set or 0, the default duration seconds will be set by the hub cluster. If the value is larger than the max signing duration seconds set on the hub cluster, the max signing duration seconds will be set." format: "int32" diff --git a/crd-catalog/open-feature/open-feature-operator/core.openfeature.dev/v1alpha1/featureflagconfigurations.yaml b/crd-catalog/open-feature/open-feature-operator/core.openfeature.dev/v1alpha1/featureflagconfigurations.yaml index d10b9dfd9..8816d8f5f 100644 --- a/crd-catalog/open-feature/open-feature-operator/core.openfeature.dev/v1alpha1/featureflagconfigurations.yaml +++ b/crd-catalog/open-feature/open-feature-operator/core.openfeature.dev/v1alpha1/featureflagconfigurations.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.10.0" + controller-gen.kubebuilder.io/version: "v0.14.0" name: "featureflagconfigurations.core.openfeature.dev" spec: group: "core.openfeature.dev" @@ -21,10 +21,10 @@ spec: description: "FeatureFlagConfiguration is the Schema for the featureflagconfigurations API" properties: apiVersion: - description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" type: "string" kind: - description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + description: "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" metadata: type: "object" @@ -46,7 +46,7 @@ spec: description: "Name of the environment variable. Must be a C_IDENTIFIER." type: "string" value: - description: "Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\"." + description: "Variable references $(VAR_NAME) are expanded\nusing the previously defined environment variables in the container and\nany service environment variables. If a variable cannot be resolved,\nthe reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n\"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\nEscaped references will never be expanded, regardless of whether the variable\nexists or not.\nDefaults to \"\"." type: "string" valueFrom: description: "Source for the environment variable's value. Cannot be used if value is not empty." @@ -58,7 +58,7 @@ spec: description: "The key to select." type: "string" name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" type: "string" optional: description: "Specify whether the ConfigMap or its key must be defined" @@ -68,7 +68,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" fieldRef: - description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." + description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`,\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -81,7 +81,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" resourceFieldRef: - description: "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." + description: "Selects a resource of the container: only resources limits and requests\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." properties: containerName: description: "Container name: required for volumes, optional for env vars" @@ -107,7 +107,7 @@ spec: description: "The key of the secret to select from. Must be a valid secret key." type: "string" name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" type: "string" optional: description: "Specify whether the Secret or its key must be defined" @@ -130,29 +130,29 @@ spec: nullable: true properties: credentials: - description: "ObjectReference contains enough information to let you inspect or modify the referred object. --- New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular restrictions like, \"must refer only to types A and B\" or \"UID not honored\" or \"name must be restricted\". Those cannot be well described when embedded. 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple and the version of the actual struct is irrelevant. 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. \n Instead of using this type, create a locally provided and used type that is well-focused on your reference. For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 ." + description: "ObjectReference contains enough information to let you inspect or modify the referred object.\n---\nNew uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.\n 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage.\n 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular\n restrictions like, \"must refer only to types A and B\" or \"UID not honored\" or \"name must be restricted\".\n Those cannot be well described when embedded.\n 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.\n 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity\n during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple\n and the version of the actual struct is irrelevant.\n 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type\n will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control.\n\n\nInstead of using this type, create a locally provided and used type that is well-focused on your reference.\nFor example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 ." nullable: true properties: apiVersion: description: "API version of the referent." type: "string" fieldPath: - description: "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future." + description: "If referring to a piece of an object instead of an entire object, this string\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.\nTODO: this design is not final and this field is subject to change in the future." type: "string" kind: - description: "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + description: "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" namespace: - description: "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/" + description: "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/" type: "string" resourceVersion: - description: "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency" + description: "Specific resourceVersion to which this reference is made, if any.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency" type: "string" uid: - description: "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids" + description: "UID of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids" type: "string" type: "object" x-kubernetes-map-type: "atomic" diff --git a/crd-catalog/open-feature/open-feature-operator/core.openfeature.dev/v1alpha2/featureflagconfigurations.yaml b/crd-catalog/open-feature/open-feature-operator/core.openfeature.dev/v1alpha2/featureflagconfigurations.yaml index 4e6bb8d1a..b7a0f3ddf 100644 --- a/crd-catalog/open-feature/open-feature-operator/core.openfeature.dev/v1alpha2/featureflagconfigurations.yaml +++ b/crd-catalog/open-feature/open-feature-operator/core.openfeature.dev/v1alpha2/featureflagconfigurations.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.10.0" + controller-gen.kubebuilder.io/version: "v0.14.0" name: "featureflagconfigurations.core.openfeature.dev" spec: group: "core.openfeature.dev" @@ -21,10 +21,10 @@ spec: description: "FeatureFlagConfiguration is the Schema for the featureflagconfigurations API" properties: apiVersion: - description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" type: "string" kind: - description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + description: "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" metadata: type: "object" @@ -75,7 +75,7 @@ spec: description: "Name of the environment variable. Must be a C_IDENTIFIER." type: "string" value: - description: "Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\"." + description: "Variable references $(VAR_NAME) are expanded\nusing the previously defined environment variables in the container and\nany service environment variables. If a variable cannot be resolved,\nthe reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n\"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\nEscaped references will never be expanded, regardless of whether the variable\nexists or not.\nDefaults to \"\"." type: "string" valueFrom: description: "Source for the environment variable's value. Cannot be used if value is not empty." @@ -87,7 +87,7 @@ spec: description: "The key to select." type: "string" name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" type: "string" optional: description: "Specify whether the ConfigMap or its key must be defined" @@ -97,7 +97,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" fieldRef: - description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." + description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`,\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -110,7 +110,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" resourceFieldRef: - description: "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." + description: "Selects a resource of the container: only resources limits and requests\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." properties: containerName: description: "Container name: required for volumes, optional for env vars" @@ -136,7 +136,7 @@ spec: description: "The key of the secret to select from. Must be a valid secret key." type: "string" name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?" + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" type: "string" optional: description: "Specify whether the Secret or its key must be defined" @@ -155,12 +155,12 @@ spec: description: "Resources defines flagd sidecar resources. Default to operator sidecar-cpu-* and sidecar-ram-* flags." properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." + description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." type: "string" required: - "name" @@ -176,7 +176,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" requests: additionalProperties: @@ -185,7 +185,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" serviceProvider: @@ -193,29 +193,29 @@ spec: nullable: true properties: credentials: - description: "ObjectReference contains enough information to let you inspect or modify the referred object. --- New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular restrictions like, \"must refer only to types A and B\" or \"UID not honored\" or \"name must be restricted\". Those cannot be well described when embedded. 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple and the version of the actual struct is irrelevant. 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. \n Instead of using this type, create a locally provided and used type that is well-focused on your reference. For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 ." + description: "ObjectReference contains enough information to let you inspect or modify the referred object.\n---\nNew uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.\n 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage.\n 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular\n restrictions like, \"must refer only to types A and B\" or \"UID not honored\" or \"name must be restricted\".\n Those cannot be well described when embedded.\n 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.\n 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity\n during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple\n and the version of the actual struct is irrelevant.\n 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type\n will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control.\n\n\nInstead of using this type, create a locally provided and used type that is well-focused on your reference.\nFor example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 ." nullable: true properties: apiVersion: description: "API version of the referent." type: "string" fieldPath: - description: "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future." + description: "If referring to a piece of an object instead of an entire object, this string\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.\nTODO: this design is not final and this field is subject to change in the future." type: "string" kind: - description: "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + description: "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" namespace: - description: "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/" + description: "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/" type: "string" resourceVersion: - description: "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency" + description: "Specific resourceVersion to which this reference is made, if any.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency" type: "string" uid: - description: "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids" + description: "UID of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids" type: "string" type: "object" x-kubernetes-map-type: "atomic" diff --git a/crd-catalog/percona/percona-server-mongodb-operator/psmdb.percona.com/v1/perconaservermongodbs.yaml b/crd-catalog/percona/percona-server-mongodb-operator/psmdb.percona.com/v1/perconaservermongodbs.yaml index 954b36450..8d003541c 100644 --- a/crd-catalog/percona/percona-server-mongodb-operator/psmdb.percona.com/v1/perconaservermongodbs.yaml +++ b/crd-catalog/percona/percona-server-mongodb-operator/psmdb.percona.com/v1/perconaservermongodbs.yaml @@ -88,16 +88,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -168,6 +179,15 @@ spec: type: "object" podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" fsGroup: format: "int64" type: "integer" @@ -206,6 +226,7 @@ spec: format: "int64" type: "integer" type: "array" + x-kubernetes-list-type: "atomic" sysctls: items: properties: @@ -218,6 +239,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" windowsOptions: properties: gmsaCredentialSpec: @@ -395,16 +417,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -538,11 +571,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -554,11 +589,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" weight: @@ -569,6 +606,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -585,11 +623,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -601,14 +641,17 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-type: "atomic" required: - "nodeSelectorTerms" type: "object" @@ -634,11 +677,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -668,11 +713,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -683,6 +730,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -696,6 +744,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -712,11 +761,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -746,11 +797,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -761,12 +814,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" podAntiAffinity: properties: @@ -788,11 +843,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -822,11 +879,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -837,6 +896,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -850,6 +910,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -866,11 +927,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -900,11 +963,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -915,12 +980,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" type: "object" antiAffinityTopologyKey: @@ -954,11 +1021,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -970,11 +1039,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" weight: @@ -985,6 +1056,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -1001,11 +1073,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -1017,14 +1091,17 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-type: "atomic" required: - "nodeSelectorTerms" type: "object" @@ -1050,11 +1127,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1084,11 +1163,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1099,6 +1180,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -1112,6 +1194,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -1128,11 +1211,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1162,11 +1247,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1177,12 +1264,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" podAntiAffinity: properties: @@ -1204,11 +1293,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1238,11 +1329,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1253,6 +1346,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -1266,6 +1360,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -1282,11 +1377,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1316,11 +1413,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1331,12 +1430,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" type: "object" antiAffinityTopologyKey: @@ -1421,6 +1522,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -1480,11 +1582,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1506,6 +1610,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" allocatedResourceStatuses: additionalProperties: type: "string" @@ -1549,6 +1654,9 @@ spec: - "type" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "type" + x-kubernetes-list-type: "map" currentVolumeAttributesClassName: type: "string" modifyVolumeStatus: @@ -1618,6 +1726,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" readOnly: @@ -1672,6 +1781,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -1742,6 +1852,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" emptyDir: properties: @@ -1766,6 +1877,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -1825,11 +1937,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -1862,10 +1976,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" wwids: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" flexVolume: properties: @@ -1962,6 +2078,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" readOnly: type: "boolean" secretRef: @@ -2043,11 +2160,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -2082,6 +2201,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -2128,6 +2248,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" secret: properties: @@ -2146,6 +2267,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -2166,6 +2288,7 @@ spec: type: "object" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" quobyte: properties: @@ -2197,6 +2320,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" pool: type: "string" readOnly: @@ -2264,6 +2388,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" optional: type: "boolean" secretName: @@ -2310,10 +2435,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" command: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" env: items: properties: @@ -2378,6 +2505,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" envFrom: items: properties: @@ -2401,6 +2531,7 @@ spec: x-kubernetes-map-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" image: type: "string" imagePullPolicy: @@ -2415,6 +2546,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -2432,6 +2564,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -2473,6 +2606,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -2490,6 +2624,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -2532,6 +2667,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -2562,6 +2698,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -2636,6 +2773,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -2666,6 +2804,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -2756,16 +2895,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -2821,6 +2971,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -2851,6 +3002,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -2913,6 +3065,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "devicePath" + x-kubernetes-list-type: "map" volumeMounts: items: properties: @@ -2924,6 +3079,8 @@ spec: type: "string" readOnly: type: "boolean" + recursiveReadOnly: + type: "string" subPath: type: "string" subPathExpr: @@ -2933,6 +3090,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "mountPath" + x-kubernetes-list-type: "map" workingDir: type: "string" required: @@ -2977,11 +3137,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3025,16 +3187,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -3130,6 +3303,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" ip: type: "string" type: "object" @@ -3146,6 +3320,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -3176,6 +3351,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -3248,11 +3424,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -3264,11 +3442,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" weight: @@ -3279,6 +3459,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -3295,11 +3476,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -3311,14 +3494,17 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-type: "atomic" required: - "nodeSelectorTerms" type: "object" @@ -3344,11 +3530,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3378,11 +3566,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3393,6 +3583,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -3406,6 +3597,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -3422,11 +3614,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3456,11 +3650,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3471,12 +3667,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" podAntiAffinity: properties: @@ -3498,11 +3696,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3532,11 +3732,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3547,6 +3749,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -3560,6 +3763,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -3576,11 +3780,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3610,11 +3816,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3625,12 +3833,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" type: "object" antiAffinityTopologyKey: @@ -3646,16 +3856,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -3717,6 +3938,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -3747,6 +3969,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -3808,6 +4031,15 @@ spec: type: "object" podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" fsGroup: format: "int64" type: "integer" @@ -3846,6 +4078,7 @@ spec: format: "int64" type: "integer" type: "array" + x-kubernetes-list-type: "atomic" sysctls: items: properties: @@ -3858,6 +4091,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" windowsOptions: properties: gmsaCredentialSpec: @@ -3880,6 +4114,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -3910,6 +4145,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -4000,6 +4236,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -4059,11 +4296,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -4085,6 +4324,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" allocatedResourceStatuses: additionalProperties: type: "string" @@ -4128,6 +4368,9 @@ spec: - "type" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "type" + x-kubernetes-list-type: "map" currentVolumeAttributesClassName: type: "string" modifyVolumeStatus: @@ -4197,6 +4440,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" readOnly: @@ -4251,6 +4495,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -4321,6 +4566,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" emptyDir: properties: @@ -4345,6 +4591,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -4404,11 +4651,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -4441,10 +4690,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" wwids: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" flexVolume: properties: @@ -4541,6 +4792,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" readOnly: type: "boolean" secretRef: @@ -4622,11 +4874,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -4661,6 +4915,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -4707,6 +4962,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" secret: properties: @@ -4725,6 +4981,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -4745,6 +5002,7 @@ spec: type: "object" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" quobyte: properties: @@ -4776,6 +5034,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" pool: type: "string" readOnly: @@ -4843,6 +5102,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" optional: type: "boolean" secretName: @@ -4889,10 +5149,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" command: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" env: items: properties: @@ -4957,6 +5219,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" envFrom: items: properties: @@ -4980,6 +5245,7 @@ spec: x-kubernetes-map-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" image: type: "string" imagePullPolicy: @@ -4994,6 +5260,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -5011,6 +5278,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -5052,6 +5320,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -5069,6 +5338,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -5111,6 +5381,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -5141,6 +5412,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -5215,6 +5487,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -5245,6 +5518,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -5335,16 +5609,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -5400,6 +5685,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -5430,6 +5716,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -5492,6 +5779,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "devicePath" + x-kubernetes-list-type: "map" volumeMounts: items: properties: @@ -5503,6 +5793,8 @@ spec: type: "string" readOnly: type: "boolean" + recursiveReadOnly: + type: "string" subPath: type: "string" subPathExpr: @@ -5512,6 +5804,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "mountPath" + x-kubernetes-list-type: "map" workingDir: type: "string" required: @@ -5556,11 +5851,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -5620,6 +5917,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" annotations: additionalProperties: type: "string" @@ -5687,11 +5985,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -5727,6 +6027,15 @@ spec: type: "object" podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" fsGroup: format: "int64" type: "integer" @@ -5765,6 +6074,7 @@ spec: format: "int64" type: "integer" type: "array" + x-kubernetes-list-type: "atomic" sysctls: items: properties: @@ -5777,6 +6087,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" windowsOptions: properties: gmsaCredentialSpec: @@ -5799,6 +6110,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -5829,6 +6141,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -5919,6 +6232,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -5978,11 +6292,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -6004,6 +6320,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" allocatedResourceStatuses: additionalProperties: type: "string" @@ -6047,6 +6364,9 @@ spec: - "type" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "type" + x-kubernetes-list-type: "map" currentVolumeAttributesClassName: type: "string" modifyVolumeStatus: @@ -6116,6 +6436,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" readOnly: @@ -6170,6 +6491,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -6240,6 +6562,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" emptyDir: properties: @@ -6264,6 +6587,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -6323,11 +6647,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -6360,10 +6686,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" wwids: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" flexVolume: properties: @@ -6460,6 +6788,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" readOnly: type: "boolean" secretRef: @@ -6541,11 +6870,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -6580,6 +6911,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -6626,6 +6958,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" secret: properties: @@ -6644,6 +6977,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -6664,6 +6998,7 @@ spec: type: "object" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" quobyte: properties: @@ -6695,6 +7030,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" pool: type: "string" readOnly: @@ -6762,6 +7098,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" optional: type: "boolean" secretName: @@ -6808,10 +7145,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" command: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" env: items: properties: @@ -6876,6 +7215,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" envFrom: items: properties: @@ -6899,6 +7241,7 @@ spec: x-kubernetes-map-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" image: type: "string" imagePullPolicy: @@ -6913,6 +7256,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -6930,6 +7274,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -6971,6 +7316,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -6988,6 +7334,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -7030,6 +7377,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -7060,6 +7408,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -7134,6 +7483,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -7164,6 +7514,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -7254,16 +7605,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -7319,6 +7681,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -7349,6 +7712,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -7411,6 +7775,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "devicePath" + x-kubernetes-list-type: "map" volumeMounts: items: properties: @@ -7422,6 +7789,8 @@ spec: type: "string" readOnly: type: "boolean" + recursiveReadOnly: + type: "string" subPath: type: "string" subPathExpr: @@ -7431,6 +7800,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "mountPath" + x-kubernetes-list-type: "map" workingDir: type: "string" required: @@ -7527,11 +7899,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -7591,6 +7965,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" annotations: additionalProperties: type: "string" @@ -7658,11 +8033,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -7733,11 +8110,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -7749,11 +8128,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" weight: @@ -7764,6 +8145,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -7780,11 +8162,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -7796,14 +8180,17 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-type: "atomic" required: - "nodeSelectorTerms" type: "object" @@ -7829,11 +8216,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -7863,11 +8252,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -7878,6 +8269,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -7891,6 +8283,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -7907,11 +8300,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -7941,11 +8336,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -7956,12 +8353,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" podAntiAffinity: properties: @@ -7983,11 +8382,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8017,11 +8418,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8032,6 +8435,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -8045,6 +8449,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -8061,11 +8466,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8095,11 +8502,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8110,12 +8519,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" type: "object" antiAffinityTopologyKey: @@ -8149,11 +8560,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -8165,11 +8578,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" weight: @@ -8180,6 +8595,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -8196,11 +8612,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -8212,14 +8630,17 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-type: "atomic" required: - "nodeSelectorTerms" type: "object" @@ -8245,11 +8666,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8279,11 +8702,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8294,6 +8719,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -8307,6 +8733,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -8323,11 +8750,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8357,11 +8786,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8372,12 +8803,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" podAntiAffinity: properties: @@ -8399,11 +8832,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8433,11 +8868,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8448,6 +8885,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -8461,6 +8899,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -8477,11 +8916,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8511,11 +8952,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8526,12 +8969,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" type: "object" antiAffinityTopologyKey: @@ -8616,6 +9061,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -8675,11 +9121,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -8701,6 +9149,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" allocatedResourceStatuses: additionalProperties: type: "string" @@ -8744,6 +9193,9 @@ spec: - "type" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "type" + x-kubernetes-list-type: "map" currentVolumeAttributesClassName: type: "string" modifyVolumeStatus: @@ -8813,6 +9265,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" readOnly: @@ -8867,6 +9320,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -8937,6 +9391,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" emptyDir: properties: @@ -8961,6 +9416,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -9020,11 +9476,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -9057,10 +9515,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" wwids: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" flexVolume: properties: @@ -9157,6 +9617,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" readOnly: type: "boolean" secretRef: @@ -9238,11 +9699,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -9277,6 +9740,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -9323,6 +9787,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" secret: properties: @@ -9341,6 +9806,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -9361,6 +9827,7 @@ spec: type: "object" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" quobyte: properties: @@ -9392,6 +9859,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" pool: type: "string" readOnly: @@ -9459,6 +9927,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" optional: type: "boolean" secretName: @@ -9505,10 +9974,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" command: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" env: items: properties: @@ -9573,6 +10044,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" envFrom: items: properties: @@ -9596,6 +10070,7 @@ spec: x-kubernetes-map-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" image: type: "string" imagePullPolicy: @@ -9610,6 +10085,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -9627,6 +10103,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -9668,6 +10145,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -9685,6 +10163,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -9727,6 +10206,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -9757,6 +10237,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -9831,6 +10312,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -9861,6 +10343,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -9951,16 +10434,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -10016,6 +10510,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -10046,6 +10541,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -10108,6 +10604,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "devicePath" + x-kubernetes-list-type: "map" volumeMounts: items: properties: @@ -10119,6 +10618,8 @@ spec: type: "string" readOnly: type: "boolean" + recursiveReadOnly: + type: "string" subPath: type: "string" subPathExpr: @@ -10128,6 +10629,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "mountPath" + x-kubernetes-list-type: "map" workingDir: type: "string" required: @@ -10172,11 +10676,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -10220,16 +10726,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -10325,6 +10842,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" ip: type: "string" type: "object" @@ -10341,6 +10859,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -10371,6 +10890,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -10443,11 +10963,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -10459,11 +10981,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" weight: @@ -10474,6 +10998,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -10490,11 +11015,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -10506,14 +11033,17 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-type: "atomic" required: - "nodeSelectorTerms" type: "object" @@ -10539,11 +11069,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -10573,11 +11105,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -10588,6 +11122,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -10601,6 +11136,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -10617,11 +11153,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -10651,11 +11189,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -10666,12 +11206,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" podAntiAffinity: properties: @@ -10693,11 +11235,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -10727,11 +11271,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -10742,6 +11288,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -10755,6 +11302,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -10771,11 +11319,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -10805,11 +11355,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -10820,12 +11372,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" type: "object" antiAffinityTopologyKey: @@ -10841,16 +11395,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -10912,6 +11477,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -10942,6 +11508,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -11003,6 +11570,15 @@ spec: type: "object" podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" fsGroup: format: "int64" type: "integer" @@ -11041,6 +11617,7 @@ spec: format: "int64" type: "integer" type: "array" + x-kubernetes-list-type: "atomic" sysctls: items: properties: @@ -11053,6 +11630,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" windowsOptions: properties: gmsaCredentialSpec: @@ -11075,6 +11653,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -11105,6 +11684,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -11195,6 +11775,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -11254,11 +11835,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -11280,6 +11863,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" allocatedResourceStatuses: additionalProperties: type: "string" @@ -11323,6 +11907,9 @@ spec: - "type" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "type" + x-kubernetes-list-type: "map" currentVolumeAttributesClassName: type: "string" modifyVolumeStatus: @@ -11392,6 +11979,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" readOnly: @@ -11446,6 +12034,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -11516,6 +12105,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" emptyDir: properties: @@ -11540,6 +12130,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -11599,11 +12190,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -11636,10 +12229,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" wwids: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" flexVolume: properties: @@ -11736,6 +12331,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" readOnly: type: "boolean" secretRef: @@ -11817,11 +12413,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -11856,6 +12454,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -11902,6 +12501,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" secret: properties: @@ -11920,6 +12520,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -11940,6 +12541,7 @@ spec: type: "object" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" quobyte: properties: @@ -11971,6 +12573,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" pool: type: "string" readOnly: @@ -12038,6 +12641,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" optional: type: "boolean" secretName: @@ -12084,10 +12688,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" command: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" env: items: properties: @@ -12152,6 +12758,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" envFrom: items: properties: @@ -12175,6 +12784,7 @@ spec: x-kubernetes-map-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" image: type: "string" imagePullPolicy: @@ -12189,6 +12799,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -12206,6 +12817,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -12247,6 +12859,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -12264,6 +12877,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -12306,6 +12920,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -12336,6 +12951,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -12410,6 +13026,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -12440,6 +13057,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -12530,16 +13148,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -12595,6 +13224,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -12625,6 +13255,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -12687,6 +13318,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "devicePath" + x-kubernetes-list-type: "map" volumeMounts: items: properties: @@ -12698,6 +13332,8 @@ spec: type: "string" readOnly: type: "boolean" + recursiveReadOnly: + type: "string" subPath: type: "string" subPathExpr: @@ -12707,6 +13343,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "mountPath" + x-kubernetes-list-type: "map" workingDir: type: "string" required: @@ -12751,11 +13390,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -12815,6 +13456,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" annotations: additionalProperties: type: "string" @@ -12882,11 +13524,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -12922,6 +13566,15 @@ spec: type: "object" podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" fsGroup: format: "int64" type: "integer" @@ -12960,6 +13613,7 @@ spec: format: "int64" type: "integer" type: "array" + x-kubernetes-list-type: "atomic" sysctls: items: properties: @@ -12972,6 +13626,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" windowsOptions: properties: gmsaCredentialSpec: @@ -12994,6 +13649,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -13024,6 +13680,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -13114,6 +13771,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -13173,11 +13831,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -13199,6 +13859,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" allocatedResourceStatuses: additionalProperties: type: "string" @@ -13242,6 +13903,9 @@ spec: - "type" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "type" + x-kubernetes-list-type: "map" currentVolumeAttributesClassName: type: "string" modifyVolumeStatus: @@ -13311,6 +13975,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" readOnly: @@ -13365,6 +14030,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -13435,6 +14101,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" emptyDir: properties: @@ -13459,6 +14126,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -13518,11 +14186,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -13555,10 +14225,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" wwids: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" flexVolume: properties: @@ -13655,6 +14327,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" readOnly: type: "boolean" secretRef: @@ -13736,11 +14409,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -13775,6 +14450,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -13821,6 +14497,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" secret: properties: @@ -13839,6 +14516,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -13859,6 +14537,7 @@ spec: type: "object" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" quobyte: properties: @@ -13890,6 +14569,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" pool: type: "string" readOnly: @@ -13957,6 +14637,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" optional: type: "boolean" secretName: @@ -14003,10 +14684,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" command: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" env: items: properties: @@ -14071,6 +14754,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" envFrom: items: properties: @@ -14094,6 +14780,7 @@ spec: x-kubernetes-map-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" image: type: "string" imagePullPolicy: @@ -14108,6 +14795,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -14125,6 +14813,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -14166,6 +14855,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -14183,6 +14873,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -14225,6 +14916,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -14255,6 +14947,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -14329,6 +15022,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -14359,6 +15053,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -14449,16 +15144,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -14514,6 +15220,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -14544,6 +15251,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -14606,6 +15314,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "devicePath" + x-kubernetes-list-type: "map" volumeMounts: items: properties: @@ -14617,6 +15328,8 @@ spec: type: "string" readOnly: type: "boolean" + recursiveReadOnly: + type: "string" subPath: type: "string" subPathExpr: @@ -14626,6 +15339,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "mountPath" + x-kubernetes-list-type: "map" workingDir: type: "string" required: @@ -14722,11 +15438,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -14786,6 +15504,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" annotations: additionalProperties: type: "string" @@ -14853,11 +15572,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -14903,11 +15624,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -14919,11 +15642,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" weight: @@ -14934,6 +15659,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: @@ -14950,11 +15676,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: items: properties: @@ -14966,14 +15694,17 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-type: "atomic" required: - "nodeSelectorTerms" type: "object" @@ -14999,11 +15730,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -15033,11 +15766,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -15048,6 +15783,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -15061,6 +15797,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -15077,11 +15814,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -15111,11 +15850,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -15126,12 +15867,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" podAntiAffinity: properties: @@ -15153,11 +15896,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -15187,11 +15932,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -15202,6 +15949,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: @@ -15215,6 +15963,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: items: properties: @@ -15231,11 +15980,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -15265,11 +16016,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -15280,12 +16033,14 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" type: "object" antiAffinityTopologyKey: @@ -15301,16 +16056,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -15387,6 +16153,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" ip: type: "string" type: "object" @@ -15406,6 +16173,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -15436,6 +16204,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -15497,6 +16266,15 @@ spec: type: "object" podSecurityContext: properties: + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" fsGroup: format: "int64" type: "integer" @@ -15535,6 +16313,7 @@ spec: format: "int64" type: "integer" type: "array" + x-kubernetes-list-type: "atomic" sysctls: items: properties: @@ -15547,6 +16326,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" windowsOptions: properties: gmsaCredentialSpec: @@ -15572,6 +16352,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -15602,6 +16383,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -15697,6 +16479,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -15756,11 +16539,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -15782,6 +16567,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" allocatedResourceStatuses: additionalProperties: type: "string" @@ -15825,6 +16611,9 @@ spec: - "type" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "type" + x-kubernetes-list-type: "map" currentVolumeAttributesClassName: type: "string" modifyVolumeStatus: @@ -15894,6 +16683,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" readOnly: @@ -15948,6 +16738,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -16018,6 +16809,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" emptyDir: properties: @@ -16042,6 +16834,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: properties: apiGroup: @@ -16101,11 +16894,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -16138,10 +16933,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" wwids: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" flexVolume: properties: @@ -16238,6 +17035,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" readOnly: type: "boolean" secretRef: @@ -16319,11 +17117,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -16358,6 +17158,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -16404,6 +17205,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" secret: properties: @@ -16422,6 +17224,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: type: "string" optional: @@ -16442,6 +17245,7 @@ spec: type: "object" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" quobyte: properties: @@ -16473,6 +17277,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" pool: type: "string" readOnly: @@ -16540,6 +17345,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" optional: type: "boolean" secretName: @@ -16586,10 +17392,12 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" command: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" env: items: properties: @@ -16654,6 +17462,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" envFrom: items: properties: @@ -16677,6 +17488,7 @@ spec: x-kubernetes-map-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" image: type: "string" imagePullPolicy: @@ -16691,6 +17503,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -16708,6 +17521,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -16749,6 +17563,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: properties: @@ -16766,6 +17581,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -16808,6 +17624,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -16838,6 +17655,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -16912,6 +17730,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -16942,6 +17761,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -17032,16 +17852,27 @@ spec: properties: allowPrivilegeEscalation: type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + required: + - "type" + type: "object" capabilities: properties: add: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: type: "boolean" @@ -17097,6 +17928,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: format: "int32" @@ -17127,6 +17959,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: type: "string" port: @@ -17189,6 +18022,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "devicePath" + x-kubernetes-list-type: "map" volumeMounts: items: properties: @@ -17200,6 +18036,8 @@ spec: type: "string" readOnly: type: "boolean" + recursiveReadOnly: + type: "string" subPath: type: "string" subPathExpr: @@ -17209,6 +18047,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "mountPath" + x-kubernetes-list-type: "map" workingDir: type: "string" required: @@ -17253,11 +18094,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" diff --git a/crd-catalog/projectcontour/contour/projectcontour.io/v1/httpproxies.yaml b/crd-catalog/projectcontour/contour/projectcontour.io/v1/httpproxies.yaml index 5041408e3..dc2aa78ce 100644 --- a/crd-catalog/projectcontour/contour/projectcontour.io/v1/httpproxies.yaml +++ b/crd-catalog/projectcontour/contour/projectcontour.io/v1/httpproxies.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "httpproxies.projectcontour.io" spec: group: "projectcontour.io" @@ -1875,6 +1875,7 @@ spec: x-kubernetes-list-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" type: "object" required: diff --git a/crd-catalog/projectcontour/contour/projectcontour.io/v1/tlscertificatedelegations.yaml b/crd-catalog/projectcontour/contour/projectcontour.io/v1/tlscertificatedelegations.yaml index 42737e872..d739531a8 100644 --- a/crd-catalog/projectcontour/contour/projectcontour.io/v1/tlscertificatedelegations.yaml +++ b/crd-catalog/projectcontour/contour/projectcontour.io/v1/tlscertificatedelegations.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "tlscertificatedelegations.projectcontour.io" spec: group: "projectcontour.io" diff --git a/crd-catalog/projectcontour/contour/projectcontour.io/v1alpha1/contourconfigurations.yaml b/crd-catalog/projectcontour/contour/projectcontour.io/v1alpha1/contourconfigurations.yaml index 3c964ca2e..79ee18bd1 100644 --- a/crd-catalog/projectcontour/contour/projectcontour.io/v1alpha1/contourconfigurations.yaml +++ b/crd-catalog/projectcontour/contour/projectcontour.io/v1alpha1/contourconfigurations.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "contourconfigurations.projectcontour.io" spec: group: "projectcontour.io" diff --git a/crd-catalog/projectcontour/contour/projectcontour.io/v1alpha1/contourdeployments.yaml b/crd-catalog/projectcontour/contour/projectcontour.io/v1alpha1/contourdeployments.yaml index b97bd781f..5194192f9 100644 --- a/crd-catalog/projectcontour/contour/projectcontour.io/v1alpha1/contourdeployments.yaml +++ b/crd-catalog/projectcontour/contour/projectcontour.io/v1alpha1/contourdeployments.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "contourdeployments.projectcontour.io" spec: group: "projectcontour.io" @@ -254,7 +254,7 @@ spec: description: "Path within the container at which the volume should be mounted. Must\nnot contain ':'." type: "string" mountPropagation: - description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10." + description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10.\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n(which defaults to None)." type: "string" name: description: "This must match the Name of a Volume." @@ -262,6 +262,9 @@ spec: readOnly: description: "Mounted read-only if true, read-write otherwise (false or unspecified).\nDefaults to false." type: "boolean" + recursiveReadOnly: + description: "RecursiveReadOnly specifies whether read-only mounts should be handled\nrecursively.\nIf ReadOnly is false, this field has no meaning and must be unspecified.\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\nrecursively read-only. If this field is set to IfPossible, the mount is made\nrecursively read-only, if it is supported by the container runtime. If this\nfield is set to Enabled, the mount is made recursively read-only if it is\nsupported by the container runtime, otherwise the pod will not be started and\nan error will be generated to indicate the reason.\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\nNone (or be unspecified, which defaults to None).\nIf this field is not specified, it is treated as an equivalent of Disabled." + type: "string" subPath: description: "Path within the volume from which the container's volume should be mounted.\nDefaults to \"\" (volume's root)." type: "string" @@ -346,6 +349,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" path: description: "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /" type: "string" @@ -419,6 +423,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" type: "string" @@ -468,7 +473,7 @@ spec: description: "DownwardAPIVolumeFile represents information to create the file containing the pod field" properties: fieldRef: - description: "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -511,6 +516,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" emptyDir: description: "emptyDir represents a temporary directory that shares a pod's lifetime.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir" @@ -543,6 +549,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: description: "dataSource field can be used to specify either:\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n* An existing PVC (PersistentVolumeClaim)\nIf the provisioner or an external controller can support the specified data source,\nit will create a new volume based on the contents of the specified data source.\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource." properties: @@ -620,11 +627,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -636,7 +645,7 @@ spec: description: "storageClassName is the name of the StorageClass required by the claim.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1" type: "string" volumeAttributesClassName: - description: "volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\nIf specified, the CSI driver will create or update the volume with the attributes defined\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\nwill be set by the persistentvolume controller if it exists.\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\nexists.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled." + description: "volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\nIf specified, the CSI driver will create or update the volume with the attributes defined\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\nwill be set by the persistentvolume controller if it exists.\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\nexists.\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled." type: "string" volumeMode: description: "volumeMode defines what type of volume is required by the claim.\nValue of Filesystem is implied when not included in claim spec." @@ -667,11 +676,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" wwids: description: "wwids Optional: FC volume world wide identifiers (wwids)\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" flexVolume: description: "flexVolume represents a generic volume resource that is\nprovisioned/attached using an exec based plugin." @@ -803,6 +814,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" readOnly: description: "readOnly here will force the ReadOnly setting in VolumeMounts.\nDefaults to false." type: "boolean" @@ -914,11 +926,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -964,6 +978,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" type: "string" @@ -981,7 +996,7 @@ spec: description: "DownwardAPIVolumeFile represents information to create the file containing the pod field" properties: fieldRef: - description: "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -1024,6 +1039,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" secret: description: "secret information about the secret data to project" @@ -1048,6 +1064,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" type: "string" @@ -1074,6 +1091,7 @@ spec: type: "object" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" quobyte: description: "quobyte represents a Quobyte mount on the host that shares a pod's lifetime" @@ -1117,6 +1135,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" pool: description: "pool is the rados pool name.\nDefault is rbd.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" type: "string" @@ -1208,6 +1227,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" optional: description: "optional field specify whether the Secret or its keys must be defined" type: "boolean" diff --git a/crd-catalog/projectcontour/contour/projectcontour.io/v1alpha1/extensionservices.yaml b/crd-catalog/projectcontour/contour/projectcontour.io/v1alpha1/extensionservices.yaml index ecd1f1e96..333aed635 100644 --- a/crd-catalog/projectcontour/contour/projectcontour.io/v1alpha1/extensionservices.yaml +++ b/crd-catalog/projectcontour/contour/projectcontour.io/v1alpha1/extensionservices.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.15.0" name: "extensionservices.projectcontour.io" spec: group: "projectcontour.io" diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/scrapeconfigs.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/scrapeconfigs.yaml index d9daeab29..9ce9fd3b6 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/scrapeconfigs.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/scrapeconfigs.yaml @@ -33,6 +33,298 @@ spec: spec: description: "ScrapeConfigSpec is a specification of the desired configuration for a scrape configuration." properties: + NomadSDConfigs: + description: "NomadSDConfigs defines a list of Nomad service discovery configurations." + items: + description: "NomadSDConfig configurations allow retrieving scrape targets from Nomad's Service API.\nSee https://prometheus.io/docs/prometheus/latest/configuration/configuration/#nomad_sd_config" + properties: + allowStale: + description: "The information to access the Nomad API. It is to be defined\nas the Nomad documentation requires." + type: "boolean" + authorization: + description: "Authorization header to use on every scrape request." + properties: + credentials: + description: "Selects a key of a Secret in the namespace that contains the credentials for authentication." + properties: + key: + description: "The key of the secret to select from. Must be a valid secret key." + type: "string" + name: + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the Secret or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + type: + description: "Defines the authentication type. The value is case-insensitive.\n\n\n\"Basic\" is not a supported value.\n\n\nDefault: \"Bearer\"" + type: "string" + type: "object" + basicAuth: + description: "BasicAuth information to use on every scrape request." + properties: + password: + description: "`password` specifies a key of a Secret containing the password for\nauthentication." + properties: + key: + description: "The key of the secret to select from. Must be a valid secret key." + type: "string" + name: + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the Secret or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + username: + description: "`username` specifies a key of a Secret containing the username for\nauthentication." + properties: + key: + description: "The key of the secret to select from. Must be a valid secret key." + type: "string" + name: + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the Secret or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + type: "object" + enableHTTP2: + description: "Whether to enable HTTP2." + type: "boolean" + followRedirects: + description: "Configure whether HTTP requests follow HTTP 3xx redirects." + type: "boolean" + namespace: + type: "string" + noProxy: + description: "`noProxy` is a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\n\n\nIt requires Prometheus >= v2.43.0." + type: "string" + oauth2: + description: "Optional OAuth 2.0 configuration.\nCannot be set at the same time as `authorization` or `basic_auth`." + properties: + clientId: + description: "`clientId` specifies a key of a Secret or ConfigMap containing the\nOAuth2 client's ID." + properties: + configMap: + description: "ConfigMap containing data to use for the targets." + properties: + key: + description: "The key to select." + type: "string" + name: + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the ConfigMap or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + secret: + description: "Secret containing data to use for the targets." + properties: + key: + description: "The key of the secret to select from. Must be a valid secret key." + type: "string" + name: + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the Secret or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + type: "object" + clientSecret: + description: "`clientSecret` specifies a key of a Secret containing the OAuth2\nclient's secret." + properties: + key: + description: "The key of the secret to select from. Must be a valid secret key." + type: "string" + name: + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the Secret or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + endpointParams: + additionalProperties: + type: "string" + description: "`endpointParams` configures the HTTP parameters to append to the token\nURL." + type: "object" + scopes: + description: "`scopes` defines the OAuth2 scopes used for the token request." + items: + type: "string" + type: "array" + tokenUrl: + description: "`tokenURL` configures the URL to fetch the token from." + minLength: 1 + type: "string" + required: + - "clientId" + - "clientSecret" + - "tokenUrl" + type: "object" + proxyConnectHeader: + additionalProperties: + description: "SecretKeySelector selects a key of a Secret." + properties: + key: + description: "The key of the secret to select from. Must be a valid secret key." + type: "string" + name: + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the Secret or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + description: "ProxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\n\n\nIt requires Prometheus >= v2.43.0." + type: "object" + x-kubernetes-map-type: "atomic" + proxyFromEnvironment: + description: "Whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\nIf unset, Prometheus uses its default value.\n\n\nIt requires Prometheus >= v2.43.0." + type: "boolean" + proxyUrl: + description: "`proxyURL` defines the HTTP proxy server to use.\n\n\nIt requires Prometheus >= v2.43.0." + pattern: "^http(s)?://.+$" + type: "string" + refreshInterval: + description: "Duration is a valid time duration that can be parsed by Prometheus model.ParseDuration() function.\nSupported units: y, w, d, h, m, s, ms\nExamples: `30s`, `1m`, `1h20m15s`, `15d`" + pattern: "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$" + type: "string" + region: + type: "string" + server: + minLength: 1 + type: "string" + tagSeparator: + type: "string" + tlsConfig: + description: "TLS configuration applying to the target HTTP endpoint." + properties: + ca: + description: "Certificate authority used when verifying server certificates." + properties: + configMap: + description: "ConfigMap containing data to use for the targets." + properties: + key: + description: "The key to select." + type: "string" + name: + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the ConfigMap or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + secret: + description: "Secret containing data to use for the targets." + properties: + key: + description: "The key of the secret to select from. Must be a valid secret key." + type: "string" + name: + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the Secret or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + type: "object" + cert: + description: "Client certificate to present when doing client-authentication." + properties: + configMap: + description: "ConfigMap containing data to use for the targets." + properties: + key: + description: "The key to select." + type: "string" + name: + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the ConfigMap or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + secret: + description: "Secret containing data to use for the targets." + properties: + key: + description: "The key of the secret to select from. Must be a valid secret key." + type: "string" + name: + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the Secret or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + type: "object" + insecureSkipVerify: + description: "Disable target certificate validation." + type: "boolean" + keySecret: + description: "Secret containing the client key file for the targets." + properties: + key: + description: "The key of the secret to select from. Must be a valid secret key." + type: "string" + name: + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + type: "string" + optional: + description: "Specify whether the Secret or its key must be defined" + type: "boolean" + required: + - "key" + type: "object" + x-kubernetes-map-type: "atomic" + serverName: + description: "Used to verify the hostname for the targets." + type: "string" + type: "object" + required: + - "server" + type: "object" + type: "array" authorization: description: "Authorization header to use on every scrape request." properties: diff --git a/crd-catalog/ray-project/kuberay/ray.io/v1/rayclusters.yaml b/crd-catalog/ray-project/kuberay/ray.io/v1/rayclusters.yaml index 74091211f..92cce09c5 100644 --- a/crd-catalog/ray-project/kuberay/ray.io/v1/rayclusters.yaml +++ b/crd-catalog/ray-project/kuberay/ray.io/v1/rayclusters.yaml @@ -7101,6 +7101,8 @@ spec: type: "string" serviceIP: type: "string" + serviceName: + type: "string" type: "object" lastUpdateTime: format: "date-time" diff --git a/crd-catalog/ray-project/kuberay/ray.io/v1/rayjobs.yaml b/crd-catalog/ray-project/kuberay/ray.io/v1/rayjobs.yaml index e9cf52e17..323205b23 100644 --- a/crd-catalog/ray-project/kuberay/ray.io/v1/rayjobs.yaml +++ b/crd-catalog/ray-project/kuberay/ray.io/v1/rayjobs.yaml @@ -10409,6 +10409,8 @@ spec: type: "string" serviceIP: type: "string" + serviceName: + type: "string" type: "object" lastUpdateTime: format: "date-time" diff --git a/crd-catalog/ray-project/kuberay/ray.io/v1/rayservices.yaml b/crd-catalog/ray-project/kuberay/ray.io/v1/rayservices.yaml index f6b40a0b9..1ff9c12be 100644 --- a/crd-catalog/ray-project/kuberay/ray.io/v1/rayservices.yaml +++ b/crd-catalog/ray-project/kuberay/ray.io/v1/rayservices.yaml @@ -7303,6 +7303,8 @@ spec: type: "string" serviceIP: type: "string" + serviceName: + type: "string" type: "object" lastUpdateTime: format: "date-time" @@ -7402,6 +7404,8 @@ spec: type: "string" serviceIP: type: "string" + serviceName: + type: "string" type: "object" lastUpdateTime: format: "date-time" diff --git a/crd-catalog/scylladb/scylla-operator/scylla.scylladb.com/v1/scyllaclusters.yaml b/crd-catalog/scylladb/scylla-operator/scylla.scylladb.com/v1/scyllaclusters.yaml index 1b215d0c7..b156cf9ec 100644 --- a/crd-catalog/scylladb/scylla-operator/scylla.scylladb.com/v1/scyllaclusters.yaml +++ b/crd-catalog/scylladb/scylla-operator/scylla.scylladb.com/v1/scyllaclusters.yaml @@ -116,6 +116,9 @@ spec: description: "backups specifies backup tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored." items: properties: + cron: + description: "cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]." + type: "string" dc: description: "dc is a list of datacenter glob patterns, e.g. 'dc1,!otherdc*' used to specify the DCs to include or exclude from backup." items: @@ -160,6 +163,9 @@ spec: startDate: description: "startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s." type: "string" + timezone: + description: "timezone specifies the timezone of cron field." + type: "string" uploadParallel: description: "uploadParallel is a list of upload parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters." items: @@ -2072,6 +2078,9 @@ spec: description: "repairs specify repair tasks in Scylla Manager. When Scylla Manager is not installed, these will be ignored." items: properties: + cron: + description: "cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]." + type: "string" dc: description: "dc is a list of datacenter glob patterns, e.g. 'dc1', '!otherdc*' used to specify the DCs to include or exclude from backup." items: @@ -2115,6 +2124,9 @@ spec: startDate: description: "startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s." type: "string" + timezone: + description: "timezone specifies the timezone of cron field." + type: "string" type: "object" type: "array" repository: @@ -2144,6 +2156,9 @@ spec: description: "backups reflects status of backup tasks." items: properties: + cron: + description: "cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]." + type: "string" dc: description: "dc is a list of datacenter glob patterns, e.g. 'dc1,!otherdc*' used to specify the DCs to include or exclude from backup." items: @@ -2194,6 +2209,9 @@ spec: startDate: description: "startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s." type: "string" + timezone: + description: "timezone specifies the timezone of cron field." + type: "string" uploadParallel: description: "uploadParallel is a list of upload parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters." items: @@ -2315,6 +2333,9 @@ spec: description: "repairs reflects status of repair tasks." items: properties: + cron: + description: "cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]." + type: "string" dc: description: "dc is a list of datacenter glob patterns, e.g. 'dc1', '!otherdc*' used to specify the DCs to include or exclude from backup." items: @@ -2364,6 +2385,9 @@ spec: startDate: description: "startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s." type: "string" + timezone: + description: "timezone specifies the timezone of cron field." + type: "string" type: "object" type: "array" upgrade: diff --git a/crd-catalog/solo-io/gloo/gateway.solo.io/v1/gateways.yaml b/crd-catalog/solo-io/gloo/gateway.solo.io/v1/gateways.yaml index b9be37c7d..25a9000d9 100644 --- a/crd-catalog/solo-io/gloo/gateway.solo.io/v1/gateways.yaml +++ b/crd-catalog/solo-io/gloo/gateway.solo.io/v1/gateways.yaml @@ -5221,6 +5221,165 @@ spec: x-kubernetes-preserve-unknown-fields: true type: "object" type: "object" + listenerAccessLoggingService: + properties: + accessLog: + items: + properties: + fileSink: + properties: + jsonFormat: + type: "object" + x-kubernetes-preserve-unknown-fields: true + path: + type: "string" + stringFormat: + type: "string" + type: "object" + filter: + properties: + andFilter: + type: "object" + x-kubernetes-preserve-unknown-fields: true + durationFilter: + properties: + comparison: + properties: + op: + type: "string" + x-kubernetes-int-or-string: true + value: + properties: + defaultValue: + format: "int32" + type: "integer" + runtimeKey: + type: "string" + type: "object" + type: "object" + type: "object" + grpcStatusFilter: + properties: + exclude: + type: "boolean" + statuses: + items: + type: "string" + x-kubernetes-int-or-string: true + type: "array" + type: "object" + headerFilter: + properties: + header: + properties: + exactMatch: + type: "string" + invertMatch: + type: "boolean" + name: + type: "string" + prefixMatch: + type: "string" + presentMatch: + type: "boolean" + rangeMatch: + properties: + end: + format: "int64" + type: "integer" + x-kubernetes-int-or-string: true + start: + format: "int64" + type: "integer" + x-kubernetes-int-or-string: true + type: "object" + safeRegexMatch: + properties: + googleRe2: + properties: + maxProgramSize: + maximum: 4294967295.0 + minimum: 0.0 + nullable: true + type: "integer" + type: "object" + regex: + type: "string" + type: "object" + suffixMatch: + type: "string" + type: "object" + type: "object" + notHealthCheckFilter: + type: "object" + orFilter: + type: "object" + x-kubernetes-preserve-unknown-fields: true + responseFlagFilter: + properties: + flags: + items: + type: "string" + type: "array" + type: "object" + runtimeFilter: + properties: + percentSampled: + properties: + denominator: + type: "string" + x-kubernetes-int-or-string: true + numerator: + format: "int32" + type: "integer" + type: "object" + runtimeKey: + type: "string" + useIndependentRandomness: + type: "boolean" + type: "object" + statusCodeFilter: + properties: + comparison: + properties: + op: + type: "string" + x-kubernetes-int-or-string: true + value: + properties: + defaultValue: + format: "int32" + type: "integer" + runtimeKey: + type: "string" + type: "object" + type: "object" + type: "object" + traceableFilter: + type: "object" + type: "object" + grpcService: + properties: + additionalRequestHeadersToLog: + items: + type: "string" + type: "array" + additionalResponseHeadersToLog: + items: + type: "string" + type: "array" + additionalResponseTrailersToLog: + items: + type: "string" + type: "array" + logName: + type: "string" + staticClusterName: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" perConnectionBufferLimitBytes: maximum: 4294967295.0 minimum: 0.0 diff --git a/crd-catalog/solo-io/gloo/gloo.solo.io/v1/proxies.yaml b/crd-catalog/solo-io/gloo/gloo.solo.io/v1/proxies.yaml index fbac1b4e3..adc370582 100644 --- a/crd-catalog/solo-io/gloo/gloo.solo.io/v1/proxies.yaml +++ b/crd-catalog/solo-io/gloo/gloo.solo.io/v1/proxies.yaml @@ -239,6 +239,165 @@ spec: x-kubernetes-preserve-unknown-fields: true type: "object" type: "object" + listenerAccessLoggingService: + properties: + accessLog: + items: + properties: + fileSink: + properties: + jsonFormat: + type: "object" + x-kubernetes-preserve-unknown-fields: true + path: + type: "string" + stringFormat: + type: "string" + type: "object" + filter: + properties: + andFilter: + type: "object" + x-kubernetes-preserve-unknown-fields: true + durationFilter: + properties: + comparison: + properties: + op: + type: "string" + x-kubernetes-int-or-string: true + value: + properties: + defaultValue: + format: "int32" + type: "integer" + runtimeKey: + type: "string" + type: "object" + type: "object" + type: "object" + grpcStatusFilter: + properties: + exclude: + type: "boolean" + statuses: + items: + type: "string" + x-kubernetes-int-or-string: true + type: "array" + type: "object" + headerFilter: + properties: + header: + properties: + exactMatch: + type: "string" + invertMatch: + type: "boolean" + name: + type: "string" + prefixMatch: + type: "string" + presentMatch: + type: "boolean" + rangeMatch: + properties: + end: + format: "int64" + type: "integer" + x-kubernetes-int-or-string: true + start: + format: "int64" + type: "integer" + x-kubernetes-int-or-string: true + type: "object" + safeRegexMatch: + properties: + googleRe2: + properties: + maxProgramSize: + maximum: 4294967295.0 + minimum: 0.0 + nullable: true + type: "integer" + type: "object" + regex: + type: "string" + type: "object" + suffixMatch: + type: "string" + type: "object" + type: "object" + notHealthCheckFilter: + type: "object" + orFilter: + type: "object" + x-kubernetes-preserve-unknown-fields: true + responseFlagFilter: + properties: + flags: + items: + type: "string" + type: "array" + type: "object" + runtimeFilter: + properties: + percentSampled: + properties: + denominator: + type: "string" + x-kubernetes-int-or-string: true + numerator: + format: "int32" + type: "integer" + type: "object" + runtimeKey: + type: "string" + useIndependentRandomness: + type: "boolean" + type: "object" + statusCodeFilter: + properties: + comparison: + properties: + op: + type: "string" + x-kubernetes-int-or-string: true + value: + properties: + defaultValue: + format: "int32" + type: "integer" + runtimeKey: + type: "string" + type: "object" + type: "object" + type: "object" + traceableFilter: + type: "object" + type: "object" + grpcService: + properties: + additionalRequestHeadersToLog: + items: + type: "string" + type: "array" + additionalResponseHeadersToLog: + items: + type: "string" + type: "array" + additionalResponseTrailersToLog: + items: + type: "string" + type: "array" + logName: + type: "string" + staticClusterName: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" perConnectionBufferLimitBytes: maximum: 4294967295.0 minimum: 0.0 diff --git a/crd-catalog/traefik/traefik/traefik.io/v1alpha1/middlewares.yaml b/crd-catalog/traefik/traefik/traefik.io/v1alpha1/middlewares.yaml index 8f7dec85f..ebd5345b7 100644 --- a/crd-catalog/traefik/traefik/traefik.io/v1alpha1/middlewares.yaml +++ b/crd-catalog/traefik/traefik/traefik.io/v1alpha1/middlewares.yaml @@ -118,6 +118,9 @@ spec: - type: "string" description: "RecoveryDuration is the duration for which the circuit breaker will try to recover (as soon as it is in recovering state)." x-kubernetes-int-or-string: true + responseCode: + description: "ResponseCode is the status code that the circuit breaker will return while it is in the open state." + type: "integer" type: "object" compress: description: "Compress holds the compress middleware configuration.\nThis middleware compresses responses before sending them to the client, using gzip compression.\nMore info: https://doc.traefik.io/traefik/v3.0/middlewares/http/compress/" @@ -452,7 +455,7 @@ spec: type: "object" type: "object" ipAllowList: - description: "IPAllowList holds the IP allowlist middleware configuration.\nThis middleware accepts / refuses requests based on the client IP.\nMore info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/" + description: "IPAllowList holds the IP allowlist middleware configuration.\nThis middleware limits allowed requests based on the client IP.\nMore info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/" properties: ipStrategy: description: "IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.\nMore info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/#ipstrategy" @@ -491,7 +494,7 @@ spec: type: "array" type: "object" sourceRange: - description: "SourceRange defines the set of allowed IPs (or ranges of allowed IPs by using CIDR notation)." + description: "SourceRange defines the set of allowed IPs (or ranges of allowed IPs by using CIDR notation). Required." items: type: "string" type: "array" diff --git a/crd-catalog/zalando/postgres-operator/acid.zalan.do/v1/operatorconfigurations.yaml b/crd-catalog/zalando/postgres-operator/acid.zalan.do/v1/operatorconfigurations.yaml index e8f9059fa..7e4cd4041 100644 --- a/crd-catalog/zalando/postgres-operator/acid.zalan.do/v1/operatorconfigurations.yaml +++ b/crd-catalog/zalando/postgres-operator/acid.zalan.do/v1/operatorconfigurations.yaml @@ -447,6 +447,8 @@ spec: type: "string" logical_backup_s3_bucket: type: "string" + logical_backup_s3_bucket_prefix: + type: "string" logical_backup_s3_endpoint: type: "string" logical_backup_s3_region: diff --git a/kube-custom-resources-rs/src/acmpca_services_k8s_aws/v1alpha1/certificateauthorities.rs b/kube-custom-resources-rs/src/acmpca_services_k8s_aws/v1alpha1/certificateauthorities.rs index 60516e3e0..eca1ad022 100644 --- a/kube-custom-resources-rs/src/acmpca_services_k8s_aws/v1alpha1/certificateauthorities.rs +++ b/kube-custom-resources-rs/src/acmpca_services_k8s_aws/v1alpha1/certificateauthorities.rs @@ -86,6 +86,7 @@ pub struct CertificateAuthoritySpec { /// permissions, see Controlling Access Using IAM Tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html). #[serde(default, skip_serializing_if = "Option::is_none")] pub tags: Option>, + /// The type of the certificate authority. #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] pub r#type: Option, /// Specifies whether the CA issues general-purpose certificates that typically diff --git a/kube-custom-resources-rs/src/app_terraform_io/v1alpha2/workspaces.rs b/kube-custom-resources-rs/src/app_terraform_io/v1alpha2/workspaces.rs index f721bdfe3..7c1b79756 100644 --- a/kube-custom-resources-rs/src/app_terraform_io/v1alpha2/workspaces.rs +++ b/kube-custom-resources-rs/src/app_terraform_io/v1alpha2/workspaces.rs @@ -574,6 +574,9 @@ pub struct WorkspaceStatus { /// Workspace last update timestamp. #[serde(default, skip_serializing_if = "Option::is_none", rename = "updateAt")] pub update_at: Option, + /// Workspace variables. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub variables: Option>, /// Workspace ID that is managed by the controller. #[serde(rename = "workspaceID")] pub workspace_id: String, @@ -610,3 +613,19 @@ pub struct WorkspaceStatusRunStatus { pub status: Option, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct WorkspaceStatusVariables { + /// Category of the variable. + pub category: String, + /// ID of the variable. + pub id: String, + /// Name of the variable. + pub name: String, + /// ValueID is a hash of the variable on the CRD end. + #[serde(rename = "valueID")] + pub value_id: String, + /// VersionID is a hash of the variable on the TFC end. + #[serde(rename = "versionID")] + pub version_id: String, +} + diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/clusters.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/clusters.rs index 7b834d074..93db93c86 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/clusters.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/clusters.rs @@ -476,98 +476,37 @@ pub struct ClusterComponentSpecsInstancesTolerations { pub value: Option, } -/// PersistentVolumeClaim is a user's request for and claim to a persistent volume #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterComponentSpecsInstancesVolumeClaimTemplates { - /// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] - pub api_version: Option, - /// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - #[serde(default, skip_serializing_if = "Option::is_none")] - pub kind: Option, - /// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - #[serde(default, skip_serializing_if = "Option::is_none")] - pub metadata: Option, - /// spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + /// Refers to the name of a volumeMount defined in either: + /// - `componentDefinition.spec.runtime.containers[*].volumeMounts` - `clusterDefinition.spec.componentDefs[*].podSpec.containers[*].volumeMounts` (deprecated) + /// The value of `name` must match the `name` field of a volumeMount specified in the corresponding `volumeMounts` array. + pub name: String, + /// Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. + /// When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field. #[serde(default, skip_serializing_if = "Option::is_none")] pub spec: Option, - /// status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option, -} - -/// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterComponentSpecsInstancesVolumeClaimTemplatesMetadata { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub annotations: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub finalizers: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, } -/// spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims +/// Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. +/// When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterComponentSpecsInstancesVolumeClaimTemplatesSpec { - /// accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + /// Contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] pub access_modes: Option>, - /// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] - pub data_source: Option, - /// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] - pub data_source_ref: Option, - /// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + /// Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, - /// selector is a label query over volumes to consider for binding. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub selector: Option, - /// storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + /// The name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] pub storage_class_name: Option, - /// volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + /// Defines what type of volume is required by the claim, either Block or Filesystem. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] pub volume_mode: Option, - /// volumeName is the binding reference to the PersistentVolume backing this claim. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] - pub volume_name: Option, -} - -/// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterComponentSpecsInstancesVolumeClaimTemplatesSpecDataSource { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, } -/// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterComponentSpecsInstancesVolumeClaimTemplatesSpecDataSourceRef { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, - /// Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, -} - -/// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources +/// Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterComponentSpecsInstancesVolumeClaimTemplatesSpecResources { /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. @@ -590,58 +529,6 @@ pub struct ClusterComponentSpecsInstancesVolumeClaimTemplatesSpecResourcesClaims pub name: String, } -/// selector is a label query over volumes to consider for binding. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterComponentSpecsInstancesVolumeClaimTemplatesSpecSelector { - /// matchExpressions is a list of label selector requirements. The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] - pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] - pub match_labels: Option>, -} - -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterComponentSpecsInstancesVolumeClaimTemplatesSpecSelectorMatchExpressions { - /// key is the label key that the selector applies to. - pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub values: Option>, -} - -/// status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterComponentSpecsInstancesVolumeClaimTemplatesStatus { - /// accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] - pub access_modes: Option>, - /// allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. - /// ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed" When this field is not set, it means that no resize operation is in progress for the given PVC. - /// A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. - /// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocatedResourceStatuses")] - pub allocated_resource_statuses: Option>, - /// allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. - /// Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. - /// A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. - /// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocatedResources")] - pub allocated_resources: Option>, - /// capacity represents the actual resources of the underlying volume. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub capacity: Option>, - /// conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub conditions: Option>, - /// phase represents the current phase of PersistentVolumeClaim. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub phase: Option, -} - /// VolumeMount describes a mounting of a Volume within a container. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterComponentSpecsInstancesVolumeMounts { @@ -2207,7 +2094,7 @@ pub struct ClusterComponentSpecsServiceRefs { /// By default, the referenced KubeBlocks Cluster's `clusterDefinition.spec.connectionCredential` will be utilized to bind to the current Component. This credential should include: `endpoint`, `port`, `username`, and `password`. /// Note: /// - The `ServiceKind` and `ServiceVersion` specified in the service reference within the ClusterDefinition are not validated when using this approach. - If both `cluster` and `serviceDescriptor` are present, `cluster` will take precedence. - /// Deprecated since v0.9 since `clusterDefinition.spec.connectionCredential` is deprecated, use `clusterRef` instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases. + /// Deprecated since v0.9 since `clusterDefinition.spec.connectionCredential` is deprecated, use `clusterServiceSelector` instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases. #[serde(default, skip_serializing_if = "Option::is_none")] pub cluster: Option, /// ClusterRef is used to reference a service provided by another KubeBlocks Cluster. It specifies the ClusterService and the account credentials needed for access. @@ -2269,14 +2156,15 @@ pub struct ClusterComponentSpecsServices { /// If ServiceType is LoadBalancer, cloud provider related parameters can be put here. More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer. #[serde(default, skip_serializing_if = "Option::is_none")] pub annotations: Option>, - /// References the component service name defined in the ComponentDefinition.Spec.Services[x].Name. + /// References the component service name defined in the `componentDefinition.spec.services[*].name`. pub name: String, /// Indicates whether to generate individual services for each pod. If set to true, a separate service will be created for each pod in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "podService")] pub pod_service: Option, /// Determines how the Service is exposed. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. - /// - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. - /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types. + /// - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. + /// Note: although K8s Service type allows the 'ExternalName' type, it is not a valid option for ClusterComponentService. + /// For more info, see: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types. #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceType")] pub service_type: Option, } @@ -3038,7 +2926,7 @@ pub struct ClusterServices { /// Extends the above `serviceSpec.selector` by allowing you to specify defined role as selector for the service. When `roleSelector` is set, it adds a label selector "kubeblocks.io/role: {roleSelector}" to the `serviceSpec.selector`. Example usage: /// roleSelector: "leader" /// In this example, setting `roleSelector` to "leader" will add a label selector "kubeblocks.io/role: leader" to the `serviceSpec.selector`. This means that the service will select and route traffic to Pods with the label "kubeblocks.io/role" set to "leader". - /// Note that if `generatePodOrdinalService` sets to true, RoleSelector will be ignored. The `generatePodOrdinalService` flag takes precedence over `roleSelector` and generates a service for each Pod. + /// Note that if `podService` sets to true, RoleSelector will be ignored. The `podService` flag takes precedence over `roleSelector` and generates a service for each Pod. #[serde(default, skip_serializing_if = "Option::is_none", rename = "roleSelector")] pub role_selector: Option, /// ServiceName defines the name of the underlying service object. If not specified, the default service name with different patterns will be used: @@ -3480,98 +3368,37 @@ pub struct ClusterShardingSpecsTemplateInstancesTolerations { pub value: Option, } -/// PersistentVolumeClaim is a user's request for and claim to a persistent volume #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterShardingSpecsTemplateInstancesVolumeClaimTemplates { - /// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] - pub api_version: Option, - /// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - #[serde(default, skip_serializing_if = "Option::is_none")] - pub kind: Option, - /// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - #[serde(default, skip_serializing_if = "Option::is_none")] - pub metadata: Option, - /// spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + /// Refers to the name of a volumeMount defined in either: + /// - `componentDefinition.spec.runtime.containers[*].volumeMounts` - `clusterDefinition.spec.componentDefs[*].podSpec.containers[*].volumeMounts` (deprecated) + /// The value of `name` must match the `name` field of a volumeMount specified in the corresponding `volumeMounts` array. + pub name: String, + /// Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. + /// When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field. #[serde(default, skip_serializing_if = "Option::is_none")] pub spec: Option, - /// status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option, } -/// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterShardingSpecsTemplateInstancesVolumeClaimTemplatesMetadata { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub annotations: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub finalizers: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, -} - -/// spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims +/// Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. +/// When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterShardingSpecsTemplateInstancesVolumeClaimTemplatesSpec { - /// accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + /// Contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] pub access_modes: Option>, - /// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] - pub data_source: Option, - /// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] - pub data_source_ref: Option, - /// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + /// Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, - /// selector is a label query over volumes to consider for binding. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub selector: Option, - /// storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + /// The name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] pub storage_class_name: Option, - /// volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + /// Defines what type of volume is required by the claim, either Block or Filesystem. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] pub volume_mode: Option, - /// volumeName is the binding reference to the PersistentVolume backing this claim. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] - pub volume_name: Option, } -/// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterShardingSpecsTemplateInstancesVolumeClaimTemplatesSpecDataSource { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, -} - -/// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterShardingSpecsTemplateInstancesVolumeClaimTemplatesSpecDataSourceRef { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, - /// Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, -} - -/// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources +/// Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterShardingSpecsTemplateInstancesVolumeClaimTemplatesSpecResources { /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. @@ -3594,58 +3421,6 @@ pub struct ClusterShardingSpecsTemplateInstancesVolumeClaimTemplatesSpecResource pub name: String, } -/// selector is a label query over volumes to consider for binding. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterShardingSpecsTemplateInstancesVolumeClaimTemplatesSpecSelector { - /// matchExpressions is a list of label selector requirements. The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] - pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] - pub match_labels: Option>, -} - -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterShardingSpecsTemplateInstancesVolumeClaimTemplatesSpecSelectorMatchExpressions { - /// key is the label key that the selector applies to. - pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub values: Option>, -} - -/// status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterShardingSpecsTemplateInstancesVolumeClaimTemplatesStatus { - /// accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] - pub access_modes: Option>, - /// allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. - /// ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed" When this field is not set, it means that no resize operation is in progress for the given PVC. - /// A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. - /// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocatedResourceStatuses")] - pub allocated_resource_statuses: Option>, - /// allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. - /// Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. - /// A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. - /// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocatedResources")] - pub allocated_resources: Option>, - /// capacity represents the actual resources of the underlying volume. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub capacity: Option>, - /// conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub conditions: Option>, - /// phase represents the current phase of PersistentVolumeClaim. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub phase: Option, -} - /// VolumeMount describes a mounting of a Volume within a container. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterShardingSpecsTemplateInstancesVolumeMounts { @@ -5211,7 +4986,7 @@ pub struct ClusterShardingSpecsTemplateServiceRefs { /// By default, the referenced KubeBlocks Cluster's `clusterDefinition.spec.connectionCredential` will be utilized to bind to the current Component. This credential should include: `endpoint`, `port`, `username`, and `password`. /// Note: /// - The `ServiceKind` and `ServiceVersion` specified in the service reference within the ClusterDefinition are not validated when using this approach. - If both `cluster` and `serviceDescriptor` are present, `cluster` will take precedence. - /// Deprecated since v0.9 since `clusterDefinition.spec.connectionCredential` is deprecated, use `clusterRef` instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases. + /// Deprecated since v0.9 since `clusterDefinition.spec.connectionCredential` is deprecated, use `clusterServiceSelector` instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases. #[serde(default, skip_serializing_if = "Option::is_none")] pub cluster: Option, /// ClusterRef is used to reference a service provided by another KubeBlocks Cluster. It specifies the ClusterService and the account credentials needed for access. @@ -5273,14 +5048,15 @@ pub struct ClusterShardingSpecsTemplateServices { /// If ServiceType is LoadBalancer, cloud provider related parameters can be put here. More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer. #[serde(default, skip_serializing_if = "Option::is_none")] pub annotations: Option>, - /// References the component service name defined in the ComponentDefinition.Spec.Services[x].Name. + /// References the component service name defined in the `componentDefinition.spec.services[*].name`. pub name: String, /// Indicates whether to generate individual services for each pod. If set to true, a separate service will be created for each pod in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "podService")] pub pod_service: Option, /// Determines how the Service is exposed. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. - /// - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. - /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types. + /// - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. + /// Note: although K8s Service type allows the 'ExternalName' type, it is not a valid option for ClusterComponentService. + /// For more info, see: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types. #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceType")] pub service_type: Option, } @@ -5591,12 +5367,6 @@ pub struct ClusterStatusComponentsMembersStatus { /// Represents the name of the pod. #[serde(rename = "podName")] pub pod_name: String, - /// Whether the corresponding Pod is in ready condition. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ready: Option, - /// Indicates whether it is required for the InstanceSet to have at least one primary instance ready. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyWithoutPrimary")] - pub ready_without_primary: Option, /// Defines the role of the replica in the cluster. #[serde(default, skip_serializing_if = "Option::is_none")] pub role: Option, diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/componentdefinitions.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/componentdefinitions.rs index 9bb9b8051..bc4624af6 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/componentdefinitions.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/componentdefinitions.rs @@ -153,7 +153,7 @@ pub struct ComponentDefinitionSpec { pub update_strategy: Option, /// Represents user-defined variables that can be used as environment variables for Pods and Actions, or to render templates of config and script. These variables are placed in front of the environment variables declared in the Pod if used as environment variables. /// The value of a var can be populated from the following sources: - /// - ConfigMap: Allows you to select a ConfigMap and a specific key within that ConfigMap to extract the value from. - Secret: Allows you to select a Secret and a specific key within that Secret to extract the value from. - Pod: Retrieves values (including ports) from a selected Pod. - Service: Retrieves values (including address, port, NodePort) from a selected Service. The purpose of ServiceVar is to obtain the address of a ComponentService. - Credential: Retrieves values (including account name, account password) from a SystemAccount variable. - ServiceRef: Retrieves values (including address, port, account name, account password) from a selected ServiceRefDeclaration. The purpose of ServiceRefVar is to obtain the specific address that a ServiceRef is bound to (e.g., a ClusterService of another Cluster). + /// - ConfigMap: Allows you to select a ConfigMap and a specific key within that ConfigMap to extract the value from. - Secret: Allows you to select a Secret and a specific key within that Secret to extract the value from. - Pod: Retrieves values (including ports) from a selected Pod. - Service: Retrieves values (including address, port, NodePort) from a selected Service. The purpose of ServiceVar is to obtain the address of a ComponentService. - Credential: Retrieves values (including account name, account password) from a SystemAccount variable. - ServiceRef: Retrieves values (including address, port, account name, account password) from a selected ServiceRefDeclaration. The purpose of ServiceRefVar is to obtain the specific address that a ServiceRef is bound to (e.g., a ClusterService of another Cluster). - Component: Retrieves values from a field of a Component. /// This field is immutable. #[serde(default, skip_serializing_if = "Option::is_none")] pub vars: Option>, @@ -7651,10 +7651,9 @@ pub struct ComponentDefinitionServices { /// Name defines the name of the service. otherwise, it indicates the name of the service. Others can refer to this service by its name. (e.g., connection credential) Cannot be updated. pub name: String, /// Indicates whether to create a corresponding Service for each Pod of the selected Component. When set to true, a set of Services will be automatically generated for each Pod, and the `roleSelector` field will be ignored. - /// The names of the generated Services will follow the same naming pattern: `$(serviceName)-$(podOrdinal)`. - /// The podOrdinal is zero-based, meaning it starts from 0 for the first Pod and increments for each subsequent Pod. The total number of generated Services will be equal to the number of replicas specified for the Component. + /// The names of the generated Services will follow the same suffix naming pattern: `$(serviceName)-$(podOrdinal)`. The total number of generated Services will be equal to the number of replicas specified for the Component. /// Example usage: - /// ```yaml name: my-service serviceName: my-service generatePodOrdinalService: true spec: type: NodePort ports: - name: http port: 80 targetPort: 8080 ``` + /// ```yaml name: my-service serviceName: my-service podService: true disableAutoProvision: true spec: type: NodePort ports: - name: http port: 80 targetPort: 8080 ``` /// In this example, if the Component has 3 replicas, three Services will be generated: - my-service-0: Points to the first Pod (podOrdinal: 0) - my-service-1: Points to the second Pod (podOrdinal: 1) - my-service-2: Points to the third Pod (podOrdinal: 2) /// Each generated Service will have the specified spec configuration and will target its respective Pod. /// This feature is useful when you need to expose each Pod of a Component individually, allowing external access to specific instances of the Component. @@ -7663,7 +7662,7 @@ pub struct ComponentDefinitionServices { /// Extends the above `serviceSpec.selector` by allowing you to specify defined role as selector for the service. When `roleSelector` is set, it adds a label selector "kubeblocks.io/role: {roleSelector}" to the `serviceSpec.selector`. Example usage: /// roleSelector: "leader" /// In this example, setting `roleSelector` to "leader" will add a label selector "kubeblocks.io/role: leader" to the `serviceSpec.selector`. This means that the service will select and route traffic to Pods with the label "kubeblocks.io/role" set to "leader". - /// Note that if `generatePodOrdinalService` sets to true, RoleSelector will be ignored. The `generatePodOrdinalService` flag takes precedence over `roleSelector` and generates a service for each Pod. + /// Note that if `podService` sets to true, RoleSelector will be ignored. The `podService` flag takes precedence over `roleSelector` and generates a service for each Pod. #[serde(default, skip_serializing_if = "Option::is_none", rename = "roleSelector")] pub role_selector: Option, /// ServiceName defines the name of the underlying service object. If not specified, the default service name with different patterns will be used: @@ -8697,6 +8696,9 @@ pub struct ComponentDefinitionVars { /// Source for the variable's value. Cannot be used if value is not empty. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ComponentDefinitionVarsValueFrom { + /// Selects a defined var of a Component. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "componentVarRef")] + pub component_var_ref: Option, /// Selects a key of a ConfigMap. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] pub config_map_key_ref: Option, @@ -8717,6 +8719,96 @@ pub struct ComponentDefinitionVarsValueFrom { pub service_var_ref: Option, } +/// Selects a defined var of a Component. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ComponentDefinitionVarsValueFromComponentVarRef { + /// CompDef specifies the definition used by the component that the referent object resident in. If not specified, the component itself will be used. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "compDef")] + pub comp_def: Option, + /// Reference to the name of the Component object. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "componentName")] + pub component_name: Option, + /// Reference to the instanceName list of the component. and the value will be presented in the following format: instanceName1,instanceName2... + #[serde(default, skip_serializing_if = "Option::is_none", rename = "instanceNames")] + pub instance_names: Option, + /// This option defines the behavior when multiple component objects match the specified @CompDef. If not provided, an error will be raised when handling multiple matches. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "multipleClusterObjectOption")] + pub multiple_cluster_object_option: Option, + /// Name of the referent object. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the object must be defined. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, + /// Reference to the replicas of the component. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replicas: Option, +} + +/// Selects a defined var of a Component. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum ComponentDefinitionVarsValueFromComponentVarRefComponentName { + Required, + Optional, +} + +/// Selects a defined var of a Component. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum ComponentDefinitionVarsValueFromComponentVarRefInstanceNames { + Required, + Optional, +} + +/// This option defines the behavior when multiple component objects match the specified @CompDef. If not provided, an error will be raised when handling multiple matches. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ComponentDefinitionVarsValueFromComponentVarRefMultipleClusterObjectOption { + /// Define the options for handling combined variables. Valid only when the strategy is set to "combined". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "combinedOption")] + pub combined_option: Option, + /// Define the strategy for handling multiple cluster objects. + pub strategy: ComponentDefinitionVarsValueFromComponentVarRefMultipleClusterObjectOptionStrategy, +} + +/// Define the options for handling combined variables. Valid only when the strategy is set to "combined". +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ComponentDefinitionVarsValueFromComponentVarRefMultipleClusterObjectOptionCombinedOption { + /// The flatten format, default is: $(comp-name-1):value,$(comp-name-2):value. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "flattenFormat")] + pub flatten_format: Option, + /// If set, the existing variable will be kept, and a new variable will be defined with the specified suffix in pattern: $(var.name)_$(suffix). The new variable will be auto-created and placed behind the existing one. If not set, the existing variable will be reused with the value format defined below. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "newVarSuffix")] + pub new_var_suffix: Option, + /// The format of the value that the operator will use to compose values from multiple components. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFormat")] + pub value_format: Option, +} + +/// The flatten format, default is: $(comp-name-1):value,$(comp-name-2):value. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ComponentDefinitionVarsValueFromComponentVarRefMultipleClusterObjectOptionCombinedOptionFlattenFormat { + /// Pair delimiter. + pub delimiter: String, + /// Key-value delimiter. + #[serde(rename = "keyValueDelimiter")] + pub key_value_delimiter: String, +} + +/// This option defines the behavior when multiple component objects match the specified @CompDef. If not provided, an error will be raised when handling multiple matches. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum ComponentDefinitionVarsValueFromComponentVarRefMultipleClusterObjectOptionStrategy { + #[serde(rename = "individual")] + Individual, + #[serde(rename = "combined")] + Combined, +} + +/// Selects a defined var of a Component. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum ComponentDefinitionVarsValueFromComponentVarRefReplicas { + Required, + Optional, +} + /// Selects a key of a ConfigMap. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ComponentDefinitionVarsValueFromConfigMapKeyRef { @@ -9022,6 +9114,10 @@ pub struct ComponentDefinitionVarsValueFromServiceVarRef { /// VarOption defines whether a variable is required or optional. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, + /// LoadBalancer represents the LoadBalancer ingress point of the service. + /// If multiple ingress points are available, the first one will be used automatically, choosing between IP and Hostname. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancer")] + pub load_balancer: Option, /// This option defines the behavior when multiple component objects match the specified @CompDef. If not provided, an error will be raised when handling multiple matches. #[serde(default, skip_serializing_if = "Option::is_none", rename = "multipleClusterObjectOption")] pub multiple_cluster_object_option: Option, @@ -9044,6 +9140,13 @@ pub enum ComponentDefinitionVarsValueFromServiceVarRefHost { Optional, } +/// Selects a defined var of a Service. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum ComponentDefinitionVarsValueFromServiceVarRefLoadBalancer { + Required, + Optional, +} + /// This option defines the behavior when multiple component objects match the specified @CompDef. If not provided, an error will be raised when handling multiple matches. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ComponentDefinitionVarsValueFromServiceVarRefMultipleClusterObjectOption { diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/components.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/components.rs index 376e5912e..f3966a6d5 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/components.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/components.rs @@ -381,98 +381,37 @@ pub struct ComponentInstancesTolerations { pub value: Option, } -/// PersistentVolumeClaim is a user's request for and claim to a persistent volume #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ComponentInstancesVolumeClaimTemplates { - /// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] - pub api_version: Option, - /// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - #[serde(default, skip_serializing_if = "Option::is_none")] - pub kind: Option, - /// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - #[serde(default, skip_serializing_if = "Option::is_none")] - pub metadata: Option, - /// spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + /// Refers to the name of a volumeMount defined in either: + /// - `componentDefinition.spec.runtime.containers[*].volumeMounts` - `clusterDefinition.spec.componentDefs[*].podSpec.containers[*].volumeMounts` (deprecated) + /// The value of `name` must match the `name` field of a volumeMount specified in the corresponding `volumeMounts` array. + pub name: String, + /// Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. + /// When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field. #[serde(default, skip_serializing_if = "Option::is_none")] pub spec: Option, - /// status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option, -} - -/// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct ComponentInstancesVolumeClaimTemplatesMetadata { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub annotations: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub finalizers: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, } -/// spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims +/// Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. +/// When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ComponentInstancesVolumeClaimTemplatesSpec { - /// accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + /// Contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] pub access_modes: Option>, - /// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] - pub data_source: Option, - /// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] - pub data_source_ref: Option, - /// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + /// Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, - /// selector is a label query over volumes to consider for binding. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub selector: Option, - /// storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + /// The name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] pub storage_class_name: Option, - /// volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + /// Defines what type of volume is required by the claim, either Block or Filesystem. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] pub volume_mode: Option, - /// volumeName is the binding reference to the PersistentVolume backing this claim. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] - pub volume_name: Option, } -/// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct ComponentInstancesVolumeClaimTemplatesSpecDataSource { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, -} - -/// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct ComponentInstancesVolumeClaimTemplatesSpecDataSourceRef { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, - /// Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, -} - -/// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources +/// Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ComponentInstancesVolumeClaimTemplatesSpecResources { /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. @@ -495,58 +434,6 @@ pub struct ComponentInstancesVolumeClaimTemplatesSpecResourcesClaims { pub name: String, } -/// selector is a label query over volumes to consider for binding. -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct ComponentInstancesVolumeClaimTemplatesSpecSelector { - /// matchExpressions is a list of label selector requirements. The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] - pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] - pub match_labels: Option>, -} - -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct ComponentInstancesVolumeClaimTemplatesSpecSelectorMatchExpressions { - /// key is the label key that the selector applies to. - pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub values: Option>, -} - -/// status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct ComponentInstancesVolumeClaimTemplatesStatus { - /// accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] - pub access_modes: Option>, - /// allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. - /// ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed" When this field is not set, it means that no resize operation is in progress for the given PVC. - /// A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. - /// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocatedResourceStatuses")] - pub allocated_resource_statuses: Option>, - /// allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. - /// Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. - /// A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. - /// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocatedResources")] - pub allocated_resources: Option>, - /// capacity represents the actual resources of the underlying volume. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub capacity: Option>, - /// conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub conditions: Option>, - /// phase represents the current phase of PersistentVolumeClaim. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub phase: Option, -} - /// VolumeMount describes a mounting of a Volume within a container. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ComponentInstancesVolumeMounts { @@ -2088,7 +1975,7 @@ pub struct ComponentServiceRefs { /// By default, the referenced KubeBlocks Cluster's `clusterDefinition.spec.connectionCredential` will be utilized to bind to the current Component. This credential should include: `endpoint`, `port`, `username`, and `password`. /// Note: /// - The `ServiceKind` and `ServiceVersion` specified in the service reference within the ClusterDefinition are not validated when using this approach. - If both `cluster` and `serviceDescriptor` are present, `cluster` will take precedence. - /// Deprecated since v0.9 since `clusterDefinition.spec.connectionCredential` is deprecated, use `clusterRef` instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases. + /// Deprecated since v0.9 since `clusterDefinition.spec.connectionCredential` is deprecated, use `clusterServiceSelector` instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases. #[serde(default, skip_serializing_if = "Option::is_none")] pub cluster: Option, /// ClusterRef is used to reference a service provided by another KubeBlocks Cluster. It specifies the ClusterService and the account credentials needed for access. @@ -2159,10 +2046,9 @@ pub struct ComponentServices { /// Name defines the name of the service. otherwise, it indicates the name of the service. Others can refer to this service by its name. (e.g., connection credential) Cannot be updated. pub name: String, /// Indicates whether to create a corresponding Service for each Pod of the selected Component. When set to true, a set of Services will be automatically generated for each Pod, and the `roleSelector` field will be ignored. - /// The names of the generated Services will follow the same naming pattern: `$(serviceName)-$(podOrdinal)`. - /// The podOrdinal is zero-based, meaning it starts from 0 for the first Pod and increments for each subsequent Pod. The total number of generated Services will be equal to the number of replicas specified for the Component. + /// The names of the generated Services will follow the same suffix naming pattern: `$(serviceName)-$(podOrdinal)`. The total number of generated Services will be equal to the number of replicas specified for the Component. /// Example usage: - /// ```yaml name: my-service serviceName: my-service generatePodOrdinalService: true spec: type: NodePort ports: - name: http port: 80 targetPort: 8080 ``` + /// ```yaml name: my-service serviceName: my-service podService: true disableAutoProvision: true spec: type: NodePort ports: - name: http port: 80 targetPort: 8080 ``` /// In this example, if the Component has 3 replicas, three Services will be generated: - my-service-0: Points to the first Pod (podOrdinal: 0) - my-service-1: Points to the second Pod (podOrdinal: 1) - my-service-2: Points to the third Pod (podOrdinal: 2) /// Each generated Service will have the specified spec configuration and will target its respective Pod. /// This feature is useful when you need to expose each Pod of a Component individually, allowing external access to specific instances of the Component. @@ -2171,7 +2057,7 @@ pub struct ComponentServices { /// Extends the above `serviceSpec.selector` by allowing you to specify defined role as selector for the service. When `roleSelector` is set, it adds a label selector "kubeblocks.io/role: {roleSelector}" to the `serviceSpec.selector`. Example usage: /// roleSelector: "leader" /// In this example, setting `roleSelector` to "leader" will add a label selector "kubeblocks.io/role: leader" to the `serviceSpec.selector`. This means that the service will select and route traffic to Pods with the label "kubeblocks.io/role" set to "leader". - /// Note that if `generatePodOrdinalService` sets to true, RoleSelector will be ignored. The `generatePodOrdinalService` flag takes precedence over `roleSelector` and generates a service for each Pod. + /// Note that if `podService` sets to true, RoleSelector will be ignored. The `podService` flag takes precedence over `roleSelector` and generates a service for each Pod. #[serde(default, skip_serializing_if = "Option::is_none", rename = "roleSelector")] pub role_selector: Option, /// ServiceName defines the name of the underlying service object. If not specified, the default service name with different patterns will be used: diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/configconstraints.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/configconstraints.rs index 9a8078260..25bcc7e68 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/configconstraints.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/configconstraints.rs @@ -388,8 +388,16 @@ pub struct ConfigConstraintToolsImageSpec { /// ToolConfig specifies the settings of an init container that prepare tools for dynamic reload. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ConfigConstraintToolsImageSpecToolConfigs { + /// Indicates whether the tool image should be used as the container image for a sidecar. This is useful for large tool images, such as those for C++ tools, which may depend on numerous libraries (e.g., *.so files). + /// If enabled, the tool image is deployed as a sidecar container image. + /// Examples: ```yaml reloadToolsImage: mountPoint: /kb_tools toolConfigs: - name: kb-tools asContainerImage: true image: apecloud/oceanbase:4.2.0.0-100010032023083021 ``` + /// generated containers: ```yaml initContainers: - name: install-config-manager-tool image: apecloud/kubeblocks-tools:${version} command: - cp - /bin/config_render - /opt/tools volumemounts: - name: kb-tools mountpath: /opt/tools + /// containers: - name: config-manager image: apecloud/oceanbase:4.2.0.0-100010032023083021 imagePullPolicy: IfNotPresent command: - /opt/tools/reloader - --log-level - info - --operator-update-enable - --tcp - "9901" - --config - /opt/config-manager/config-manager.yaml volumemounts: - name: kb-tools mountpath: /opt/tools ``` + #[serde(default, skip_serializing_if = "Option::is_none", rename = "asContainerImage")] + pub as_container_image: Option, /// Specifies the command to be executed by the init container. - pub command: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, /// Specifies the tool container image. #[serde(default, skip_serializing_if = "Option::is_none")] pub image: Option, diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/configurations.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/configurations.rs index 9ac59b34d..e0e041393 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/configurations.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/configurations.rs @@ -207,7 +207,8 @@ pub struct ConfigurationStatusConfigurationStatus { pub message: Option, /// Specifies the name of the configuration template. It is a required field and must be a string of maximum 63 characters. The name should only contain lowercase alphanumeric characters, hyphens, or periods. It should start and end with an alphanumeric character. pub name: String, - /// Indicates the current status of the configuration item. This field is optional. + /// Indicates the current status of the configuration item. + /// Possible values include "Creating", "Init", "Running", "Pending", "Merged", "MergeFailed", "FailedAndPause", "Upgrading", "Deleting", "FailedAndRetry", "Finished". #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, /// Provides detailed information about the execution of the configuration change. This field is optional. diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/opsdefinitions.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/opsdefinitions.rs index b0b8a3d61..be6fdc4b8 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/opsdefinitions.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/opsdefinitions.rs @@ -7,79 +7,89 @@ use serde::{Serialize, Deserialize}; use std::collections::BTreeMap; use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString; -/// OpsDefinitionSpec defines the desired state of OpsDefinition +/// OpsDefinitionSpec defines the desired state of OpsDefinition. #[derive(CustomResource, Serialize, Deserialize, Clone, Debug, PartialEq)] #[kube(group = "apps.kubeblocks.io", version = "v1alpha1", kind = "OpsDefinition", plural = "opsdefinitions")] #[kube(status = "OpsDefinitionStatus")] #[kube(schema = "disabled")] pub struct OpsDefinitionSpec { - /// The actions to be executed in the opsRequest are performed sequentially. + /// Specifies a list of OpsAction where each customized action is executed sequentially. pub actions: Vec, - /// Specifies the types of componentDefinitions supported by the operation. It can reference certain variables of the componentDefinition. If set, any component not meeting these conditions will be intercepted. + /// Specifies a list of ComponentDefinition for Components associated with this OpsDefinition. It also includes connection credentials (address and account) for each Component. #[serde(default, skip_serializing_if = "Option::is_none", rename = "componentDefinitionRefs")] pub component_definition_refs: Option>, - /// Describes the schema used for validation, pruning, and defaulting. + /// Specifies the schema for validating the data types and value ranges of parameters in OpsActions before their usage. #[serde(default, skip_serializing_if = "Option::is_none", rename = "parametersSchema")] pub parameters_schema: Option, - /// Specifies the preconditions that must be met to run the actions for the operation. if set, it will check the condition before the component run this operation. + /// Specifies the preconditions that must be met to run the actions for the operation. if set, it will check the condition before the Component runs this operation. Example: ```yaml preConditions: - rule: expression: '{{ eq .component.status.phase "Running" }}' message: Component is not in Running status. ``` #[serde(default, skip_serializing_if = "Option::is_none", rename = "preConditions")] pub pre_conditions: Option>, - /// Defines the targetPodTemplate to be referenced by the action. + /// Specifies a list of TargetPodTemplate, each designed to select a specific Pod and extract selected runtime info from its PodSpec. The extracted information, such as environment variables, volumes and tolerations, are then injected into Jobs or Pods that execute the OpsActions defined in `actions`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPodTemplates")] pub target_pod_templates: Option>, } +/// OpsAction specifies a custom action defined in OpsDefinition for execution in a "Custom" OpsRequest. +/// OpsAction can be of three types: +/// - workload: Creates a Job or Pod to run custom scripts, ideal for isolated or long-running tasks. - exec: Executes commands directly within an existing container using the kubectl exec interface, suitable for immediate, short-lived operations. - resourceModifier: Modifies a K8s object using JSON patches, useful for updating the spec of some resource. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionActions { - /// Represents the exec action. This will call the kubectl exec interface. + /// Specifies the configuration for a 'exec' action. It creates a Pod and invokes a 'kubectl exec' to run command inside a specified container with the target Pod. #[serde(default, skip_serializing_if = "Option::is_none")] pub exec: Option, - /// failurePolicy is the failure policy of the action. valid values Fail and Ignore. - Fail: if the action failed, the opsRequest will be failed. - Ignore: opsRequest will ignore the failure if the action is failed. + /// Specifies the failure policy of the OpsAction. Valid values are: + /// - "Fail": Marks the entire OpsRequest as failed if the action fails. - "Ignore": The OpsRequest continues processing despite the failure of the action. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failurePolicy")] pub failure_policy: Option, - /// action name. + /// Specifies the name of the OpsAction. pub name: String, - /// Refers to the parameter of the ParametersSchema. The parameter will be used in the action. If it is a 'workload' and 'exec' Action, they will be injected into the corresponding environment variable. If it is a 'resourceModifier' Action, parameter can be referenced using $() in completionProbe.matchExpressions and JsonPatches[*].Value. + /// Specifies the parameters for the OpsAction. Their usage varies based on the action type: + /// - For 'workload' or 'exec' actions, parameters are injected as environment variables. - For 'resourceModifier' actions, parameter can be referenced using $() in fields `resourceModifier.completionProbe.matchExpressions` and `resourceModifier.jsonPatches[*].value`. #[serde(default, skip_serializing_if = "Option::is_none")] pub parameters: Option>, - /// Specifies the resource modifier to update the custom resource. + /// Specifies the configuration for a 'resourceModifier' action. This action allows for modifications to existing K8s objects. + /// Note: This feature has not been implemented yet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceModifier")] pub resource_modifier: Option, - /// Indicates the workload action and a corresponding workload will be created to execute this action. + /// Specifies the configuration for a 'workload' action. This action leads to the creation of a K8s workload, such as a Pod or Job, to execute specified tasks. #[serde(default, skip_serializing_if = "Option::is_none")] pub workload: Option, } -/// Represents the exec action. This will call the kubectl exec interface. +/// Specifies the configuration for a 'exec' action. It creates a Pod and invokes a 'kubectl exec' to run command inside a specified container with the target Pod. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionActionsExec { - /// Specifies the number of retries before marking the action as failed. + /// Specifies the number of retries allowed before marking the action as failed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backoffLimit")] pub backoff_limit: Option, - /// The command to execute. + /// The command to be executed via 'kubectl exec --'. pub command: Vec, - /// The name of the container in the target pod to execute the command. If not set, the first container is used. + /// The name of the container in the target pod where the command should be executed. This corresponds to the `-c {containerName}` option in `kubectl exec`. + /// If not set, the first container is used. #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] pub container_name: Option, - /// Refers to the spec.targetPodTemplates. Defines the target pods that need to execute exec actions. + /// Specifies a TargetPodTemplate defined in the `opsDefinition.spec.targetPodTemplates`. #[serde(rename = "targetPodTemplate")] pub target_pod_template: String, } -/// Specifies the resource modifier to update the custom resource. +/// Specifies the configuration for a 'resourceModifier' action. This action allows for modifications to existing K8s objects. +/// Note: This feature has not been implemented yet. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionActionsResourceModifier { - /// Provides a method to check if the action has been completed. + /// Specifies a method to determine if the action has been completed. + /// Note: This feature has not been implemented yet. #[serde(rename = "completionProbe")] pub completion_probe: OpsDefinitionActionsResourceModifierCompletionProbe, - /// Defines the set of patches that are used to perform updates on the resource object. + /// Specifies a list of patches for modifying the object. #[serde(rename = "jsonPatches")] pub json_patches: Vec, - /// Refers to the Kubernetes objects that are required to be updated. + /// Specifies the K8s object that is to be updated. pub resource: OpsDefinitionActionsResourceModifierResource, } -/// Provides a method to check if the action has been completed. +/// Specifies a method to determine if the action has been completed. +/// Note: This feature has not been implemented yet. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionActionsResourceModifierCompletionProbe { /// Specifies the number of seconds to wait after the resource has been patched before initiating completion probes. The default value is 5 seconds, with a minimum value of 1. @@ -88,10 +98,10 @@ pub struct OpsDefinitionActionsResourceModifierCompletionProbe { /// Executes expressions regularly, based on the value of PeriodSeconds, to determine if the action has been completed. #[serde(rename = "matchExpressions")] pub match_expressions: OpsDefinitionActionsResourceModifierCompletionProbeMatchExpressions, - /// Indicates the frequency (in seconds) at which the probe should be performed. The default value is 5 seconds, with a minimum value of 1. + /// Specifies the frequency (in seconds) at which the probe should be performed. The default value is 5 seconds, with a minimum value of 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] pub period_seconds: Option, - /// Defines the number of seconds after which the probe times out. The default value is 60 seconds, with a minimum value of 1. + /// Specifies the number of seconds after which the probe times out. The default value is 60 seconds, with a minimum value of 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] pub timeout_seconds: Option, } @@ -99,20 +109,20 @@ pub struct OpsDefinitionActionsResourceModifierCompletionProbe { /// Executes expressions regularly, based on the value of PeriodSeconds, to determine if the action has been completed. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionActionsResourceModifierCompletionProbeMatchExpressions { - /// Defines a failure condition for an action using a Go template expression. Should evaluate to either `true` or `false`. The current resource object is parsed into the Go template. for example, you can use '{{ eq .spec.replicas 1 }}'. + /// Specifies a failure condition for an action using a Go template expression. Should evaluate to either `true` or `false`. The current resource object is parsed into the Go template. for example, you can use '{{ eq .spec.replicas 1 }}'. #[serde(default, skip_serializing_if = "Option::is_none")] pub failure: Option, - /// Defines a success condition for an action using a Go template expression. Should evaluate to either `true` or `false`. The current resource object is parsed into the Go template. for example, using '{{ eq .spec.replicas 1 }}' + /// Specifies a success condition for an action using a Go template expression. Should evaluate to either `true` or `false`. The current resource object is parsed into the Go template. for example, using '{{ eq .spec.replicas 1 }}' pub success: String, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionActionsResourceModifierJsonPatches { - /// Represents the type of JSON patch operation. It supports the following values: 'add', 'remove', 'replace'. + /// Specifies the type of JSON patch operation. It supports the following values: 'add', 'remove', 'replace'. pub op: OpsDefinitionActionsResourceModifierJsonPatchesOp, - /// Represents the json patch path. + /// Specifies the json patch path. pub path: String, - /// Represents the value to be used in the JSON patch operation. + /// Specifies the value to be used in the JSON patch operation. pub value: String, } @@ -126,10 +136,10 @@ pub enum OpsDefinitionActionsResourceModifierJsonPatchesOp { Replace, } -/// Refers to the Kubernetes objects that are required to be updated. +/// Specifies the K8s object that is to be updated. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionActionsResourceModifierResource { - /// Defines the group for the resource being referenced. If not specified, the referenced Kind must belong to the core API group. For all third-party types, this is mandatory. + /// Specifies the group for the resource being referenced. If not specified, the referenced Kind must belong to the core API group. For all third-party types, this is mandatory. #[serde(rename = "apiGroup")] pub api_group: String, /// Specifies the type of resource being referenced. @@ -138,24 +148,25 @@ pub struct OpsDefinitionActionsResourceModifierResource { pub name: String, } -/// Indicates the workload action and a corresponding workload will be created to execute this action. +/// Specifies the configuration for a 'workload' action. This action leads to the creation of a K8s workload, such as a Pod or Job, to execute specified tasks. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionActionsWorkload { - /// Specifies the number of retries before marking the action as failed. + /// Specifies the number of retries allowed before marking the action as failed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backoffLimit")] pub backoff_limit: Option, - /// Represents the pod spec of the workload. + /// Specifies the PodSpec of the 'workload' action. #[serde(rename = "podSpec")] pub pod_spec: OpsDefinitionActionsWorkloadPodSpec, - /// Refers to the spec.targetPodTemplates. This field defines the target pod for the current action. + /// Specifies a TargetPodTemplate defined in the `opsDefinition.spec.targetPodTemplates`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPodTemplate")] pub target_pod_template: Option, - /// Defines the workload type of the action. Valid values include "Job" and "Pod". "Job" creates a job to execute the action. "Pod" creates a pod to execute the action. Note that unlike jobs, if a pod is manually deleted, it will not consume backoffLimit times. + /// Defines the workload type of the action. Valid values include "Job" and "Pod". + /// - "Job": Creates a Job to execute the action. - "Pod": Creates a Pod to execute the action. Note: unlike Jobs, manually deleting a Pod does not affect the `backoffLimit`. #[serde(rename = "type")] pub r#type: OpsDefinitionActionsWorkloadType, } -/// Represents the pod spec of the workload. +/// Specifies the PodSpec of the 'workload' action. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionActionsWorkloadPodSpec { /// Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer. @@ -4276,7 +4287,7 @@ pub struct OpsDefinitionActionsWorkloadPodSpecVolumesVsphereVolume { pub volume_path: String, } -/// Indicates the workload action and a corresponding workload will be created to execute this action. +/// Specifies the configuration for a 'workload' action. This action leads to the creation of a K8s workload, such as a Pod or Job, to execute specified tasks. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum OpsDefinitionActionsWorkloadType { Job, @@ -4285,62 +4296,63 @@ pub enum OpsDefinitionActionsWorkloadType { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionComponentDefinitionRefs { - /// Represents the account name of the component. If provided, the account username and password will be injected into the job environment variables `KB_ACCOUNT_USERNAME` and `KB_ACCOUNT_PASSWORD`. + /// Specifies the account name associated with the Component. If set, the corresponding account username and password are injected into containers' environment variables `KB_ACCOUNT_USERNAME` and `KB_ACCOUNT_PASSWORD`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "accountName")] pub account_name: Option, - /// Refers to the name of the component definition. This is a required field with a maximum length of 32 characters. + /// Specifies the name of the ComponentDefinition. pub name: String, - /// References the name of the service. If provided, the service name and ports will be mapped to the job environment variables `KB_COMP_SVC_NAME` and `KB_COMP_SVC_PORT_$(portName)`. Note that the portName will replace the characters '-' with '_' and convert to uppercase. + /// Specifies the name of the Service. If set, the service name is injected as the `KB_COMP_SVC_NAME` environment variable in the containers, and each service port is mapped to a corresponding environment variable named `KB_COMP_SVC_PORT_$(portName)`. The `portName` is transformed by replacing '-' with '_' and converting to uppercase. #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceName")] pub service_name: Option, } -/// Describes the schema used for validation, pruning, and defaulting. +/// Specifies the schema for validating the data types and value ranges of parameters in OpsActions before their usage. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionParametersSchema { - /// Defines the OpenAPI v3 schema used for the parameter schema. The supported property types include: - string - number - integer - array: Note that only items of string type are supported. + /// Defines the schema for parameters using the OpenAPI v3. The supported property types include: - string - number - integer - array: Note that only items of string type are supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "openAPIV3Schema")] pub open_apiv3_schema: Option>, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionPreConditions { - /// Defines the conditions under which the operation can be executed. + /// Specifies the conditions that must be met for the operation to execute. #[serde(default, skip_serializing_if = "Option::is_none")] pub rule: Option, } -/// Defines the conditions under which the operation can be executed. +/// Specifies the conditions that must be met for the operation to execute. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionPreConditionsRule { - /// Defines how the operation can be executed using a Go template expression. Should return either `true` or `false`. The built-in objects available for use in the expression include: - `params`: These are the input parameters. - `cluster`: This is the referenced cluster object. - `component`: This is the referenced component object. + /// Specifies a Go template expression that determines how the operation can be executed. The return value must be either `true` or `false`. Available built-in objects that can be referenced in the expression include: + /// - `params`: Input parameters. - `cluster`: The referenced Cluster object. - `component`: The referenced Component object. pub expression: String, - /// Reported if the rule is not matched. + /// Specifies the error or status message reported if the `expression` does not evaluate to `true`. pub message: String, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionTargetPodTemplates { - /// Represents the template name. + /// Specifies the name of the TargetPodTemplate. pub name: String, - /// Used to identify the target pod. + /// Used to select the target Pod from which environment variables and volumes are extracted from its PodSpec. #[serde(rename = "podSelector")] pub pod_selector: OpsDefinitionTargetPodTemplatesPodSelector, - /// Defines the environment variables that need to be referenced from the target component pod, and will be injected into the pod's containers. + /// Specifies a list of environment variables to be extracted from a selected Pod, and injected into the containers executing each OpsAction. #[serde(default, skip_serializing_if = "Option::is_none")] pub vars: Option>, - /// Specifies the mount points for the volumes defined in the `Volumes` section for the action pod. + /// Specifies a list of volumes, along with their respective mount points, that are to be extracted from a selected Pod, and mounted onto the containers executing each OpsAction. This allows the containers to access shared or persistent data necessary for the operation. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] pub volume_mounts: Option>, } -/// Used to identify the target pod. +/// Used to select the target Pod from which environment variables and volumes are extracted from its PodSpec. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionTargetPodTemplatesPodSelector { - /// Indicates the desired availability status of the pods to be selected. valid values: - 'Available': selects only available pods and terminates the action if none are found. - 'PreferredAvailable': prioritizes the selection of available pods。 - 'None': there are no requirements for the availability of pods. + /// Specifies the pod selection criteria based on their availability: - 'Available': Only selects available pods, and terminates the action if none are found. - 'PreferredAvailable': Prioritizes available pods but considers others if none available. - 'None': No availability requirements. #[serde(default, skip_serializing_if = "Option::is_none")] pub availability: Option, - /// Specifies the role of the target pod. + /// Specifies the role of the target Pod. #[serde(default, skip_serializing_if = "Option::is_none")] pub role: Option, /// Defines the policy for selecting the target pod when multiple pods match the podSelector. It can be either 'Any' (select any one pod that matches the podSelector) or 'All' (select all pods that match the podSelector). @@ -4348,7 +4360,7 @@ pub struct OpsDefinitionTargetPodTemplatesPodSelector { pub selection_policy: Option, } -/// Used to identify the target pod. +/// Used to select the target Pod from which environment variables and volumes are extracted from its PodSpec. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum OpsDefinitionTargetPodTemplatesPodSelectorAvailability { Available, @@ -4356,7 +4368,7 @@ pub enum OpsDefinitionTargetPodTemplatesPodSelectorAvailability { None, } -/// Used to identify the target pod. +/// Used to select the target Pod from which environment variables and volumes are extracted from its PodSpec. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum OpsDefinitionTargetPodTemplatesPodSelectorSelectionPolicy { All, @@ -4365,20 +4377,20 @@ pub enum OpsDefinitionTargetPodTemplatesPodSelectorSelectionPolicy { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionTargetPodTemplatesVars { - /// Specifies the name of the variable. This must be a C_IDENTIFIER. + /// Specifies the name of the environment variable to be injected into Pods executing OpsActions. It must conform to the C_IDENTIFIER format, which includes only alphanumeric characters and underscores, and cannot begin with a digit. pub name: String, - /// Defines the source for the variable's value. + /// Specifies the source of the environment variable's value. #[serde(rename = "valueFrom")] pub value_from: OpsDefinitionTargetPodTemplatesVarsValueFrom, } -/// Defines the source for the variable's value. +/// Specifies the source of the environment variable's value. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionTargetPodTemplatesVarsValueFrom { /// Specifies a reference to a specific environment variable within a container. Used to specify the source of the variable, which can be either "env" or "envFrom". #[serde(default, skip_serializing_if = "Option::is_none", rename = "envRef")] pub env_ref: Option, - /// Represents the JSONPath of the target pod. This is used to specify the exact location of the data within the JSON structure of the pod. + /// Represents the JSONPath expression pointing to the specific data within the JSON structure of the target Pod. It is used to extract precise data locations for operations on the Pod. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldPath")] pub field_path: Option, } @@ -4386,10 +4398,10 @@ pub struct OpsDefinitionTargetPodTemplatesVarsValueFrom { /// Specifies a reference to a specific environment variable within a container. Used to specify the source of the variable, which can be either "env" or "envFrom". #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsDefinitionTargetPodTemplatesVarsValueFromEnvRef { - /// Specifies the name of the container as defined in the componentDefinition or as injected by the kubeBlocks controller. If not specified, the first container will be used by default. + /// Specifies the container name in the target Pod. If not specified, the first container will be used by default. #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] pub container_name: Option, - /// Defines the name of the environment variable. + /// Defines the name of the environment variable. This name can originate from an 'env' entry or be a data key from an 'envFrom' source. #[serde(rename = "envName")] pub env_name: String, } @@ -4422,10 +4434,10 @@ pub struct OpsDefinitionStatus { /// Provides additional information about the current phase. #[serde(default, skip_serializing_if = "Option::is_none")] pub message: Option, - /// Refers to the most recent generation observed for this OpsDefinition. + /// Represents the most recent generation observed of this OpsDefinition. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Represents the current state of the OpsDefinition. Valid values are ``, `Available`, `Unavailable`. When the state is `Available`, the OpsDefinition is ready and can be used for related objects. + /// Represents the current state of the OpsDefinition. Valid values are "", "Available", "Unavailable". When it equals to "Available", the OpsDefinition is ready and can be used in a "Custom" OpsRequest. #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, } diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/opsrequests.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/opsrequests.rs index 337bb55de..780e7a09f 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/opsrequests.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/opsrequests.rs @@ -15,123 +15,138 @@ use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition; #[kube(status = "OpsRequestStatus")] #[kube(schema = "disabled")] pub struct OpsRequestSpec { - /// Defines how to backup the cluster. + /// Specifies the parameters to backup a Cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backupSpec")] pub backup_spec: Option, - /// Defines the action to cancel the `Pending/Creating/Running` opsRequest, supported types: `VerticalScaling/HorizontalScaling`. Once set to true, this opsRequest will be canceled and modifying this property again will not take effect. + /// Indicates whether the current operation should be canceled and terminated gracefully if it's in the "Pending", "Creating", or "Running" state. + /// This field applies only to "VerticalScaling" and "HorizontalScaling" opsRequests. + /// Note: Setting `cancel` to true is irreversible; further modifications to this field are ineffective. #[serde(default, skip_serializing_if = "Option::is_none")] pub cancel: Option, - /// References the cluster object. + /// Specifies the name of the Cluster resource that this operation is targeting. #[serde(rename = "clusterRef")] pub cluster_ref: String, - /// Specifies a custom operation as defined by OpsDefinition. + /// Specifies a custom operation defined by OpsDefinition. #[serde(default, skip_serializing_if = "Option::is_none", rename = "customSpec")] pub custom_spec: Option, - /// Defines services the component needs to expose. + /// Lists Expose objects, each specifying a Component and its services to be exposed. #[serde(default, skip_serializing_if = "Option::is_none")] pub expose: Option>, - /// Indicates if pre-checks should be bypassed, allowing the opsRequest to execute immediately. If set to true, pre-checks are skipped except for 'Start' type. Particularly useful when concurrent execution of VerticalScaling and HorizontalScaling opsRequests is required, achievable through the use of the Force flag. + /// Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true. + /// This is useful for concurrent execution of 'VerticalScaling' and 'HorizontalScaling' opsRequests. By setting `force` to true, you can bypass the default checks and demand these opsRequests to run simultaneously. + /// Note: Once set, the `force` field is immutable and cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none")] pub force: Option, - /// Defines what component need to horizontal scale the specified replicas. + /// Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options. #[serde(default, skip_serializing_if = "Option::is_none", rename = "horizontalScaling")] pub horizontal_scaling: Option>, - /// Specifies the instances that require re-creation. + /// Specifies the parameters to rebuild some instances. Rebuilding an instance involves restoring its data from a backup or another database replica. The instances being rebuilt usually serve as standby in the cluster. Hence rebuilding instances is often also referred to as "standby reconstruction". #[serde(default, skip_serializing_if = "Option::is_none", rename = "rebuildFrom")] pub rebuild_from: Option>, - /// Deprecated: replace by reconfigures. Defines the variables that need to input when updating configuration. + /// Specifies a component and its configuration updates. + /// This field is deprecated and replaced by `reconfigures`. #[serde(default, skip_serializing_if = "Option::is_none")] pub reconfigure: Option, - /// Defines the variables that need to input when updating configuration. + /// Lists Reconfigure objects, each specifying a Component and its configuration updates. #[serde(default, skip_serializing_if = "Option::is_none")] pub reconfigures: Option>, - /// Restarts the specified components. + /// Lists Components to be restarted. #[serde(default, skip_serializing_if = "Option::is_none")] pub restart: Option>, /// Cluster RestoreFrom backup or point in time. #[serde(default, skip_serializing_if = "Option::is_none", rename = "restoreFrom")] pub restore_from: Option, - /// Defines how to restore the cluster. Note that this restore operation will roll back cluster services. + /// Specifies the parameters to restore a Cluster. Note that this restore operation will roll back cluster services. #[serde(default, skip_serializing_if = "Option::is_none", rename = "restoreSpec")] pub restore_spec: Option, - /// Defines the script to be executed. + /// Specifies the image and scripts for executing engine-specific operations such as creating databases or users. It supports limited engines including MySQL, PostgreSQL, Redis, MongoDB. + /// ScriptSpec has been replaced by the more versatile OpsDefinition. It is recommended to use OpsDefinition instead. ScriptSpec is deprecated and will be removed in a future version. #[serde(default, skip_serializing_if = "Option::is_none", rename = "scriptSpec")] pub script_spec: Option, - /// Switches over the specified components. + /// Lists Switchover objects, each specifying a Component to perform the switchover operation. #[serde(default, skip_serializing_if = "Option::is_none")] pub switchover: Option>, - /// OpsRequest will be deleted after TTLSecondsAfterSucceed second when OpsRequest.status.phase is Succeed. + /// Specifies the duration in seconds that an OpsRequest will remain in the system after successfully completing (when `opsRequest.status.phase` is "Succeed") before automatic deletion. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ttlSecondsAfterSucceed")] pub ttl_seconds_after_succeed: Option, - /// OpsRequest will wait at most TTLSecondsBeforeAbort seconds for start-conditions to be met. If not specified, the default value is 0, which means that the start-conditions must be met immediately. + /// Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ttlSecondsBeforeAbort")] pub ttl_seconds_before_abort: Option, - /// Defines the operation type. + /// Specifies the type of this operation. Supported types include "Start", "Stop", "Restart", "Switchover", "VerticalScaling", "HorizontalScaling", "VolumeExpansion", "Reconfiguring", "Upgrade", "Backup", "Restore", "Expose", "DataScript", "RebuildInstance", "Custom". + /// Note: This field is immutable once set. #[serde(rename = "type")] pub r#type: OpsRequestType, - /// Specifies the cluster version by specifying clusterVersionRef. + /// Specifies the desired new version of the Cluster. + /// Note: This field is immutable once set. #[serde(default, skip_serializing_if = "Option::is_none")] pub upgrade: Option, - /// Note: Quantity struct can not do immutable check by CEL. Defines what component need to vertical scale the specified compute resources. + /// Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling. #[serde(default, skip_serializing_if = "Option::is_none", rename = "verticalScaling")] pub vertical_scaling: Option>, - /// Note: Quantity struct can not do immutable check by CEL. Defines what component and volumeClaimTemplate need to expand the specified storage. + /// Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeExpansion")] pub volume_expansion: Option>, } -/// Defines how to backup the cluster. +/// Specifies the parameters to backup a Cluster. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestBackupSpec { - /// Defines the backup method that is defined in backupPolicy. + /// Specifies the name of BackupMethod. The specified BackupMethod must be defined in the BackupPolicy. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backupMethod")] pub backup_method: Option, - /// Specifies the name of the backup. + /// Specifies the name of the Backup custom resource. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backupName")] pub backup_name: Option, - /// Indicates the backupPolicy applied to perform this backup. + /// Indicates the name of the BackupPolicy applied to perform this Backup. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backupPolicyName")] pub backup_policy_name: Option, - /// Determines whether the backup contents stored in backup repository should be deleted when the backup custom resource is deleted. Supported values are `Retain` and `Delete`. - `Retain` means that the backup content and its physical snapshot on backup repository are kept. - `Delete` means that the backup content and its physical snapshot on backup repository are deleted. + /// Determines whether the backup contents stored in backup repository should be deleted when the Backup custom resource is deleted. Supported values are `Retain` and `Delete`. - `Retain` means that the backup content and its physical snapshot on backup repository are kept. - `Delete` means that the backup content and its physical snapshot on backup repository are deleted. #[serde(default, skip_serializing_if = "Option::is_none", rename = "deletionPolicy")] pub deletion_policy: Option, - /// If backupType is incremental, parentBackupName is required. + /// If the specified BackupMethod is incremental, `parentBackupName` is required. #[serde(default, skip_serializing_if = "Option::is_none", rename = "parentBackupName")] pub parent_backup_name: Option, - /// Determines a duration up to which the backup should be kept. Controller will remove all backups that are older than the RetentionPeriod. For example, RetentionPeriod of `30d` will keep only the backups of last 30 days. Sample duration format: + /// Determines the duration for which the Backup custom resources should be retained. + /// The controller will automatically remove all Backup objects that are older than the specified RetentionPeriod. For example, RetentionPeriod of `30d` will keep only the Backup objects of last 30 days. Sample duration format: /// - years: 2y - months: 6mo - days: 30d - hours: 12h - minutes: 30m - /// You can also combine the above durations. For example: 30d12h30m. If not set, the backup will be kept forever. + /// You can also combine the above durations. For example: 30d12h30m. If not set, the Backup objects will be kept forever. + /// If the `deletionPolicy` is set to 'Delete', then the associated backup data will also be deleted along with the Backup object. Otherwise, only the Backup custom resource will be deleted. #[serde(default, skip_serializing_if = "Option::is_none", rename = "retentionPeriod")] pub retention_period: Option, } -/// Defines how to backup the cluster. +/// Specifies the parameters to backup a Cluster. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum OpsRequestBackupSpecDeletionPolicy { Delete, Retain, } -/// Specifies a custom operation as defined by OpsDefinition. +/// Specifies a custom operation defined by OpsDefinition. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestCustomSpec { - /// Defines which components need to perform the actions defined by this OpsDefinition. At least one component is required. The components are identified by their name and can be merged or retained. + /// Specifies the components and their parameters for executing custom actions as defined in OpsDefinition. Requires at least one component. pub components: Vec, - /// Is a reference to an OpsDefinition. + /// Specifies the name of the OpsDefinition. #[serde(rename = "opsDefinitionRef")] pub ops_definition_ref: String, - /// Defines the execution concurrency. By default, all incoming Components will be executed simultaneously. The value can be an absolute number (e.g., 5) or a percentage of desired components (e.g., 10%). The absolute number is calculated from the percentage by rounding up. For instance, if the percentage value is 10% and the components length is 1, the calculated number will be rounded up to 1. + /// Specifies the maximum number of components to be operated on concurrently to mitigate performance impact on clusters with multiple components. + /// It accepts an absolute number (e.g., 5) or a percentage of components to execute in parallel (e.g., "10%"). Percentages are rounded up to the nearest whole number of components. For example, if "10%" results in less than one, it rounds up to 1. + /// When unspecified, all components are processed simultaneously by default. + /// Note: This feature is not implemented yet. #[serde(default, skip_serializing_if = "Option::is_none")] pub parallelism: Option, + /// Specifies the name of the ServiceAccount to be used for executing the custom operation. #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountName")] pub service_account_name: Option, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestCustomSpecComponents { - /// Specifies the unique identifier of the cluster component - pub name: String, - /// Represents the parameters for this operation as declared in the opsDefinition.spec.parametersSchema. + /// Specifies the name of the Component. + #[serde(rename = "componentName")] + pub component_name: String, + /// Specifies the parameters that match the schema specified in the `opsDefinition.spec.parametersSchema`. #[serde(default, skip_serializing_if = "Option::is_none")] pub parameters: Option>, } @@ -146,39 +161,57 @@ pub struct OpsRequestCustomSpecComponentsParameters { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestExpose { - /// Specifies the name of the cluster component. - #[serde(rename = "componentName")] - pub component_name: String, - /// A list of services that are to be exposed or removed. If componentNamem is not specified, each `OpsService` in the list must specify ports and selectors. + /// Specifies the name of the Component. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "componentName")] + pub component_name: Option, + /// Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`. On the other hand, when an OpsService is unexposed, the corresponding ClusterService will be removed from `cluster.spec.services`. + /// Note: If `componentName` is not specified, the `ports` and `selector` fields must be provided in each OpsService definition. pub services: Vec, - /// Controls the expose operation. If set to Enable, the corresponding service will be exposed. Conversely, if set to Disable, the service will be removed. + /// Indicates whether the services will be exposed. 'Enable' exposes the services. while 'Disable' removes the exposed Service. pub switch: OpsRequestExposeSwitch, } +/// OpsService represents the parameters to dynamically create or remove a ClusterService in the `cluster.spec.services` array. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestExposeServices { - /// Contains cloud provider related parameters if ServiceType is LoadBalancer. More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer. + /// Contains cloud provider related parameters if ServiceType is LoadBalancer. + /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer. #[serde(default, skip_serializing_if = "Option::is_none")] pub annotations: Option>, - /// IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are "IPv4" and "IPv6". This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to "headless" services. This field will be wiped when updating a Service to type ExternalName. - /// This field may hold a maximum of two entries (dual-stack families, in either order). These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. + /// A list of IP families (e.g., IPv4, IPv6) assigned to this Service. + /// Usually assigned automatically based on the cluster configuration and the `ipFamilyPolicy` field. If specified manually, the requested IP family must be available in the cluster and allowed by the `ipFamilyPolicy`. If the requested IP family is not available or not allowed, the Service creation will fail. + /// Valid values: + /// - "IPv4" - "IPv6" + /// This field may hold a maximum of two entries (dual-stack families, in either order). + /// Common combinations of `ipFamilies` and `ipFamilyPolicy` are: + /// - ipFamilies=[] + ipFamilyPolicy="PreferDualStack" : The Service prefers dual-stack but can fall back to single-stack if the cluster does not support dual-stack. The IP family is automatically assigned based on the cluster configuration. - ipFamilies=["IPV4","IPV6"] + ipFamilyPolicy="RequiredDualStack" : The Service requires dual-stack and will only be created if the cluster supports both IPv4 and IPv6. The primary IP family is IPV4. - ipFamilies=["IPV6","IPV4"] + ipFamilyPolicy="RequiredDualStack" : The Service requires dual-stack and will only be created if the cluster supports both IPv4 and IPv6. The primary IP family is IPV6. - ipFamilies=["IPV4"] + ipFamilyPolicy="SingleStack" : The Service uses a single-stack with IPv4 only. - ipFamilies=["IPV6"] + ipFamilyPolicy="SingleStack" : The Service uses a single-stack with IPv6 only. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilies")] pub ip_families: Option>, - /// IPFamilyPolicy represents the dual-stack-ness requested or required by this Service. If there is no value provided, then this field will be set to SingleStack. Services can be "SingleStack" (a single IP family), "PreferDualStack" (two IP families on dual-stack configured clusters or a single IP family on single-stack clusters), or "RequireDualStack" (two IP families on dual-stack configured clusters, otherwise fail). The ipFamilies and clusterIPs fields depend on the value of this field. This field will be wiped when updating a service to type ExternalName. + /// Specifies whether the Service should use a single IP family (SingleStack) or two IP families (DualStack). + /// Possible values: + /// - 'SingleStack' (default) : The Service uses a single IP family. If no value is provided, IPFamilyPolicy defaults to SingleStack. - 'PreferDualStack' : The Service prefers to use two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. - 'RequiredDualStack' : The Service requires two IP families on dual-stack configured clusters. If the cluster is not configured for dual-stack, the Service creation fails. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilyPolicy")] pub ip_family_policy: Option, - /// Specifies the name of the service. This name is used by others to refer to this service (e.g., connection credential). Note: This field cannot be updated. + /// Specifies the name of the Service. This name is used to set `clusterService.name`. + /// Note: This field cannot be updated. pub name: String, - /// Lists the ports that are exposed by this service. If not provided, the default Services Ports defined in the ClusterDefinition or ComponentDefinition that are neither of NodePort nor LoadBalancer service type will be used. If there is no corresponding Service defined in the ClusterDefinition or ComponentDefinition, the expose operation will fail. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + /// Specifies Port definitions that are to be exposed by a ClusterService. + /// If not specified, the Port definitions from non-NodePort and non-LoadBalancer type ComponentService defined in the ComponentDefinition (`componentDefinition.spec.services`) will be used. If no matching ComponentService is found, the expose operation will fail. + /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports #[serde(default, skip_serializing_if = "Option::is_none")] pub ports: Option>, - /// Allows you to specify a defined role as a selector for the service, extending the ServiceSpec.Selector. + /// Specifies a role to target with the service. If specified, the service will only be exposed to pods with the matching role. + /// Note: At least one of 'roleSelector' or 'selector' must be specified. If both are specified, a pod must match both conditions to be selected. #[serde(default, skip_serializing_if = "Option::is_none", rename = "roleSelector")] pub role_selector: Option, - /// Routes service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. This only applies to types ClusterIP, NodePort, and LoadBalancer and is ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/ + /// Routes service traffic to pods with matching label keys and values. If specified, the service will only be exposed to pods matching the selector. + /// Note: At least one of 'roleSelector' or 'selector' must be specified. If both are specified, a pod must match both conditions to be selected. #[serde(default, skip_serializing_if = "Option::is_none")] pub selector: Option>, - /// Determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types. + /// Determines how the Service is exposed. Defaults to 'ClusterIP'. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. + /// - `ClusterIP`: allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. - `NodePort`: builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer`: builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. + /// Note: although K8s Service type allows the 'ExternalName' type, it is not a valid option for the expose operation. + /// For more info, see: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types. #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceType")] pub service_type: Option, } @@ -214,19 +247,21 @@ pub enum OpsRequestExposeSwitch { Disable, } -/// HorizontalScaling defines the variables of horizontal scaling operation +/// HorizontalScaling defines the parameters of a horizontal scaling operation. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestHorizontalScaling { - /// Specifies the name of the cluster component. + /// Specifies the name of the Component. #[serde(rename = "componentName")] pub component_name: String, - /// Specifies instances to be added and/or deleted for the workloads. Name and Replicas should be provided. Other fields will simply be ignored. The Replicas will be overridden if an existing InstanceTemplate is matched by Name. Or the InstanceTemplate will be added as a new one. + /// Contains a list of InstanceTemplate objects. Each InstanceTemplate object allows for modifying replica counts or specifying configurations for new instances during scaling. + /// The field supports two main use cases: + /// - Modifying replica count: Specify the desired replica count for existing instances with a particular configuration using Name and Replicas fields. To modify the replica count, the Name and Replicas fields of the InstanceTemplate object should be provided. Only these fields are used for matching and adjusting replicas; other fields are ignored. The Replicas value overrides any existing count. - Configuring new instances: Define the configuration for new instances added during scaling, including resource requirements, labels, annotations, etc. New instances are created based on the provided InstanceTemplate. #[serde(default, skip_serializing_if = "Option::is_none")] pub instances: Option>, - /// Specifies instances to be scaled in with dedicated names in the list. + /// Specifies the names of instances to be scaled down. This provides control over which specific instances are targeted for termination when reducing the replica count. #[serde(default, skip_serializing_if = "Option::is_none", rename = "offlineInstances")] pub offline_instances: Option>, - /// Specifies the number of replicas for the workloads. + /// Specifies the number of total replicas. pub replicas: i32, } @@ -397,98 +432,37 @@ pub struct OpsRequestHorizontalScalingInstancesTolerations { pub value: Option, } -/// PersistentVolumeClaim is a user's request for and claim to a persistent volume #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestHorizontalScalingInstancesVolumeClaimTemplates { - /// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] - pub api_version: Option, - /// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - #[serde(default, skip_serializing_if = "Option::is_none")] - pub kind: Option, - /// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - #[serde(default, skip_serializing_if = "Option::is_none")] - pub metadata: Option, - /// spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + /// Refers to the name of a volumeMount defined in either: + /// - `componentDefinition.spec.runtime.containers[*].volumeMounts` - `clusterDefinition.spec.componentDefs[*].podSpec.containers[*].volumeMounts` (deprecated) + /// The value of `name` must match the `name` field of a volumeMount specified in the corresponding `volumeMounts` array. + pub name: String, + /// Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. + /// When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field. #[serde(default, skip_serializing_if = "Option::is_none")] pub spec: Option, - /// status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option, -} - -/// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestHorizontalScalingInstancesVolumeClaimTemplatesMetadata { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub annotations: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub finalizers: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, } -/// spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims +/// Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. +/// When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestHorizontalScalingInstancesVolumeClaimTemplatesSpec { - /// accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + /// Contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] pub access_modes: Option>, - /// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] - pub data_source: Option, - /// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] - pub data_source_ref: Option, - /// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + /// Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, - /// selector is a label query over volumes to consider for binding. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub selector: Option, - /// storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + /// The name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] pub storage_class_name: Option, - /// volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + /// Defines what type of volume is required by the claim, either Block or Filesystem. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] pub volume_mode: Option, - /// volumeName is the binding reference to the PersistentVolume backing this claim. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] - pub volume_name: Option, -} - -/// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestHorizontalScalingInstancesVolumeClaimTemplatesSpecDataSource { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, -} - -/// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestHorizontalScalingInstancesVolumeClaimTemplatesSpecDataSourceRef { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, - /// Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, } -/// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources +/// Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestHorizontalScalingInstancesVolumeClaimTemplatesSpecResources { /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. @@ -511,58 +485,6 @@ pub struct OpsRequestHorizontalScalingInstancesVolumeClaimTemplatesSpecResources pub name: String, } -/// selector is a label query over volumes to consider for binding. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestHorizontalScalingInstancesVolumeClaimTemplatesSpecSelector { - /// matchExpressions is a list of label selector requirements. The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] - pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] - pub match_labels: Option>, -} - -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestHorizontalScalingInstancesVolumeClaimTemplatesSpecSelectorMatchExpressions { - /// key is the label key that the selector applies to. - pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub values: Option>, -} - -/// status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestHorizontalScalingInstancesVolumeClaimTemplatesStatus { - /// accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] - pub access_modes: Option>, - /// allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. - /// ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed" When this field is not set, it means that no resize operation is in progress for the given PVC. - /// A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. - /// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocatedResourceStatuses")] - pub allocated_resource_statuses: Option>, - /// allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. - /// Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. - /// A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. - /// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocatedResources")] - pub allocated_resources: Option>, - /// capacity represents the actual resources of the underlying volume. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub capacity: Option>, - /// conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub conditions: Option>, - /// phase represents the current phase of PersistentVolumeClaim. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub phase: Option, -} - /// VolumeMount describes a mounting of a Volume within a container. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestHorizontalScalingInstancesVolumeMounts { @@ -1571,17 +1493,19 @@ pub struct OpsRequestHorizontalScalingInstancesVolumesVsphereVolume { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestRebuildFrom { - /// Indicates the name of the backup from which to recover. Currently, only a full physical backup is supported unless your component only has one replica. Such as 'xtrabackup' is full physical backup for mysql and 'mysqldump' is not. And if no specified backupName, the instance will be recreated with empty 'PersistentVolumes'. + /// Indicates the name of the Backup custom resource from which to recover the instance. Defaults to an empty PersistentVolume if unspecified. + /// Note: - Only full physical backups are supported for multi-replica Components (e.g., 'xtrabackup' for MySQL). - Logical backups (e.g., 'mysqldump' for MySQL) are unsupported in the current version. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backupName")] pub backup_name: Option, - /// Specifies the name of the cluster component. + /// Specifies the name of the Component. #[serde(rename = "componentName")] pub component_name: String, - /// List of environment variables to set in the container for restore. These will be merged with the env of Backup and ActionSet. - /// The priority of merging is as follows: `Restore env > Backup env > ActionSet env`. + /// Defines container environment variables for the restore process. merged with the ones specified in the Backup and ActionSet resources. + /// Merge priority: Restore env > Backup env > ActionSet env. + /// Purpose: Some databases require different configurations when being restored as a standby compared to being restored as a primary. For example, when restoring MySQL as a replica, you need to set `skip_slave_start="ON"` for 5.7 or `skip_replica_start="ON"` for 8.0. Allowing environment variables to be passed in makes it more convenient to control these behavioral differences during the restore process. #[serde(default, skip_serializing_if = "Option::is_none", rename = "envForRestore")] pub env_for_restore: Option>, - /// Defines the instances that need to be rebuilt. + /// Specifies the instances (Pods) that need to be rebuilt, typically operating as standbys. pub instances: Vec, } @@ -1674,35 +1598,38 @@ pub struct OpsRequestRebuildFromInstances { pub target_node_name: Option, } -/// Deprecated: replace by reconfigures. Defines the variables that need to input when updating configuration. +/// Specifies a component and its configuration updates. +/// This field is deprecated and replaced by `reconfigures`. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestReconfigure { - /// Specifies the name of the cluster component. + /// Specifies the name of the Component. #[serde(rename = "componentName")] pub component_name: String, - /// Specifies the components that will perform the operation. + /// Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated. pub configurations: Vec, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestReconfigureConfigurations { - /// Sets the parameters to be updated. It should contain at least one item. The keys are merged and retained during patch operations. + /// Sets the configuration files and their associated parameters that need to be updated. It should contain at least one item. pub keys: Vec, /// Specifies the name of the configuration template. pub name: String, - /// Defines the upgrade policy for the configuration. This field is optional. + /// Defines the upgrade policy for the configuration. #[serde(default, skip_serializing_if = "Option::is_none")] pub policy: Option, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestReconfigureConfigurationsKeys { - /// Represents the content of the configuration file. This field is used to update the entire content of the file. + /// Specifies the content of the entire configuration file. This field is used to update the complete configuration file. + /// Either the `parameters` field or the `fileContent` field must be set, but not both. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fileContent")] pub file_content: Option, - /// Represents the unique identifier for the ConfigMap. + /// Represents a key in the configuration template(as ConfigMap). Each key in the ConfigMap corresponds to a specific configuration file. pub key: String, - /// Defines a list of key-value pairs for a single configuration file. These parameters are used to update the specified configuration settings. + /// Specifies a list of key-value pairs representing parameters and their corresponding values within a single configuration file. This field is used to override or set the values of parameters without modifying the entire configuration file. + /// Either the `parameters` field or the `fileContent` field must be set, but not both. #[serde(default, skip_serializing_if = "Option::is_none")] pub parameters: Option>, } @@ -1732,35 +1659,37 @@ pub enum OpsRequestReconfigureConfigurationsPolicy { DynamicReloadBeginRestart, } -/// Reconfigure represents the variables required for updating a configuration. +/// Reconfigure defines the parameters for updating a Component's configuration. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestReconfigures { - /// Specifies the name of the cluster component. + /// Specifies the name of the Component. #[serde(rename = "componentName")] pub component_name: String, - /// Specifies the components that will perform the operation. + /// Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated. pub configurations: Vec, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestReconfiguresConfigurations { - /// Sets the parameters to be updated. It should contain at least one item. The keys are merged and retained during patch operations. + /// Sets the configuration files and their associated parameters that need to be updated. It should contain at least one item. pub keys: Vec, /// Specifies the name of the configuration template. pub name: String, - /// Defines the upgrade policy for the configuration. This field is optional. + /// Defines the upgrade policy for the configuration. #[serde(default, skip_serializing_if = "Option::is_none")] pub policy: Option, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestReconfiguresConfigurationsKeys { - /// Represents the content of the configuration file. This field is used to update the entire content of the file. + /// Specifies the content of the entire configuration file. This field is used to update the complete configuration file. + /// Either the `parameters` field or the `fileContent` field must be set, but not both. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fileContent")] pub file_content: Option, - /// Represents the unique identifier for the ConfigMap. + /// Represents a key in the configuration template(as ConfigMap). Each key in the ConfigMap corresponds to a specific configuration file. pub key: String, - /// Defines a list of key-value pairs for a single configuration file. These parameters are used to update the specified configuration settings. + /// Specifies a list of key-value pairs representing parameters and their corresponding values within a single configuration file. This field is used to override or set the values of parameters without modifying the entire configuration file. + /// Either the `parameters` field or the `fileContent` field must be set, but not both. #[serde(default, skip_serializing_if = "Option::is_none")] pub parameters: Option>, } @@ -1790,10 +1719,10 @@ pub enum OpsRequestReconfiguresConfigurationsPolicy { DynamicReloadBeginRestart, } -/// ComponentOps represents the common variables required for operations within the scope of a component. +/// ComponentOps specifies the Component to be operated on. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestRestart { - /// Specifies the name of the cluster component. + /// Specifies the name of the Component. #[serde(rename = "componentName")] pub component_name: String, } @@ -1801,7 +1730,7 @@ pub struct OpsRequestRestart { /// Cluster RestoreFrom backup or point in time. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestRestoreFrom { - /// Refers to the backup name and component name used for restoration. Supports recovery of multiple components. + /// Refers to the backup name and component name used for restoration. Supports recovery of multiple Components. #[serde(default, skip_serializing_if = "Option::is_none")] pub backup: Option>, /// Refers to the specific point in time for recovery. @@ -1849,60 +1778,77 @@ pub struct OpsRequestRestoreFromPointInTimeRef { pub namespace: Option, } -/// Defines how to restore the cluster. Note that this restore operation will roll back cluster services. +/// Specifies the parameters to restore a Cluster. Note that this restore operation will roll back cluster services. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestRestoreSpec { - /// Specifies the name of the backup. + /// Specifies the name of the Backup custom resource. #[serde(rename = "backupName")] pub backup_name: String, - /// Indicates if this backup will be restored for all components which refer to common ComponentDefinition. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "effectiveCommonComponentDef")] - pub effective_common_component_def: Option, - /// Defines the point in time to restore. + /// If set to true, the recovery process in the PostReady phase will be performed after the cluster is running successfully. otherwise, it will be performed after component is running. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "doReadyRestoreAfterClusterRunning")] + pub do_ready_restore_after_cluster_running: Option, + /// Specifies the point in time to which the restore should be performed. Supported time formats: + /// - RFC3339 format, e.g. "2023-11-25T18:52:53Z" - A human-readable date-time format, e.g. "Jul 25,2023 18:52:53 UTC+0800" #[serde(default, skip_serializing_if = "Option::is_none", rename = "restoreTimeStr")] pub restore_time_str: Option, - /// Specifies the volume claim restore policy, support values: [Serial, Parallel] + /// Specifies the policy for restoring volume claims of a Component's Pods. It determines whether the volume claims should be restored sequentially (one by one) or in parallel (all at once). Support values: + /// - "Serial" - "Parallel" #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeRestorePolicy")] pub volume_restore_policy: Option, } -/// Defines how to restore the cluster. Note that this restore operation will roll back cluster services. +/// Specifies the parameters to restore a Cluster. Note that this restore operation will roll back cluster services. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum OpsRequestRestoreSpecVolumeRestorePolicy { Serial, Parallel, } -/// Defines the script to be executed. +/// Specifies the image and scripts for executing engine-specific operations such as creating databases or users. It supports limited engines including MySQL, PostgreSQL, Redis, MongoDB. +/// ScriptSpec has been replaced by the more versatile OpsDefinition. It is recommended to use OpsDefinition instead. ScriptSpec is deprecated and will be removed in a future version. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestScriptSpec { - /// Specifies the name of the cluster component. + /// Specifies the name of the Component. #[serde(rename = "componentName")] pub component_name: String, - /// Specifies the image to be used for the exec command. By default, the image of kubeblocks-datascript is used. + /// Specifies the image to be used to execute scripts. + /// By default, the image "apecloud/kubeblocks-datascript:latest" is used. #[serde(default, skip_serializing_if = "Option::is_none")] pub image: Option, - /// Defines the script to be executed. + /// Defines the content of scripts to be executed. + /// All scripts specified in this field will be executed in the order they are provided. + /// Note: this field cannot be modified once set. #[serde(default, skip_serializing_if = "Option::is_none")] pub script: Option>, - /// Defines the script to be executed from a configMap or secret. + /// Specifies the sources of the scripts to be executed. Each script can be imported either from a ConfigMap or a Secret. + /// All scripts obtained from the sources specified in this field will be executed after any scripts provided in the `script` field. + /// Execution order: 1. Scripts provided in the `script` field, in the order of the scripts listed. 2. Scripts imported from ConfigMaps, in the order of the sources listed. 3. Scripts imported from Secrets, in the order of the sources listed. + /// Note: this field cannot be modified once set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "scriptFrom")] pub script_from: Option, /// Defines the secret to be used to execute the script. If not specified, the default cluster root credential secret is used. #[serde(default, skip_serializing_if = "Option::is_none")] pub secret: Option, - /// By default, KubeBlocks will execute the script on the primary pod with role=leader. Exceptions exist, such as Redis, which does not synchronize account information between primary and secondary. In such cases, the script needs to be executed on all pods matching the selector. Indicates the components on which the script is executed. + /// Specifies the labels used to select the Pods on which the script should be executed. + /// By default, the script is executed on the Pod associated with the service named "{clusterName}-{componentName}", which typically routes to the Pod with the primary/leader role. + /// However, some Components, such as Redis, do not synchronize account information between primary and secondary Pods. In these cases, the script must be executed on all replica Pods matching the selector. + /// Note: this field cannot be modified once set. #[serde(default, skip_serializing_if = "Option::is_none")] pub selector: Option, } -/// Defines the script to be executed from a configMap or secret. +/// Specifies the sources of the scripts to be executed. Each script can be imported either from a ConfigMap or a Secret. +/// All scripts obtained from the sources specified in this field will be executed after any scripts provided in the `script` field. +/// Execution order: 1. Scripts provided in the `script` field, in the order of the scripts listed. 2. Scripts imported from ConfigMaps, in the order of the sources listed. 3. Scripts imported from Secrets, in the order of the sources listed. +/// Note: this field cannot be modified once set. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestScriptSpecScriptFrom { - /// Specifies the configMap that is to be executed. + /// A list of ConfigMapKeySelector objects, each specifies a ConfigMap and a key containing the script. + /// Note: This field cannot be modified once set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")] pub config_map_ref: Option>, - /// Specifies the secret that is to be executed. + /// A list of SecretKeySelector objects, each specifies a Secret and a key containing the script. + /// Note: This field cannot be modified once set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] pub secret_ref: Option>, } @@ -1946,7 +1892,10 @@ pub struct OpsRequestScriptSpecSecret { pub username_key: Option, } -/// By default, KubeBlocks will execute the script on the primary pod with role=leader. Exceptions exist, such as Redis, which does not synchronize account information between primary and secondary. In such cases, the script needs to be executed on all pods matching the selector. Indicates the components on which the script is executed. +/// Specifies the labels used to select the Pods on which the script should be executed. +/// By default, the script is executed on the Pod associated with the service named "{clusterName}-{componentName}", which typically routes to the Pod with the primary/leader role. +/// However, some Components, such as Redis, do not synchronize account information between primary and secondary Pods. In these cases, the script must be executed on all replica Pods matching the selector. +/// Note: this field cannot be modified once set. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestScriptSpecSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -1971,13 +1920,13 @@ pub struct OpsRequestScriptSpecSelectorMatchExpressions { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestSwitchover { - /// Specifies the name of the cluster component. + /// Specifies the name of the Component. #[serde(rename = "componentName")] pub component_name: String, - /// Utilized to designate the candidate primary or leader instance for the switchover process. If assigned "*", it signifies that no specific primary or leader is designated for the switchover, and the switchoverAction defined in `clusterDefinition.componentDefs[x].switchoverSpec.withoutCandidate` will be executed. - /// It is mandatory that `clusterDefinition.componentDefs[x].switchoverSpec.withoutCandidate` is not left blank. - /// If assigned a valid instance name other than "*", it signifies that a specific candidate primary or leader is designated for the switchover. The value can be retrieved using `kbcli cluster list-instances`, any other value is considered invalid. - /// In this scenario, the `switchoverAction` defined in clusterDefinition.componentDefs[x].switchoverSpec.withCandidate will be executed, and it is mandatory that clusterDefinition.componentDefs[x].switchoverSpec.withCandidate is not left blank. + /// Specifies the instance to become the primary or leader during a switchover operation. + /// The value of `instanceName` can be either: + /// 1. "*" (wildcard value): - Indicates no specific instance is designated as the primary or leader. - Executes the switchover action from `clusterDefinition.componentDefs[*].switchoverSpec.withoutCandidate`. - `clusterDefinition.componentDefs[x].switchoverSpec.withoutCandidate` must be defined when using "*". + /// 2. A valid instance name (pod name): - Designates a specific instance (pod) as the primary or leader. - The name must match one of the pods in the component. Any non-valid pod name is considered invalid. - Executes the switchover action from `clusterDefinition.componentDefs[*].switchoverSpec.withCandidate`. - `clusterDefinition.componentDefs[*].switchoverSpec.withCandidate` must be defined when specifying a valid instance name. #[serde(rename = "instanceName")] pub instance_name: String, } @@ -2002,15 +1951,17 @@ pub enum OpsRequestType { Custom, } -/// Specifies the cluster version by specifying clusterVersionRef. +/// Specifies the desired new version of the Cluster. +/// Note: This field is immutable once set. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestUpgrade { - /// A reference to the name of the ClusterVersion. + /// Specifies the name of the target ClusterVersion for the upgrade. + /// This field is deprecated since v0.9 because ClusterVersion is deprecated. #[serde(rename = "clusterVersionRef")] pub cluster_version_ref: String, } -/// VerticalScaling defines the parameters required for scaling compute resources. +/// VerticalScaling refers to the process of adjusting the compute resources (e.g., CPU, memory) allocated to a Component. It defines the parameters required for the operation. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestVerticalScaling { /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. @@ -2018,9 +1969,12 @@ pub struct OpsRequestVerticalScaling { /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, - /// Specifies the name of the cluster component. + /// Specifies the name of the Component. #[serde(rename = "componentName")] pub component_name: String, + /// Specifies the instance template that need to vertical scale. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub instances: Option>, /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, @@ -2036,50 +1990,94 @@ pub struct OpsRequestVerticalScalingClaims { pub name: String, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct OpsRequestVerticalScalingInstances { + /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + /// This field is immutable. It can only be set for containers. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub claims: Option>, + /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + /// Refer to the instance template name of the component or sharding. + pub name: String, + /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +/// ResourceClaim references one entry in PodSpec.ResourceClaims. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct OpsRequestVerticalScalingInstancesClaims { + /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + pub name: String, +} + /// VolumeExpansion encapsulates the parameters required for a volume expansion operation. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestVolumeExpansion { - /// Specifies the name of the cluster component. + /// Specifies the name of the Component. #[serde(rename = "componentName")] pub component_name: String, - /// volumeClaimTemplates specifies the storage size and volumeClaimTemplate name. + /// Specifies the instance template that need to volume expand. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub instances: Option>, + /// Specifies a list of OpsRequestVolumeClaimTemplate objects, defining the volumeClaimTemplates that are used to expand the storage and the desired storage size for each one. #[serde(rename = "volumeClaimTemplates")] pub volume_claim_templates: Vec, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct OpsRequestVolumeExpansionInstances { + /// Refer to the instance template name of the component or sharding. + pub name: String, + /// volumeClaimTemplates specifies the storage size and volumeClaimTemplate name. + #[serde(rename = "volumeClaimTemplates")] + pub volume_claim_templates: Vec, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct OpsRequestVolumeExpansionInstancesVolumeClaimTemplates { + /// Specify the name of the volumeClaimTemplate in the Component. The specified name must match one of the volumeClaimTemplates defined in the `clusterComponentSpec.volumeClaimTemplates` field. + pub name: String, + /// Specifies the desired storage size for the volume. + pub storage: IntOrString, +} + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestVolumeExpansionVolumeClaimTemplates { - /// A reference to the volumeClaimTemplate name from the cluster components. + /// Specify the name of the volumeClaimTemplate in the Component. The specified name must match one of the volumeClaimTemplates defined in the `clusterComponentSpec.volumeClaimTemplates` field. pub name: String, - /// Specifies the requested storage size for the volume. + /// Specifies the desired storage size for the volume. pub storage: IntOrString, } /// OpsRequestStatus represents the observed state of an OpsRequest. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestStatus { - /// Defines the time when the OpsRequest was cancelled. + /// Records the time when the OpsRequest was cancelled. #[serde(default, skip_serializing_if = "Option::is_none", rename = "cancelTimestamp")] pub cancel_timestamp: Option, - /// Specifies the cluster generation after the OpsRequest action has been handled. + /// Records the cluster generation after the OpsRequest action has been handled. #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterGeneration")] pub cluster_generation: Option, - /// Specifies the time when the OpsRequest was completed. + /// Records the time when the OpsRequest was completed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "completionTimestamp")] pub completion_timestamp: Option, - /// Records the status information of components changed due to the operation request. + /// Records the status information of Components changed due to the OpsRequest. #[serde(default, skip_serializing_if = "Option::is_none")] pub components: Option>, - /// Describes the detailed status of the OpsRequest. + /// Describes the detailed status of the OpsRequest. Possible condition types include "Cancelled", "WaitForProgressing", "Validated", "Succeed", "Failed", "Restarting", "VerticalScaling", "HorizontalScaling", "VolumeExpanding", "Reconfigure", "Switchover", "Stopping", "Starting", "VersionUpgrading", "Exposing", "ExecuteDataScript", "Backup", "InstancesRebuilding", "CustomOperation". #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// A collection of additional key-value pairs that provide supplementary information for the opsRequest. + /// A collection of additional key-value pairs that provide supplementary information for the OpsRequest. #[serde(default, skip_serializing_if = "Option::is_none")] pub extras: Option>>, - /// Records the last configuration before this operation took effect. + /// Records the configuration prior to any changes. #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastConfiguration")] pub last_configuration: Option, - /// Defines the phase of the OpsRequest. + /// Represents the phase of the OpsRequest. Possible values include "Pending", "Creating", "Running", "Cancelling", "Cancelled", "Failed", "Succeed". #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, /// Represents the progress of the OpsRequest. @@ -2087,96 +2085,192 @@ pub struct OpsRequestStatus { /// Deprecated: Replaced by ReconfiguringStatusAsComponent. Defines the status information of reconfiguring. #[serde(default, skip_serializing_if = "Option::is_none", rename = "reconfiguringStatus")] pub reconfiguring_status: Option, - /// Represents the status information of reconfiguring. + /// Records the status of a reconfiguring operation if `opsRequest.spec.type` equals to "Reconfiguring". #[serde(default, skip_serializing_if = "Option::is_none", rename = "reconfiguringStatusAsComponent")] pub reconfiguring_status_as_component: Option>, - /// Indicates the time when the OpsRequest started processing. + /// Records the time when the OpsRequest started processing. #[serde(default, skip_serializing_if = "Option::is_none", rename = "startTimestamp")] pub start_timestamp: Option, } -/// Records the status information of components changed due to the operation request. +/// Records the status information of Components changed due to the OpsRequest. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestStatusComponents { - /// Indicates the last time the component phase transitioned to Failed or Abnormal. + /// Records the timestamp when the Component last transitioned to a "Failed" or "Abnormal" phase. #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastFailedTime")] pub last_failed_time: Option, /// Provides a human-readable message indicating details about this operation. #[serde(default, skip_serializing_if = "Option::is_none")] pub message: Option, - /// Describes the configuration covered by the latest OpsRequest of the same kind. when reconciling, this information will be used as a benchmark rather than the 'spec', such as 'Spec.HorizontalScaling'. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "overrideBy")] - pub override_by: Option, - /// Describes the component phase, referencing Cluster.status.component.phase. + /// Records the current phase of the Component, mirroring `cluster.status.components[componentName].phase`. Possible values include "Creating", "Running", "Updating", "Stopping", "Stopped", "Deleting", "Failed", "Abnormal". #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, - /// Specifies the outcome of the preConditions check for the opsRequest. This result is crucial for determining the next steps in the operation. + /// Records the result of the preConditions check of the opsRequest, which determines subsequent steps. #[serde(default, skip_serializing_if = "Option::is_none", rename = "preCheck")] pub pre_check: Option, - /// Describes the progress details of the component for this operation. + /// Describes the progress details of objects or actions associated with the Component. #[serde(default, skip_serializing_if = "Option::is_none", rename = "progressDetails")] pub progress_details: Option>, - /// Describes the reason for the component phase. + /// Provides an explanation for the Component being in its current state. #[serde(default, skip_serializing_if = "Option::is_none")] pub reason: Option, - /// References the workload type of component in ClusterDefinition. + /// Records the workload type of Component in ClusterDefinition. Deprecated and should be removed in the future version. #[serde(default, skip_serializing_if = "Option::is_none", rename = "workloadType")] pub workload_type: Option, } -/// Describes the configuration covered by the latest OpsRequest of the same kind. when reconciling, this information will be used as a benchmark rather than the 'spec', such as 'Spec.HorizontalScaling'. +/// Records the status information of Components changed due to the OpsRequest. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum OpsRequestStatusComponentsPhase { + Creating, + Running, + Updating, + Stopping, + Stopped, + Deleting, + Failed, + Abnormal, +} + +/// Records the result of the preConditions check of the opsRequest, which determines subsequent steps. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct OpsRequestStatusComponentsPreCheck { + /// Provides explanations related to the preCheck result in a human-readable format. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + /// Indicates whether the preCheck operation passed or failed. + pub pass: bool, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct OpsRequestStatusComponentsProgressDetails { + /// Indicates the name of an OpsAction, as defined in `opsDefinition.spec.actions[*].name`. Either `objectKey` or `actionName` must be provided. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "actionName")] + pub action_name: Option, + /// Lists the tasks, such as Jobs or Pods, that carry out the action. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "actionTasks")] + pub action_tasks: Option>, + /// Records the completion time of object processing. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "endTime")] + pub end_time: Option, + /// Specifies the group to which the current object belongs to. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub group: Option, + /// Provides a human-readable explanation of the object's condition. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + /// `objectKey` uniquely identifies the object, which can be any K8s object, like a Pod, Job, Component, or PVC. Either `objectKey` or `actionName` must be provided. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "objectKey")] + pub object_key: Option, + /// Records the start time of object processing. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "startTime")] + pub start_time: Option, + /// Represents the current processing state of the object, including "Processing", "Pending", "Failed", "Succeed" + pub status: OpsRequestStatusComponentsProgressDetailsStatus, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct OpsRequestStatusComponentsProgressDetailsActionTasks { + /// Represents the namespace where the task is deployed. + pub namespace: String, + /// Represents the name of the task. + #[serde(rename = "objectKey")] + pub object_key: String, + /// The count of retry attempts made for this task. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub retries: Option, + /// Indicates the current status of the task, including "Processing", "Failed", "Succeed". + pub status: OpsRequestStatusComponentsProgressDetailsActionTasksStatus, + /// The name of the Pod that the task is associated with or operates on. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPodName")] + pub target_pod_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum OpsRequestStatusComponentsProgressDetailsActionTasksStatus { + Processing, + Failed, + Succeed, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum OpsRequestStatusComponentsProgressDetailsStatus { + Processing, + Pending, + Failed, + Succeed, +} + +/// Records the status information of Components changed due to the OpsRequest. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum OpsRequestStatusComponentsWorkloadType { + Stateless, + Stateful, + Consensus, + Replication, +} + +/// Records the configuration prior to any changes. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct OpsRequestStatusLastConfiguration { + /// Specifies the name of the ClusterVersion. Deprecated and should be removed in the future version. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterVersionRef")] + pub cluster_version_ref: Option, + /// Records the configuration of each Component prior to any changes. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub components: Option>, +} + +/// Records the configuration of each Component prior to any changes. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideBy { +pub struct OpsRequestStatusLastConfigurationComponents { /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] - pub claims: Option>, - /// Records the last instances of the component. + pub claims: Option>, + /// Records the InstanceTemplate list of the Component prior to any changes. #[serde(default, skip_serializing_if = "Option::is_none")] - pub instances: Option>, + pub instances: Option>, /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Records the last offline instances of the component. + /// Records the offline instances of the Component prior to any changes. #[serde(default, skip_serializing_if = "Option::is_none", rename = "offlineInstances")] pub offline_instances: Option>, - /// Indicates the opsRequest name. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "opsName")] - pub ops_name: Option, - /// Represents the last replicas of the component. + /// Records the `replicas` of the Component prior to any changes. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, - /// Records the last services of the component. + /// Records the ClusterComponentService list of the Component prior to any changes. #[serde(default, skip_serializing_if = "Option::is_none")] - pub services: Option>, - /// Records the information about the target resources affected by the component. The resource key is in the list of [pods]. + pub services: Option>, + /// Records the information about various types of resources associated with the Component prior to any changes. Currently, only one type of resource is supported: "pods". The "pods" key maps to a list of names of all Pods of the Component. #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetResources")] pub target_resources: Option>, - /// Records the last volumeClaimTemplates of the component. + /// Records volumes' storage size of the Component prior to any changes. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplates")] - pub volume_claim_templates: Option>, + pub volume_claim_templates: Option>, } /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByClaims { +pub struct OpsRequestStatusLastConfigurationComponentsClaims { /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. pub name: String, } /// InstanceTemplate allows customization of individual replica configurations within a Component, without altering the base component template defined in ClusterComponentSpec. It enables the application of distinct settings to specific instances (replicas), providing flexibility while maintaining a common configuration baseline. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstances { +pub struct OpsRequestStatusLastConfigurationComponentsInstances { /// Specifies a map of key-value pairs to be merged into the Pod's existing annotations. Existing keys will have their values overwritten, while new keys will be added to the annotations. #[serde(default, skip_serializing_if = "Option::is_none")] pub annotations: Option>, /// Defines Env to override. Add new or override existing envs. #[serde(default, skip_serializing_if = "Option::is_none")] - pub env: Option>, + pub env: Option>, /// Specifies an override for the first container's image in the pod. #[serde(default, skip_serializing_if = "Option::is_none")] pub image: Option, @@ -2197,24 +2291,24 @@ pub struct OpsRequestStatusComponentsOverrideByInstances { pub replicas: Option, /// Specifies an override for the resource requirements of the first container in the Pod. This field allows for customizing resource allocation (CPU, memory, etc.) for the container. #[serde(default, skip_serializing_if = "Option::is_none")] - pub resources: Option, + pub resources: Option, /// Tolerations specifies a list of tolerations to be applied to the Pod, allowing it to tolerate node taints. This field can be used to add new tolerations or override existing ones. #[serde(default, skip_serializing_if = "Option::is_none")] - pub tolerations: Option>, + pub tolerations: Option>, /// Defines VolumeClaimTemplates to override. Add new or override existing volume claim templates. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplates")] - pub volume_claim_templates: Option>, + pub volume_claim_templates: Option>, /// Defines VolumeMounts to override. Add new or override existing volume mounts of the first container in the pod. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] - pub volume_mounts: Option>, + pub volume_mounts: Option>, /// Defines Volumes to override. Add new or override existing volumes. #[serde(default, skip_serializing_if = "Option::is_none")] - pub volumes: Option>, + pub volumes: Option>, } /// EnvVar represents an environment variable present in a Container. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesEnv { +pub struct OpsRequestStatusLastConfigurationComponentsInstancesEnv { /// Name of the environment variable. Must be a C_IDENTIFIER. pub name: String, /// Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". @@ -2222,29 +2316,29 @@ pub struct OpsRequestStatusComponentsOverrideByInstancesEnv { pub value: Option, /// Source for the environment variable's value. Cannot be used if value is not empty. #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] - pub value_from: Option, + pub value_from: Option, } /// Source for the environment variable's value. Cannot be used if value is not empty. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesEnvValueFrom { +pub struct OpsRequestStatusLastConfigurationComponentsInstancesEnvValueFrom { /// Selects a key of a ConfigMap. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] - pub config_map_key_ref: Option, + pub config_map_key_ref: Option, /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] - pub field_ref: Option, + pub field_ref: Option, /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] - pub resource_field_ref: Option, + pub resource_field_ref: Option, /// Selects a key of a secret in the pod's namespace #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] - pub secret_key_ref: Option, + pub secret_key_ref: Option, } /// Selects a key of a ConfigMap. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesEnvValueFromConfigMapKeyRef { +pub struct OpsRequestStatusLastConfigurationComponentsInstancesEnvValueFromConfigMapKeyRef { /// The key to select. pub key: String, /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? @@ -2257,7 +2351,7 @@ pub struct OpsRequestStatusComponentsOverrideByInstancesEnvValueFromConfigMapKey /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesEnvValueFromFieldRef { +pub struct OpsRequestStatusLastConfigurationComponentsInstancesEnvValueFromFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] pub api_version: Option, @@ -2268,7 +2362,7 @@ pub struct OpsRequestStatusComponentsOverrideByInstancesEnvValueFromFieldRef { /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesEnvValueFromResourceFieldRef { +pub struct OpsRequestStatusLastConfigurationComponentsInstancesEnvValueFromResourceFieldRef { /// Container name: required for volumes, optional for env vars #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] pub container_name: Option, @@ -2281,7 +2375,7 @@ pub struct OpsRequestStatusComponentsOverrideByInstancesEnvValueFromResourceFiel /// Selects a key of a secret in the pod's namespace #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesEnvValueFromSecretKeyRef { +pub struct OpsRequestStatusLastConfigurationComponentsInstancesEnvValueFromSecretKeyRef { /// The key of the secret to select from. Must be a valid secret key. pub key: String, /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? @@ -2294,12 +2388,12 @@ pub struct OpsRequestStatusComponentsOverrideByInstancesEnvValueFromSecretKeyRef /// Specifies an override for the resource requirements of the first container in the Pod. This field allows for customizing resource allocation (CPU, memory, etc.) for the container. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesResources { +pub struct OpsRequestStatusLastConfigurationComponentsInstancesResources { /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] - pub claims: Option>, + pub claims: Option>, /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, @@ -2310,14 +2404,14 @@ pub struct OpsRequestStatusComponentsOverrideByInstancesResources { /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesResourcesClaims { +pub struct OpsRequestStatusLastConfigurationComponentsInstancesResourcesClaims { /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. pub name: String, } /// The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesTolerations { +pub struct OpsRequestStatusLastConfigurationComponentsInstancesTolerations { /// Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. #[serde(default, skip_serializing_if = "Option::is_none")] pub effect: Option, @@ -2335,1613 +2429,37 @@ pub struct OpsRequestStatusComponentsOverrideByInstancesTolerations { pub value: Option, } -/// PersistentVolumeClaim is a user's request for and claim to a persistent volume #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumeClaimTemplates { - /// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] - pub api_version: Option, - /// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - #[serde(default, skip_serializing_if = "Option::is_none")] - pub kind: Option, - /// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - #[serde(default, skip_serializing_if = "Option::is_none")] - pub metadata: Option, - /// spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - #[serde(default, skip_serializing_if = "Option::is_none")] - pub spec: Option, - /// status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims +pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeClaimTemplates { + /// Refers to the name of a volumeMount defined in either: + /// - `componentDefinition.spec.runtime.containers[*].volumeMounts` - `clusterDefinition.spec.componentDefs[*].podSpec.containers[*].volumeMounts` (deprecated) + /// The value of `name` must match the `name` field of a volumeMount specified in the corresponding `volumeMounts` array. + pub name: String, + /// Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. + /// When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field. #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option, + pub spec: Option, } -/// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata +/// Defines the desired characteristics of a PersistentVolumeClaim that will be created for the volume with the mount name specified in the `name` field. +/// When a Pod is created for this ClusterComponent, a new PVC will be created based on the specification defined in the `spec` field. The PVC will be associated with the volume mount specified by the `name` field. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumeClaimTemplatesMetadata { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub annotations: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub finalizers: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, -} - -/// spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumeClaimTemplatesSpec { - /// accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] - pub access_modes: Option>, - /// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] - pub data_source: Option, - /// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] - pub data_source_ref: Option, - /// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resources: Option, - /// selector is a label query over volumes to consider for binding. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub selector: Option, - /// storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] - pub storage_class_name: Option, - /// volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] - pub volume_mode: Option, - /// volumeName is the binding reference to the PersistentVolume backing this claim. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] - pub volume_name: Option, -} - -/// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumeClaimTemplatesSpecDataSource { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, -} - -/// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumeClaimTemplatesSpecDataSourceRef { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, - /// Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, -} - -/// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumeClaimTemplatesSpecResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - #[serde(default, skip_serializing_if = "Option::is_none")] - pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - #[serde(default, skip_serializing_if = "Option::is_none")] - pub requests: Option>, -} - -/// ResourceClaim references one entry in PodSpec.ResourceClaims. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumeClaimTemplatesSpecResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. - pub name: String, -} - -/// selector is a label query over volumes to consider for binding. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumeClaimTemplatesSpecSelector { - /// matchExpressions is a list of label selector requirements. The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] - pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] - pub match_labels: Option>, -} - -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumeClaimTemplatesSpecSelectorMatchExpressions { - /// key is the label key that the selector applies to. - pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub values: Option>, -} - -/// status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumeClaimTemplatesStatus { - /// accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] - pub access_modes: Option>, - /// allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. - /// ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed" When this field is not set, it means that no resize operation is in progress for the given PVC. - /// A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. - /// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocatedResourceStatuses")] - pub allocated_resource_statuses: Option>, - /// allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. - /// Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. - /// A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. - /// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocatedResources")] - pub allocated_resources: Option>, - /// capacity represents the actual resources of the underlying volume. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub capacity: Option>, - /// conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub conditions: Option>, - /// phase represents the current phase of PersistentVolumeClaim. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub phase: Option, -} - -/// VolumeMount describes a mounting of a Volume within a container. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumeMounts { - /// Path within the container at which the volume should be mounted. Must not contain ':'. - #[serde(rename = "mountPath")] - pub mount_path: String, - /// mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] - pub mount_propagation: Option, - /// This must match the Name of a Volume. - pub name: String, - /// Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). - #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] - pub sub_path: Option, - /// Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] - pub sub_path_expr: Option, -} - -/// Volume represents a named volume in a pod that may be accessed by any container in the pod. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumes { - /// awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsElasticBlockStore")] - pub aws_elastic_block_store: Option, - /// azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureDisk")] - pub azure_disk: Option, - /// azureFile represents an Azure File Service mount on the host and bind mount to the pod. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureFile")] - pub azure_file: Option, - /// cephFS represents a Ceph FS mount on the host that shares a pod's lifetime - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cephfs: Option, - /// cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md - #[serde(default, skip_serializing_if = "Option::is_none")] - pub cinder: Option, - /// configMap represents a configMap that should populate this volume - #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] - pub config_map: Option, - /// csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub csi: Option, - /// downwardAPI represents downward API about the pod that should populate this volume - #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] - pub downward_api: Option, - /// emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - #[serde(default, skip_serializing_if = "Option::is_none", rename = "emptyDir")] - pub empty_dir: Option, - /// ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. - /// Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). - /// Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. - /// Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. - /// A pod can use both types of ephemeral volumes and persistent volumes at the same time. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ephemeral: Option, - /// fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub fc: Option, - /// flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "flexVolume")] - pub flex_volume: Option, - /// flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running - #[serde(default, skip_serializing_if = "Option::is_none")] - pub flocker: Option, - /// gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - #[serde(default, skip_serializing_if = "Option::is_none", rename = "gcePersistentDisk")] - pub gce_persistent_disk: Option, - /// gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "gitRepo")] - pub git_repo: Option, - /// glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md - #[serde(default, skip_serializing_if = "Option::is_none")] - pub glusterfs: Option, - /// hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPath")] - pub host_path: Option, - /// iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md - #[serde(default, skip_serializing_if = "Option::is_none")] - pub iscsi: Option, - /// name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - pub name: String, - /// nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - #[serde(default, skip_serializing_if = "Option::is_none")] - pub nfs: Option, - /// persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - #[serde(default, skip_serializing_if = "Option::is_none", rename = "persistentVolumeClaim")] - pub persistent_volume_claim: Option, - /// photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine - #[serde(default, skip_serializing_if = "Option::is_none", rename = "photonPersistentDisk")] - pub photon_persistent_disk: Option, - /// portworxVolume represents a portworx volume attached and mounted on kubelets host machine - #[serde(default, skip_serializing_if = "Option::is_none", rename = "portworxVolume")] - pub portworx_volume: Option, - /// projected items for all in one resources secrets, configmaps, and downward API - #[serde(default, skip_serializing_if = "Option::is_none")] - pub projected: Option, - /// quobyte represents a Quobyte mount on the host that shares a pod's lifetime - #[serde(default, skip_serializing_if = "Option::is_none")] - pub quobyte: Option, - /// rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md - #[serde(default, skip_serializing_if = "Option::is_none")] - pub rbd: Option, - /// scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleIO")] - pub scale_io: Option, - /// secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - #[serde(default, skip_serializing_if = "Option::is_none")] - pub secret: Option, - /// storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub storageos: Option, - /// vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine - #[serde(default, skip_serializing_if = "Option::is_none", rename = "vsphereVolume")] - pub vsphere_volume: Option, -} - -/// awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesAwsElasticBlockStore { - /// fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub partition: Option, - /// readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - #[serde(rename = "volumeID")] - pub volume_id: String, -} - -/// azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesAzureDisk { - /// cachingMode is the Host Caching mode: None, Read Only, Read Write. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "cachingMode")] - pub caching_mode: Option, - /// diskName is the Name of the data disk in the blob storage - #[serde(rename = "diskName")] - pub disk_name: String, - /// diskURI is the URI of data disk in the blob storage - #[serde(rename = "diskURI")] - pub disk_uri: String, - /// fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared - #[serde(default, skip_serializing_if = "Option::is_none")] - pub kind: Option, - /// readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, -} - -/// azureFile represents an Azure File Service mount on the host and bind mount to the pod. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesAzureFile { - /// readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// secretName is the name of secret that contains Azure Storage Account Name and Key - #[serde(rename = "secretName")] - pub secret_name: String, - /// shareName is the azure share Name - #[serde(rename = "shareName")] - pub share_name: String, -} - -/// cephFS represents a Ceph FS mount on the host that shares a pod's lifetime -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesCephfs { - /// monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - pub monitors: Vec, - /// path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / - #[serde(default, skip_serializing_if = "Option::is_none")] - pub path: Option, - /// readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretFile")] - pub secret_file: Option, - /// secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] - pub secret_ref: Option, - /// user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user: Option, -} - -/// secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesCephfsSecretRef { - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, -} - -/// cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesCinder { - /// fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] - pub secret_ref: Option, - /// volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md - #[serde(rename = "volumeID")] - pub volume_id: String, -} - -/// secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesCinderSecretRef { - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, -} - -/// configMap represents a configMap that should populate this volume -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesConfigMap { - /// defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] - pub default_mode: Option, - /// items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub items: Option>, - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - /// optional specify whether the ConfigMap or its keys must be defined - #[serde(default, skip_serializing_if = "Option::is_none")] - pub optional: Option, -} - -/// Maps a string key to a path within a volume. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesConfigMapItems { - /// key is the key to project. - pub key: String, - /// mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub mode: Option, - /// path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - pub path: String, -} - -/// csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesCsi { - /// driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. - pub driver: String, - /// fsType to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePublishSecretRef")] - pub node_publish_secret_ref: Option, - /// readOnly specifies a read-only configuration for the volume. Defaults to false (read/write). - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributes")] - pub volume_attributes: Option>, -} - -/// nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesCsiNodePublishSecretRef { - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, -} - -/// downwardAPI represents downward API about the pod that should populate this volume -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesDownwardApi { - /// Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] - pub default_mode: Option, - /// Items is a list of downward API volume file - #[serde(default, skip_serializing_if = "Option::is_none")] - pub items: Option>, -} - -/// DownwardAPIVolumeFile represents information to create the file containing the pod field -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesDownwardApiItems { - /// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] - pub field_ref: Option, - /// Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub mode: Option, - /// Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' - pub path: String, - /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] - pub resource_field_ref: Option, -} - -/// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesDownwardApiItemsFieldRef { - /// Version of the schema the FieldPath is written in terms of, defaults to "v1". - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] - pub api_version: Option, - /// Path of the field to select in the specified API version. - #[serde(rename = "fieldPath")] - pub field_path: String, -} - -/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesDownwardApiItemsResourceFieldRef { - /// Container name: required for volumes, optional for env vars - #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] - pub container_name: Option, - /// Specifies the output format of the exposed resources, defaults to "1" - #[serde(default, skip_serializing_if = "Option::is_none")] - pub divisor: Option, - /// Required: resource to select - pub resource: String, -} - -/// emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesEmptyDir { - /// medium represents what type of storage medium should back this directory. The default is "" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - #[serde(default, skip_serializing_if = "Option::is_none")] - pub medium: Option, - /// sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - #[serde(default, skip_serializing_if = "Option::is_none", rename = "sizeLimit")] - pub size_limit: Option, -} - -/// ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. -/// Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). -/// Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. -/// Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. -/// A pod can use both types of ephemeral volumes and persistent volumes at the same time. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesEphemeral { - /// Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). - /// An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. - /// This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. - /// Required, must not be nil. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplate")] - pub volume_claim_template: Option, -} - -/// Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). -/// An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. -/// This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. -/// Required, must not be nil. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesEphemeralVolumeClaimTemplate { - /// May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub metadata: Option, - /// The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. - pub spec: OpsRequestStatusComponentsOverrideByInstancesVolumesEphemeralVolumeClaimTemplateSpec, -} - -/// May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesEphemeralVolumeClaimTemplateMetadata { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub annotations: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub finalizers: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, -} - -/// The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesEphemeralVolumeClaimTemplateSpec { - /// accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] - pub access_modes: Option>, - /// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] - pub data_source: Option, - /// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] - pub data_source_ref: Option, - /// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resources: Option, - /// selector is a label query over volumes to consider for binding. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub selector: Option, - /// storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] - pub storage_class_name: Option, - /// volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] - pub volume_mode: Option, - /// volumeName is the binding reference to the PersistentVolume backing this claim. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] - pub volume_name: Option, -} - -/// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesEphemeralVolumeClaimTemplateSpecDataSource { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, -} - -/// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesEphemeralVolumeClaimTemplateSpecDataSourceRef { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, - /// Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, -} - -/// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesEphemeralVolumeClaimTemplateSpecResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - #[serde(default, skip_serializing_if = "Option::is_none")] - pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - #[serde(default, skip_serializing_if = "Option::is_none")] - pub requests: Option>, -} - -/// ResourceClaim references one entry in PodSpec.ResourceClaims. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesEphemeralVolumeClaimTemplateSpecResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. - pub name: String, -} - -/// selector is a label query over volumes to consider for binding. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesEphemeralVolumeClaimTemplateSpecSelector { - /// matchExpressions is a list of label selector requirements. The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] - pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] - pub match_labels: Option>, -} - -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesEphemeralVolumeClaimTemplateSpecSelectorMatchExpressions { - /// key is the label key that the selector applies to. - pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub values: Option>, -} - -/// fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesFc { - /// fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// lun is Optional: FC target lun number - #[serde(default, skip_serializing_if = "Option::is_none")] - pub lun: Option, - /// readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// targetWWNs is Optional: FC target worldwide names (WWNs) - #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetWWNs")] - pub target_ww_ns: Option>, - /// wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub wwids: Option>, -} - -/// flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesFlexVolume { - /// driver is the name of the driver to use for this volume. - pub driver: String, - /// fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// options is Optional: this field holds extra command options if any. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub options: Option>, - /// readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] - pub secret_ref: Option, -} - -/// secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesFlexVolumeSecretRef { - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, -} - -/// flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesFlocker { - /// datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated - #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetName")] - pub dataset_name: Option, - /// datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset - #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetUUID")] - pub dataset_uuid: Option, -} - -/// gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesGcePersistentDisk { - /// fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - #[serde(default, skip_serializing_if = "Option::is_none")] - pub partition: Option, - /// pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - #[serde(rename = "pdName")] - pub pd_name: String, - /// readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, -} - -/// gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesGitRepo { - /// directory is the target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub directory: Option, - /// repository is the URL - pub repository: String, - /// revision is the commit hash for the specified revision. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub revision: Option, -} - -/// glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesGlusterfs { - /// endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - pub endpoints: String, - /// path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - pub path: String, - /// readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, -} - -/// hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesHostPath { - /// path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - pub path: String, - /// type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] - pub r#type: Option, -} - -/// iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesIscsi { - /// chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication - #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthDiscovery")] - pub chap_auth_discovery: Option, - /// chapAuthSession defines whether support iSCSI Session CHAP authentication - #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthSession")] - pub chap_auth_session: Option, - /// fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "initiatorName")] - pub initiator_name: Option, - /// iqn is the target iSCSI Qualified Name. - pub iqn: String, - /// iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). - #[serde(default, skip_serializing_if = "Option::is_none", rename = "iscsiInterface")] - pub iscsi_interface: Option, - /// lun represents iSCSI Target Lun number. - pub lun: i32, - /// portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). - #[serde(default, skip_serializing_if = "Option::is_none")] - pub portals: Option>, - /// readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// secretRef is the CHAP Secret for iSCSI target and initiator authentication - #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] - pub secret_ref: Option, - /// targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). - #[serde(rename = "targetPortal")] - pub target_portal: String, -} - -/// secretRef is the CHAP Secret for iSCSI target and initiator authentication -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesIscsiSecretRef { - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, -} - -/// nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesNfs { - /// path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - pub path: String, - /// readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - pub server: String, -} - -/// persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesPersistentVolumeClaim { - /// claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - #[serde(rename = "claimName")] - pub claim_name: String, - /// readOnly Will force the ReadOnly setting in VolumeMounts. Default false. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, -} - -/// photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesPhotonPersistentDisk { - /// fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// pdID is the ID that identifies Photon Controller persistent disk - #[serde(rename = "pdID")] - pub pd_id: String, -} - -/// portworxVolume represents a portworx volume attached and mounted on kubelets host machine -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesPortworxVolume { - /// fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// volumeID uniquely identifies a Portworx volume - #[serde(rename = "volumeID")] - pub volume_id: String, -} - -/// projected items for all in one resources secrets, configmaps, and downward API -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesProjected { - /// defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] - pub default_mode: Option, - /// sources is the list of volume projections - #[serde(default, skip_serializing_if = "Option::is_none")] - pub sources: Option>, -} - -/// Projection that may be projected along with other supported volume types -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesProjectedSources { - /// configMap information about the configMap data to project - #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] - pub config_map: Option, - /// downwardAPI information about the downwardAPI data to project - #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] - pub downward_api: Option, - /// secret information about the secret data to project - #[serde(default, skip_serializing_if = "Option::is_none")] - pub secret: Option, - /// serviceAccountToken is information about the serviceAccountToken data to project - #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountToken")] - pub service_account_token: Option, -} - -/// configMap information about the configMap data to project -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesProjectedSourcesConfigMap { - /// items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub items: Option>, - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - /// optional specify whether the ConfigMap or its keys must be defined - #[serde(default, skip_serializing_if = "Option::is_none")] - pub optional: Option, -} - -/// Maps a string key to a path within a volume. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesProjectedSourcesConfigMapItems { - /// key is the key to project. - pub key: String, - /// mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub mode: Option, - /// path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - pub path: String, -} - -/// downwardAPI information about the downwardAPI data to project -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesProjectedSourcesDownwardApi { - /// Items is a list of DownwardAPIVolume file - #[serde(default, skip_serializing_if = "Option::is_none")] - pub items: Option>, -} - -/// DownwardAPIVolumeFile represents information to create the file containing the pod field -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesProjectedSourcesDownwardApiItems { - /// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] - pub field_ref: Option, - /// Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub mode: Option, - /// Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' - pub path: String, - /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] - pub resource_field_ref: Option, -} - -/// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesProjectedSourcesDownwardApiItemsFieldRef { - /// Version of the schema the FieldPath is written in terms of, defaults to "v1". - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] - pub api_version: Option, - /// Path of the field to select in the specified API version. - #[serde(rename = "fieldPath")] - pub field_path: String, -} - -/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesProjectedSourcesDownwardApiItemsResourceFieldRef { - /// Container name: required for volumes, optional for env vars - #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] - pub container_name: Option, - /// Specifies the output format of the exposed resources, defaults to "1" - #[serde(default, skip_serializing_if = "Option::is_none")] - pub divisor: Option, - /// Required: resource to select - pub resource: String, -} - -/// secret information about the secret data to project -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesProjectedSourcesSecret { - /// items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub items: Option>, - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - /// optional field specify whether the Secret or its key must be defined - #[serde(default, skip_serializing_if = "Option::is_none")] - pub optional: Option, -} - -/// Maps a string key to a path within a volume. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesProjectedSourcesSecretItems { - /// key is the key to project. - pub key: String, - /// mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub mode: Option, - /// path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - pub path: String, -} - -/// serviceAccountToken is information about the serviceAccountToken data to project -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesProjectedSourcesServiceAccountToken { - /// audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub audience: Option, - /// expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "expirationSeconds")] - pub expiration_seconds: Option, - /// path is the path relative to the mount point of the file to project the token into. - pub path: String, -} - -/// quobyte represents a Quobyte mount on the host that shares a pod's lifetime -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesQuobyte { - /// group to map volume access to Default is no group - #[serde(default, skip_serializing_if = "Option::is_none")] - pub group: Option, - /// readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes - pub registry: String, - /// tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin - #[serde(default, skip_serializing_if = "Option::is_none")] - pub tenant: Option, - /// user to map volume access to Defaults to serivceaccount user - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user: Option, - /// volume is a string that references an already created Quobyte volume by name. - pub volume: String, -} - -/// rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesRbd { - /// fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - pub image: String, - /// keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - #[serde(default, skip_serializing_if = "Option::is_none")] - pub keyring: Option, - /// monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - pub monitors: Vec, - /// pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - #[serde(default, skip_serializing_if = "Option::is_none")] - pub pool: Option, - /// readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] - pub secret_ref: Option, - /// user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - #[serde(default, skip_serializing_if = "Option::is_none")] - pub user: Option, -} - -/// secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesRbdSecretRef { - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, -} - -/// scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesScaleIo { - /// fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// gateway is the host address of the ScaleIO API Gateway. - pub gateway: String, - /// protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "protectionDomain")] - pub protection_domain: Option, - /// readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. - #[serde(rename = "secretRef")] - pub secret_ref: OpsRequestStatusComponentsOverrideByInstancesVolumesScaleIoSecretRef, - /// sslEnabled Flag enable/disable SSL communication with Gateway, default false - #[serde(default, skip_serializing_if = "Option::is_none", rename = "sslEnabled")] - pub ssl_enabled: Option, - /// storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageMode")] - pub storage_mode: Option, - /// storagePool is the ScaleIO Storage Pool associated with the protection domain. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePool")] - pub storage_pool: Option, - /// system is the name of the storage system as configured in ScaleIO. - pub system: String, - /// volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] - pub volume_name: Option, -} - -/// secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesScaleIoSecretRef { - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, -} - -/// secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesSecret { - /// defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] - pub default_mode: Option, - /// items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub items: Option>, - /// optional field specify whether the Secret or its keys must be defined - #[serde(default, skip_serializing_if = "Option::is_none")] - pub optional: Option, - /// secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")] - pub secret_name: Option, -} - -/// Maps a string key to a path within a volume. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesSecretItems { - /// key is the key to project. - pub key: String, - /// mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub mode: Option, - /// path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - pub path: String, -} - -/// storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesStorageos { - /// fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] - pub read_only: Option, - /// secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] - pub secret_ref: Option, - /// volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] - pub volume_name: Option, - /// volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeNamespace")] - pub volume_namespace: Option, -} - -/// secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesStorageosSecretRef { - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, -} - -/// vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByInstancesVolumesVsphereVolume { - /// fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] - pub fs_type: Option, - /// storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyID")] - pub storage_policy_id: Option, - /// storagePolicyName is the storage Policy Based Management (SPBM) profile name. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "storagePolicyName")] - pub storage_policy_name: Option, - /// volumePath is the path that identifies vSphere volume vmdk - #[serde(rename = "volumePath")] - pub volume_path: String, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByServices { - /// If ServiceType is LoadBalancer, cloud provider related parameters can be put here. More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub annotations: Option>, - /// References the component service name defined in the ComponentDefinition.Spec.Services[x].Name. - pub name: String, - /// Indicates whether to generate individual services for each pod. If set to true, a separate service will be created for each pod in the cluster. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "podService")] - pub pod_service: Option, - /// Determines how the Service is exposed. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. - /// - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. - /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceType")] - pub service_type: Option, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum OpsRequestStatusComponentsOverrideByServicesServiceType { - #[serde(rename = "ClusterIP")] - ClusterIp, - NodePort, - LoadBalancer, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsOverrideByVolumeClaimTemplates { - /// A reference to the volumeClaimTemplate name from the cluster components. - pub name: String, - /// Specifies the requested storage size for the volume. - pub storage: IntOrString, -} - -/// Records the status information of components changed due to the operation request. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum OpsRequestStatusComponentsPhase { - Creating, - Running, - Updating, - Stopping, - Stopped, - Deleting, - Failed, - Abnormal, -} - -/// Specifies the outcome of the preConditions check for the opsRequest. This result is crucial for determining the next steps in the operation. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsPreCheck { - /// Provides additional details about the preCheck operation in a human-readable format. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub message: Option, - /// Indicates whether the preCheck operation was successful or not. - pub pass: bool, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsProgressDetails { - /// Refer to the action name of the OpsDefinition.spec.actions[*].name. either objectKey or actionName. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "actionName")] - pub action_name: Option, - /// Records the tasks associated with an action. such as Jobs/Pods that executes action. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "actionTasks")] - pub action_tasks: Option>, - /// Represents the completion time of object processing. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "endTime")] - pub end_time: Option, - /// Specifies the group to which the current object belongs. If the objects of a component belong to the same group, they can be ignored. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub group: Option, - /// Provides a human-readable message detailing the condition of the object. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub message: Option, - /// Represents the unique key of the object. either objectKey or actionName. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "objectKey")] - pub object_key: Option, - /// Represents the start time of object processing. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "startTime")] - pub start_time: Option, - /// Indicates the state of processing the object. - pub status: OpsRequestStatusComponentsProgressDetailsStatus, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusComponentsProgressDetailsActionTasks { - /// Defines the namespace where the task workload is deployed. - pub namespace: String, - /// Specifies the name of the task workload. - #[serde(rename = "objectKey")] - pub object_key: String, - /// The number of retry attempts for this task. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub retries: Option, - /// Indicates the current status of the task. - pub status: OpsRequestStatusComponentsProgressDetailsActionTasksStatus, - /// The name of the target pod for the task. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPodName")] - pub target_pod_name: Option, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum OpsRequestStatusComponentsProgressDetailsActionTasksStatus { - Processing, - Failed, - Succeed, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum OpsRequestStatusComponentsProgressDetailsStatus { - Processing, - Pending, - Failed, - Succeed, -} - -/// Records the status information of components changed due to the operation request. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum OpsRequestStatusComponentsWorkloadType { - Stateless, - Stateful, - Consensus, - Replication, -} - -/// Records the last configuration before this operation took effect. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfiguration { - /// Specifies the reference to the ClusterVersion name. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterVersionRef")] - pub cluster_version_ref: Option, - /// Records the last configuration of the component. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub components: Option>, -} - -/// Records the last configuration of the component. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponents { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub claims: Option>, - /// Records the last instances of the component. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub instances: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - #[serde(default, skip_serializing_if = "Option::is_none")] - pub limits: Option>, - /// Records the last offline instances of the component. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "offlineInstances")] - pub offline_instances: Option>, - /// Represents the last replicas of the component. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub replicas: Option, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - #[serde(default, skip_serializing_if = "Option::is_none")] - pub requests: Option>, - /// Records the last services of the component. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub services: Option>, - /// Records the information about the target resources affected by the component. The resource key is in the list of [pods]. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetResources")] - pub target_resources: Option>, - /// Records the last volumeClaimTemplates of the component. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplates")] - pub volume_claim_templates: Option>, -} - -/// ResourceClaim references one entry in PodSpec.ResourceClaims. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. - pub name: String, -} - -/// InstanceTemplate allows customization of individual replica configurations within a Component, without altering the base component template defined in ClusterComponentSpec. It enables the application of distinct settings to specific instances (replicas), providing flexibility while maintaining a common configuration baseline. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstances { - /// Specifies a map of key-value pairs to be merged into the Pod's existing annotations. Existing keys will have their values overwritten, while new keys will be added to the annotations. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub annotations: Option>, - /// Defines Env to override. Add new or override existing envs. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub env: Option>, - /// Specifies an override for the first container's image in the pod. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub image: Option, - /// Specifies a map of key-value pairs that will be merged into the Pod's existing labels. Values for existing keys will be overwritten, and new keys will be added. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, - /// Name specifies the unique name of the instance Pod created using this InstanceTemplate. This name is constructed by concatenating the component's name, the template's name, and the instance's ordinal using the pattern: $(cluster.name)-$(component.name)-$(template.name)-$(ordinal). Ordinals start from 0. The specified name overrides any default naming conventions or patterns. - pub name: String, - /// Specifies the name of the node where the Pod should be scheduled. If set, the Pod will be directly assigned to the specified node, bypassing the Kubernetes scheduler. This is useful for controlling Pod placement on specific nodes. - /// Important considerations: - `nodeName` bypasses default scheduling constraints (e.g., resource requirements, node selectors, affinity rules). - It is the user's responsibility to ensure the node is suitable for the Pod. - If the node is unavailable, the Pod will remain in "Pending" state until the node is available or the Pod is deleted. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeName")] - pub node_name: Option, - /// Defines NodeSelector to override. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")] - pub node_selector: Option>, - /// Specifies the number of instances (Pods) to create from this InstanceTemplate. This field allows setting how many replicated instances of the component, with the specific overrides in the InstanceTemplate, are created. The default value is 1. A value of 0 disables instance creation. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub replicas: Option, - /// Specifies an override for the resource requirements of the first container in the Pod. This field allows for customizing resource allocation (CPU, memory, etc.) for the container. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resources: Option, - /// Tolerations specifies a list of tolerations to be applied to the Pod, allowing it to tolerate node taints. This field can be used to add new tolerations or override existing ones. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub tolerations: Option>, - /// Defines VolumeClaimTemplates to override. Add new or override existing volume claim templates. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplates")] - pub volume_claim_templates: Option>, - /// Defines VolumeMounts to override. Add new or override existing volume mounts of the first container in the pod. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] - pub volume_mounts: Option>, - /// Defines Volumes to override. Add new or override existing volumes. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub volumes: Option>, -} - -/// EnvVar represents an environment variable present in a Container. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesEnv { - /// Name of the environment variable. Must be a C_IDENTIFIER. - pub name: String, - /// Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". - #[serde(default, skip_serializing_if = "Option::is_none")] - pub value: Option, - /// Source for the environment variable's value. Cannot be used if value is not empty. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] - pub value_from: Option, -} - -/// Source for the environment variable's value. Cannot be used if value is not empty. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesEnvValueFrom { - /// Selects a key of a ConfigMap. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] - pub config_map_key_ref: Option, - /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] - pub field_ref: Option, - /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] - pub resource_field_ref: Option, - /// Selects a key of a secret in the pod's namespace - #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] - pub secret_key_ref: Option, -} - -/// Selects a key of a ConfigMap. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesEnvValueFromConfigMapKeyRef { - /// The key to select. - pub key: String, - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - /// Specify whether the ConfigMap or its key must be defined - #[serde(default, skip_serializing_if = "Option::is_none")] - pub optional: Option, -} - -/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesEnvValueFromFieldRef { - /// Version of the schema the FieldPath is written in terms of, defaults to "v1". - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] - pub api_version: Option, - /// Path of the field to select in the specified API version. - #[serde(rename = "fieldPath")] - pub field_path: String, -} - -/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesEnvValueFromResourceFieldRef { - /// Container name: required for volumes, optional for env vars - #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] - pub container_name: Option, - /// Specifies the output format of the exposed resources, defaults to "1" - #[serde(default, skip_serializing_if = "Option::is_none")] - pub divisor: Option, - /// Required: resource to select - pub resource: String, -} - -/// Selects a key of a secret in the pod's namespace -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesEnvValueFromSecretKeyRef { - /// The key of the secret to select from. Must be a valid secret key. - pub key: String, - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - /// Specify whether the Secret or its key must be defined - #[serde(default, skip_serializing_if = "Option::is_none")] - pub optional: Option, -} - -/// Specifies an override for the resource requirements of the first container in the Pod. This field allows for customizing resource allocation (CPU, memory, etc.) for the container. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - #[serde(default, skip_serializing_if = "Option::is_none")] - pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - #[serde(default, skip_serializing_if = "Option::is_none")] - pub requests: Option>, -} - -/// ResourceClaim references one entry in PodSpec.ResourceClaims. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. - pub name: String, -} - -/// The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesTolerations { - /// Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub effect: Option, - /// Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub key: Option, - /// Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub operator: Option, - /// TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")] - pub toleration_seconds: Option, - /// Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub value: Option, -} - -/// PersistentVolumeClaim is a user's request for and claim to a persistent volume -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeClaimTemplates { - /// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] - pub api_version: Option, - /// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - #[serde(default, skip_serializing_if = "Option::is_none")] - pub kind: Option, - /// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - #[serde(default, skip_serializing_if = "Option::is_none")] - pub metadata: Option, - /// spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - #[serde(default, skip_serializing_if = "Option::is_none")] - pub spec: Option, - /// status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option, -} - -/// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeClaimTemplatesMetadata { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub annotations: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub finalizers: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, -} - -/// spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeClaimTemplatesSpec { - /// accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] - pub access_modes: Option>, - /// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] - pub data_source: Option, - /// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] - pub data_source_ref: Option, - /// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources +pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeClaimTemplatesSpec { + /// Contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] + pub access_modes: Option>, + /// Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, - /// selector is a label query over volumes to consider for binding. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub selector: Option, - /// storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + /// The name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] pub storage_class_name: Option, - /// volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + /// Defines what type of volume is required by the claim, either Block or Filesystem. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] pub volume_mode: Option, - /// volumeName is the binding reference to the PersistentVolume backing this claim. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] - pub volume_name: Option, -} - -/// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeClaimTemplatesSpecDataSource { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, -} - -/// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeClaimTemplatesSpecDataSourceRef { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] - pub api_group: Option, - /// Kind is the type of resource being referenced - pub kind: String, - /// Name is the name of resource being referenced - pub name: String, - /// Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, } -/// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources +/// Represents the minimum resources the volume should have. If the RecoverVolumeExpansionFailure feature is enabled, users are allowed to specify resource requirements that are lower than the previous value but must still be higher than the capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeClaimTemplatesSpecResources { /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. @@ -3964,58 +2482,6 @@ pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeClaimTempla pub name: String, } -/// selector is a label query over volumes to consider for binding. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeClaimTemplatesSpecSelector { - /// matchExpressions is a list of label selector requirements. The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] - pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] - pub match_labels: Option>, -} - -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeClaimTemplatesSpecSelectorMatchExpressions { - /// key is the label key that the selector applies to. - pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub values: Option>, -} - -/// status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeClaimTemplatesStatus { - /// accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] - pub access_modes: Option>, - /// allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. - /// ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed" When this field is not set, it means that no resize operation is in progress for the given PVC. - /// A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. - /// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocatedResourceStatuses")] - pub allocated_resource_statuses: Option>, - /// allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as "example.com/my-custom-resource" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. - /// Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. - /// A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. - /// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocatedResources")] - pub allocated_resources: Option>, - /// capacity represents the actual resources of the underlying volume. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub capacity: Option>, - /// conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub conditions: Option>, - /// phase represents the current phase of PersistentVolumeClaim. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub phase: Option, -} - /// VolumeMount describes a mounting of a Volume within a container. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestStatusLastConfigurationComponentsInstancesVolumeMounts { @@ -5027,14 +3493,15 @@ pub struct OpsRequestStatusLastConfigurationComponentsServices { /// If ServiceType is LoadBalancer, cloud provider related parameters can be put here. More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer. #[serde(default, skip_serializing_if = "Option::is_none")] pub annotations: Option>, - /// References the component service name defined in the ComponentDefinition.Spec.Services[x].Name. + /// References the component service name defined in the `componentDefinition.spec.services[*].name`. pub name: String, /// Indicates whether to generate individual services for each pod. If set to true, a separate service will be created for each pod in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "podService")] pub pod_service: Option, /// Determines how the Service is exposed. Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`. - /// - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. - /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types. + /// - `ClusterIP` allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. - `NodePort` builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. - `LoadBalancer` builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. + /// Note: although K8s Service type allows the 'ExternalName' type, it is not a valid option for ClusterComponentService. + /// For more info, see: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types. #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceType")] pub service_type: Option, } @@ -5049,9 +3516,9 @@ pub enum OpsRequestStatusLastConfigurationComponentsServicesServiceType { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestStatusLastConfigurationComponentsVolumeClaimTemplates { - /// A reference to the volumeClaimTemplate name from the cluster components. + /// Specify the name of the volumeClaimTemplate in the Component. The specified name must match one of the volumeClaimTemplates defined in the `clusterComponentSpec.volumeClaimTemplates` field. pub name: String, - /// Specifies the requested storage size for the volume. + /// Specifies the desired storage size for the volume. pub storage: IntOrString, } @@ -5063,6 +3530,7 @@ pub enum OpsRequestStatusPhase { Running, Cancelling, Cancelled, + Aborted, Failed, Succeed, } @@ -5070,7 +3538,7 @@ pub enum OpsRequestStatusPhase { /// Deprecated: Replaced by ReconfiguringStatusAsComponent. Defines the status information of reconfiguring. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestStatusReconfiguringStatus { - /// Describes the reconfiguring detail status. + /// Describes the reconfiguring detail status. Possible condition types include "Creating", "Init", "Running", "Pending", "Merged", "MergeFailed", "FailedAndPause", "Upgrading", "Deleting", "FailedAndRetry", "Finished", "ReconfigurePersisting", "ReconfigurePersisted". #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, /// Describes the status of the component reconfiguring. @@ -5080,27 +3548,28 @@ pub struct OpsRequestStatusReconfiguringStatus { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestStatusReconfiguringStatusConfigurationStatus { - /// Specifies the number of expected reconfigurations. + /// Represents the total count of pods intended to be updated by a configuration change. #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedCount")] pub expected_count: Option, /// Stores the last applied configuration. #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastAppliedConfiguration")] pub last_applied_configuration: Option>, - /// Records the last status of the reconfiguration controller. + /// Records the last state of the reconfiguration finite state machine. Possible values include "None", "Retry", "Failed", "NotSupport", "FailedAndRetry". + /// - "None" describes fsm has finished and quit. - "Retry" describes fsm is running. - "Failed" describes fsm is failed and exited. - "NotSupport" describes fsm does not support the feature. - "FailedAndRetry" describes fsm is failed in current state, but can be retried. #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastStatus")] pub last_status: Option, /// Provides details about the operation. #[serde(default, skip_serializing_if = "Option::is_none")] pub message: Option, - /// Specifies the name of the configuration template. + /// Indicates the name of the configuration template (as ConfigMap). pub name: String, - /// Indicates the current state of the reconfiguration state machine. + /// Represents the current state of the reconfiguration state machine. Possible values include "Creating", "Init", "Running", "Pending", "Merged", "MergeFailed", "FailedAndPause", "Upgrading", "Deleting", "FailedAndRetry", "Finished", "ReconfigurePersisting", "ReconfigurePersisted". #[serde(default, skip_serializing_if = "Option::is_none")] pub status: Option, - /// Counts the number of successful reconfigurations. + /// Records the number of pods successfully updated following a configuration change. #[serde(default, skip_serializing_if = "Option::is_none", rename = "succeedCount")] pub succeed_count: Option, - /// Defines the policy for reconfiguration. + /// Records the UpgradePolicy of the configuration change operation. #[serde(default, skip_serializing_if = "Option::is_none", rename = "updatePolicy")] pub update_policy: Option, /// Contains the updated parameters. @@ -5127,21 +3596,21 @@ pub enum OpsRequestStatusReconfiguringStatusConfigurationStatusUpdatePolicy { /// Contains the updated parameters. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestStatusReconfiguringStatusConfigurationStatusUpdatedParameters { - /// Lists the keys that have been added. + /// Maps newly added configuration files to their content. #[serde(default, skip_serializing_if = "Option::is_none", rename = "addedKeys")] pub added_keys: Option>, - /// Lists the keys that have been deleted. + /// Lists the name of configuration files that have been deleted. #[serde(default, skip_serializing_if = "Option::is_none", rename = "deletedKeys")] pub deleted_keys: Option>, - /// Lists the keys that have been updated. + /// Maps the name of configuration files to their updated content, detailing the changes made. #[serde(default, skip_serializing_if = "Option::is_none", rename = "updatedKeys")] pub updated_keys: Option>, } -/// Represents the status information of reconfiguring. +/// Records the status of a reconfiguring operation if `opsRequest.spec.type` equals to "Reconfiguring". #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestStatusReconfiguringStatusAsComponent { - /// Describes the reconfiguring detail status. + /// Describes the reconfiguring detail status. Possible condition types include "Creating", "Init", "Running", "Pending", "Merged", "MergeFailed", "FailedAndPause", "Upgrading", "Deleting", "FailedAndRetry", "Finished", "ReconfigurePersisting", "ReconfigurePersisted". #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, /// Describes the status of the component reconfiguring. @@ -5151,27 +3620,28 @@ pub struct OpsRequestStatusReconfiguringStatusAsComponent { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestStatusReconfiguringStatusAsComponentConfigurationStatus { - /// Specifies the number of expected reconfigurations. + /// Represents the total count of pods intended to be updated by a configuration change. #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedCount")] pub expected_count: Option, /// Stores the last applied configuration. #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastAppliedConfiguration")] pub last_applied_configuration: Option>, - /// Records the last status of the reconfiguration controller. + /// Records the last state of the reconfiguration finite state machine. Possible values include "None", "Retry", "Failed", "NotSupport", "FailedAndRetry". + /// - "None" describes fsm has finished and quit. - "Retry" describes fsm is running. - "Failed" describes fsm is failed and exited. - "NotSupport" describes fsm does not support the feature. - "FailedAndRetry" describes fsm is failed in current state, but can be retried. #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastStatus")] pub last_status: Option, /// Provides details about the operation. #[serde(default, skip_serializing_if = "Option::is_none")] pub message: Option, - /// Specifies the name of the configuration template. + /// Indicates the name of the configuration template (as ConfigMap). pub name: String, - /// Indicates the current state of the reconfiguration state machine. + /// Represents the current state of the reconfiguration state machine. Possible values include "Creating", "Init", "Running", "Pending", "Merged", "MergeFailed", "FailedAndPause", "Upgrading", "Deleting", "FailedAndRetry", "Finished", "ReconfigurePersisting", "ReconfigurePersisted". #[serde(default, skip_serializing_if = "Option::is_none")] pub status: Option, - /// Counts the number of successful reconfigurations. + /// Records the number of pods successfully updated following a configuration change. #[serde(default, skip_serializing_if = "Option::is_none", rename = "succeedCount")] pub succeed_count: Option, - /// Defines the policy for reconfiguration. + /// Records the UpgradePolicy of the configuration change operation. #[serde(default, skip_serializing_if = "Option::is_none", rename = "updatePolicy")] pub update_policy: Option, /// Contains the updated parameters. @@ -5198,13 +3668,13 @@ pub enum OpsRequestStatusReconfiguringStatusAsComponentConfigurationStatusUpdate /// Contains the updated parameters. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct OpsRequestStatusReconfiguringStatusAsComponentConfigurationStatusUpdatedParameters { - /// Lists the keys that have been added. + /// Maps newly added configuration files to their content. #[serde(default, skip_serializing_if = "Option::is_none", rename = "addedKeys")] pub added_keys: Option>, - /// Lists the keys that have been deleted. + /// Lists the name of configuration files that have been deleted. #[serde(default, skip_serializing_if = "Option::is_none", rename = "deletedKeys")] pub deleted_keys: Option>, - /// Lists the keys that have been updated. + /// Maps the name of configuration files to their updated content, detailing the changes made. #[serde(default, skip_serializing_if = "Option::is_none", rename = "updatedKeys")] pub updated_keys: Option>, } diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1beta1/configconstraints.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1beta1/configconstraints.rs index 5ce2e61df..19b11890f 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1beta1/configconstraints.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1beta1/configconstraints.rs @@ -377,8 +377,16 @@ pub struct ConfigConstraintReloadToolsImage { /// ToolConfig specifies the settings of an init container that prepare tools for dynamic reload. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ConfigConstraintReloadToolsImageToolConfigs { + /// Indicates whether the tool image should be used as the container image for a sidecar. This is useful for large tool images, such as those for C++ tools, which may depend on numerous libraries (e.g., *.so files). + /// If enabled, the tool image is deployed as a sidecar container image. + /// Examples: ```yaml reloadToolsImage: mountPoint: /kb_tools toolConfigs: - name: kb-tools asContainerImage: true image: apecloud/oceanbase:4.2.0.0-100010032023083021 ``` + /// generated containers: ```yaml initContainers: - name: install-config-manager-tool image: apecloud/kubeblocks-tools:${version} command: - cp - /bin/config_render - /opt/tools volumemounts: - name: kb-tools mountpath: /opt/tools + /// containers: - name: config-manager image: apecloud/oceanbase:4.2.0.0-100010032023083021 imagePullPolicy: IfNotPresent command: - /opt/tools/reloader - --log-level - info - --operator-update-enable - --tcp - "9901" - --config - /opt/config-manager/config-manager.yaml volumemounts: - name: kb-tools mountpath: /opt/tools ``` + #[serde(default, skip_serializing_if = "Option::is_none", rename = "asContainerImage")] + pub as_container_image: Option, /// Specifies the command to be executed by the init container. - pub command: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, /// Specifies the tool container image. #[serde(default, skip_serializing_if = "Option::is_none")] pub image: Option, diff --git a/kube-custom-resources-rs/src/asdb_aerospike_com/v1/aerospikeclusters.rs b/kube-custom-resources-rs/src/asdb_aerospike_com/v1/aerospikeclusters.rs index d93053356..b843a7309 100644 --- a/kube-custom-resources-rs/src/asdb_aerospike_com/v1/aerospikeclusters.rs +++ b/kube-custom-resources-rs/src/asdb_aerospike_com/v1/aerospikeclusters.rs @@ -5244,6 +5244,9 @@ pub struct AerospikeClusterStatus { /// AerospikeNetworkPolicy specifies how clients and tools access the Aerospike cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "aerospikeNetworkPolicy")] pub aerospike_network_policy: Option, + /// EnableDynamicConfigUpdate enables dynamic config update flow of the operator. If enabled, operator will try to update the Aerospike config dynamically. In case of inconsistent state during dynamic config update, operator falls back to rolling restart. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "enableDynamicConfigUpdate")] + pub enable_dynamic_config_update: Option, /// Aerospike server image #[serde(default, skip_serializing_if = "Option::is_none")] pub image: Option, diff --git a/kube-custom-resources-rs/src/cilium_io/v2/ciliumlocalredirectpolicies.rs b/kube-custom-resources-rs/src/cilium_io/v2/ciliumlocalredirectpolicies.rs index 15d112c22..a2a37ab96 100644 --- a/kube-custom-resources-rs/src/cilium_io/v2/ciliumlocalredirectpolicies.rs +++ b/kube-custom-resources-rs/src/cilium_io/v2/ciliumlocalredirectpolicies.rs @@ -21,6 +21,11 @@ pub struct CiliumLocalRedirectPolicySpec { /// RedirectFrontend specifies frontend configuration to redirect traffic from. It can not be empty. #[serde(rename = "redirectFrontend")] pub redirect_frontend: CiliumLocalRedirectPolicyRedirectFrontend, + /// SkipRedirectFromBackend indicates whether traffic matching RedirectFrontend from RedirectBackend should skip redirection, and hence the traffic will be forwarded as-is. + /// The default is false which means traffic matching RedirectFrontend will get redirected from all pods, including the RedirectBackend(s). + /// Example: If RedirectFrontend is configured to "169.254.169.254:80" as the traffic that needs to be redirected to backends selected by RedirectBackend, if SkipRedirectFromBackend is set to true, traffic going to "169.254.169.254:80" from such backends will not be redirected back to the backends. Instead, the matched traffic from the backends will be forwarded to the original destination "169.254.169.254:80". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "skipRedirectFromBackend")] + pub skip_redirect_from_backend: Option, } /// RedirectBackend specifies backend configuration to redirect traffic to. It can not be empty. diff --git a/kube-custom-resources-rs/src/cloudwatch_aws_amazon_com/v1alpha1/amazoncloudwatchagents.rs b/kube-custom-resources-rs/src/cloudwatch_aws_amazon_com/v1alpha1/amazoncloudwatchagents.rs index 9e6833dd9..25825feb4 100644 --- a/kube-custom-resources-rs/src/cloudwatch_aws_amazon_com/v1alpha1/amazoncloudwatchagents.rs +++ b/kube-custom-resources-rs/src/cloudwatch_aws_amazon_com/v1alpha1/amazoncloudwatchagents.rs @@ -134,6 +134,9 @@ pub struct AmazonCloudWatchAgentSpec { /// Volumes represents which volumes to use in the underlying collector deployment(s). #[serde(default, skip_serializing_if = "Option::is_none")] pub volumes: Option>, + /// WorkingDir represents Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] + pub working_dir: Option, } /// A single application container that you want to run within a pod. diff --git a/kube-custom-resources-rs/src/core_openfeature_dev/v1alpha1/featureflagconfigurations.rs b/kube-custom-resources-rs/src/core_openfeature_dev/v1alpha1/featureflagconfigurations.rs index 2839b08e6..6e94e4e14 100644 --- a/kube-custom-resources-rs/src/core_openfeature_dev/v1alpha1/featureflagconfigurations.rs +++ b/kube-custom-resources-rs/src/core_openfeature_dev/v1alpha1/featureflagconfigurations.rs @@ -40,7 +40,15 @@ pub struct FeatureFlagConfigurationFlagDSpec { pub struct FeatureFlagConfigurationFlagDSpecEnvs { /// Name of the environment variable. Must be a C_IDENTIFIER. pub name: String, - /// Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". + /// Variable references $(VAR_NAME) are expanded + /// using the previously defined environment variables in the container and + /// any service environment variables. If a variable cannot be resolved, + /// the reference in the input string will be unchanged. Double $$ are reduced + /// to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + /// "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + /// Escaped references will never be expanded, regardless of whether the variable + /// exists or not. + /// Defaults to "". #[serde(default, skip_serializing_if = "Option::is_none")] pub value: Option, /// Source for the environment variable's value. Cannot be used if value is not empty. @@ -54,10 +62,12 @@ pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFrom { /// Selects a key of a ConfigMap. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] pub config_map_key_ref: Option, - /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + /// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, - /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + /// Selects a resource of the container: only resources limits and requests + /// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] pub resource_field_ref: Option, /// Selects a key of a secret in the pod's namespace @@ -70,7 +80,9 @@ pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFrom { pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromConfigMapKeyRef { /// The key to select. pub key: String, - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap or its key must be defined @@ -78,7 +90,8 @@ pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromConfigMapKeyRef { pub optional: Option, } -/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. +/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, +/// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -89,7 +102,8 @@ pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromFieldRef { pub field_path: String, } -/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. +/// Selects a resource of the container: only resources limits and requests +/// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromResourceFieldRef { /// Container name: required for volumes, optional for env vars @@ -107,7 +121,9 @@ pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromResourceFieldRef { pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromSecretKeyRef { /// The key of the secret to select from. Must be a valid secret key. pub key: String, - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret or its key must be defined @@ -118,36 +134,78 @@ pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromSecretKeyRef { /// ServiceProvider [DEPRECATED]: superseded by FlagSourceConfiguration #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct FeatureFlagConfigurationServiceProvider { - /// ObjectReference contains enough information to let you inspect or modify the referred object. --- New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". Those cannot be well described when embedded. 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple and the version of the actual struct is irrelevant. 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. - /// Instead of using this type, create a locally provided and used type that is well-focused on your reference. For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 . + /// ObjectReference contains enough information to let you inspect or modify the referred object. + /// --- + /// New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. + /// 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. + /// 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular + /// restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". + /// Those cannot be well described when embedded. + /// 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. + /// 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity + /// during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple + /// and the version of the actual struct is irrelevant. + /// 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type + /// will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. + /// + /// + /// Instead of using this type, create a locally provided and used type that is well-focused on your reference. + /// For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 . #[serde(default, skip_serializing_if = "Option::is_none")] pub credentials: Option, pub name: FeatureFlagConfigurationServiceProviderName, } -/// ObjectReference contains enough information to let you inspect or modify the referred object. --- New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". Those cannot be well described when embedded. 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple and the version of the actual struct is irrelevant. 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. -/// Instead of using this type, create a locally provided and used type that is well-focused on your reference. For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 . +/// ObjectReference contains enough information to let you inspect or modify the referred object. +/// --- +/// New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. +/// 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. +/// 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular +/// restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". +/// Those cannot be well described when embedded. +/// 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. +/// 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity +/// during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple +/// and the version of the actual struct is irrelevant. +/// 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type +/// will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. +/// +/// +/// Instead of using this type, create a locally provided and used type that is well-focused on your reference. +/// For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 . #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct FeatureFlagConfigurationServiceProviderCredentials { /// API version of the referent. #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] pub api_version: Option, - /// If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. + /// If referring to a piece of an object instead of an entire object, this string + /// should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + /// For example, if the object reference is to a container within a pod, this would take on a value like: + /// "spec.containers{name}" (where "name" refers to the name of the container that triggered + /// the event) or if no container name is specified "spec.containers[2]" (container with + /// index 2 in this pod). This syntax is chosen only to have some well-defined way of + /// referencing a part of an object. + /// TODO: this design is not final and this field is subject to change in the future. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldPath")] pub field_path: Option, - /// Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + /// Kind of the referent. + /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds #[serde(default, skip_serializing_if = "Option::is_none")] pub kind: Option, - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, - /// Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + /// Namespace of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, - /// Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + /// Specific resourceVersion to which this reference is made, if any. + /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceVersion")] pub resource_version: Option, - /// UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + /// UID of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids #[serde(default, skip_serializing_if = "Option::is_none")] pub uid: Option, } diff --git a/kube-custom-resources-rs/src/core_openfeature_dev/v1alpha2/featureflagconfigurations.rs b/kube-custom-resources-rs/src/core_openfeature_dev/v1alpha2/featureflagconfigurations.rs index 53e451602..f7230ecdd 100644 --- a/kube-custom-resources-rs/src/core_openfeature_dev/v1alpha2/featureflagconfigurations.rs +++ b/kube-custom-resources-rs/src/core_openfeature_dev/v1alpha2/featureflagconfigurations.rs @@ -71,7 +71,15 @@ pub struct FeatureFlagConfigurationFlagDSpec { pub struct FeatureFlagConfigurationFlagDSpecEnvs { /// Name of the environment variable. Must be a C_IDENTIFIER. pub name: String, - /// Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". + /// Variable references $(VAR_NAME) are expanded + /// using the previously defined environment variables in the container and + /// any service environment variables. If a variable cannot be resolved, + /// the reference in the input string will be unchanged. Double $$ are reduced + /// to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + /// "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + /// Escaped references will never be expanded, regardless of whether the variable + /// exists or not. + /// Defaults to "". #[serde(default, skip_serializing_if = "Option::is_none")] pub value: Option, /// Source for the environment variable's value. Cannot be used if value is not empty. @@ -85,10 +93,12 @@ pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFrom { /// Selects a key of a ConfigMap. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] pub config_map_key_ref: Option, - /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + /// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, - /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + /// Selects a resource of the container: only resources limits and requests + /// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] pub resource_field_ref: Option, /// Selects a key of a secret in the pod's namespace @@ -101,7 +111,9 @@ pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFrom { pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromConfigMapKeyRef { /// The key to select. pub key: String, - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap or its key must be defined @@ -109,7 +121,8 @@ pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromConfigMapKeyRef { pub optional: Option, } -/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. +/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, +/// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -120,7 +133,8 @@ pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromFieldRef { pub field_path: String, } -/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. +/// Selects a resource of the container: only resources limits and requests +/// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromResourceFieldRef { /// Container name: required for volumes, optional for env vars @@ -138,7 +152,9 @@ pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromResourceFieldRef { pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromSecretKeyRef { /// The key of the secret to select from. Must be a valid secret key. pub key: String, - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret or its key must be defined @@ -149,15 +165,25 @@ pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromSecretKeyRef { /// Resources defines flagd sidecar resources. Default to operator sidecar-cpu-* and sidecar-ram-* flags. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct FeatureFlagConfigurationResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. + /// Claims lists the names of resources, defined in spec.resourceClaims, + /// that are used by this container. + /// + /// + /// This is an alpha field and requires enabling the + /// DynamicResourceAllocation feature gate. + /// + /// + /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Limits describes the maximum amount of compute resources allowed. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Requests describes the minimum amount of compute resources required. + /// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + /// otherwise to an implementation-defined value. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } @@ -165,43 +191,87 @@ pub struct FeatureFlagConfigurationResources { /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct FeatureFlagConfigurationResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + /// Name must match the name of one entry in pod.spec.resourceClaims of + /// the Pod where this field is used. It makes that resource available + /// inside a container. pub name: String, } /// ServiceProvider [DEPRECATED]: superseded by FlagSourceConfiguration #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct FeatureFlagConfigurationServiceProvider { - /// ObjectReference contains enough information to let you inspect or modify the referred object. --- New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". Those cannot be well described when embedded. 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple and the version of the actual struct is irrelevant. 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. - /// Instead of using this type, create a locally provided and used type that is well-focused on your reference. For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 . + /// ObjectReference contains enough information to let you inspect or modify the referred object. + /// --- + /// New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. + /// 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. + /// 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular + /// restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". + /// Those cannot be well described when embedded. + /// 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. + /// 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity + /// during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple + /// and the version of the actual struct is irrelevant. + /// 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type + /// will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. + /// + /// + /// Instead of using this type, create a locally provided and used type that is well-focused on your reference. + /// For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 . #[serde(default, skip_serializing_if = "Option::is_none")] pub credentials: Option, pub name: FeatureFlagConfigurationServiceProviderName, } -/// ObjectReference contains enough information to let you inspect or modify the referred object. --- New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". Those cannot be well described when embedded. 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple and the version of the actual struct is irrelevant. 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. -/// Instead of using this type, create a locally provided and used type that is well-focused on your reference. For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 . +/// ObjectReference contains enough information to let you inspect or modify the referred object. +/// --- +/// New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. +/// 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. +/// 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular +/// restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". +/// Those cannot be well described when embedded. +/// 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. +/// 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity +/// during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple +/// and the version of the actual struct is irrelevant. +/// 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type +/// will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. +/// +/// +/// Instead of using this type, create a locally provided and used type that is well-focused on your reference. +/// For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 . #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct FeatureFlagConfigurationServiceProviderCredentials { /// API version of the referent. #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] pub api_version: Option, - /// If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. + /// If referring to a piece of an object instead of an entire object, this string + /// should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + /// For example, if the object reference is to a container within a pod, this would take on a value like: + /// "spec.containers{name}" (where "name" refers to the name of the container that triggered + /// the event) or if no container name is specified "spec.containers[2]" (container with + /// index 2 in this pod). This syntax is chosen only to have some well-defined way of + /// referencing a part of an object. + /// TODO: this design is not final and this field is subject to change in the future. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldPath")] pub field_path: Option, - /// Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + /// Kind of the referent. + /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds #[serde(default, skip_serializing_if = "Option::is_none")] pub kind: Option, - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, - /// Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + /// Namespace of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, - /// Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + /// Specific resourceVersion to which this reference is made, if any. + /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceVersion")] pub resource_version: Option, - /// UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + /// UID of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids #[serde(default, skip_serializing_if = "Option::is_none")] pub uid: Option, } diff --git a/kube-custom-resources-rs/src/devices_kubeedge_io/v1beta1/devicemodels.rs b/kube-custom-resources-rs/src/devices_kubeedge_io/v1beta1/devicemodels.rs index 4ec8ae64a..484160e4e 100644 --- a/kube-custom-resources-rs/src/devices_kubeedge_io/v1beta1/devicemodels.rs +++ b/kube-custom-resources-rs/src/devices_kubeedge_io/v1beta1/devicemodels.rs @@ -32,10 +32,10 @@ pub struct DeviceModelProperties { pub maximum: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub minimum: Option, - /// Required: The device property name. + /// Required: The device property name. Note: If you need to use the built-in stream data processing function, you need to define Name as saveFrame or saveVideo #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, - /// Required: Type of device property, ENUM: INT,FLOAT,DOUBLE,STRING,BOOLEAN,BYTES + /// Required: Type of device property, ENUM: INT,FLOAT,DOUBLE,STRING,BOOLEAN,BYTES,STREAM #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] pub r#type: Option, /// The unit of the property @@ -65,5 +65,7 @@ pub enum DeviceModelPropertiesType { Boolean, #[serde(rename = "BYTES")] Bytes, + #[serde(rename = "STREAM")] + Stream, } diff --git a/kube-custom-resources-rs/src/devices_kubeedge_io/v1beta1/devices.rs b/kube-custom-resources-rs/src/devices_kubeedge_io/v1beta1/devices.rs index 18a3c697c..ee2c53130 100644 --- a/kube-custom-resources-rs/src/devices_kubeedge_io/v1beta1/devices.rs +++ b/kube-custom-resources-rs/src/devices_kubeedge_io/v1beta1/devices.rs @@ -43,7 +43,7 @@ pub struct DeviceProperties { /// The desired property value. #[serde(default, skip_serializing_if = "Option::is_none")] pub desired: Option, - /// Required: The device property name to be accessed. It must be unique. + /// Required: The device property name to be accessed. It must be unique. Note: If you need to use the built-in stream data processing function, you need to define Name as saveFrame or saveVideo #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// PushMethod represents the protocol used to push data, please ensure that the mapper can access the destination address. @@ -93,6 +93,8 @@ pub struct DevicePropertiesPushMethodDbMethod { #[serde(default, skip_serializing_if = "Option::is_none")] pub influxdb2: Option, #[serde(default, skip_serializing_if = "Option::is_none")] + pub mysql: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] pub redis: Option, } @@ -153,6 +155,25 @@ pub struct DevicePropertiesPushMethodDbMethodInfluxdb2Influxdb2DataConfig { pub tag: Option>, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct DevicePropertiesPushMethodDbMethodMysql { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mysqlClientConfig")] + pub mysql_client_config: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct DevicePropertiesPushMethodDbMethodMysqlMysqlClientConfig { + /// mysql address,like localhost:3306 + #[serde(default, skip_serializing_if = "Option::is_none")] + pub addr: Option, + /// database name + #[serde(default, skip_serializing_if = "Option::is_none")] + pub database: Option, + /// user name + #[serde(default, skip_serializing_if = "Option::is_none", rename = "userName")] + pub user_name: Option, +} + #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct DevicePropertiesPushMethodDbMethodRedis { /// RedisClientConfig of redis database diff --git a/kube-custom-resources-rs/src/ec2_services_k8s_aws/v1alpha1/securitygroups.rs b/kube-custom-resources-rs/src/ec2_services_k8s_aws/v1alpha1/securitygroups.rs index b32ded04c..39af287b8 100644 --- a/kube-custom-resources-rs/src/ec2_services_k8s_aws/v1alpha1/securitygroups.rs +++ b/kube-custom-resources-rs/src/ec2_services_k8s_aws/v1alpha1/securitygroups.rs @@ -123,6 +123,9 @@ pub struct SecurityGroupEgressRulesUserIdGroupPairs { pub group_id: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "groupName")] pub group_name: Option, + /// Reference field for GroupName + #[serde(default, skip_serializing_if = "Option::is_none", rename = "groupRef")] + pub group_ref: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "peeringStatus")] pub peering_status: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "userID")] @@ -131,6 +134,43 @@ pub struct SecurityGroupEgressRulesUserIdGroupPairs { pub vpc_id: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "vpcPeeringConnectionID")] pub vpc_peering_connection_id: Option, + /// Reference field for VPCID + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vpcRef")] + pub vpc_ref: Option, +} + +/// Reference field for GroupName +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SecurityGroupEgressRulesUserIdGroupPairsGroupRef { + /// AWSResourceReference provides all the values necessary to reference another + /// k8s resource for finding the identifier(Id/ARN/Name) + #[serde(default, skip_serializing_if = "Option::is_none")] + pub from: Option, +} + +/// AWSResourceReference provides all the values necessary to reference another +/// k8s resource for finding the identifier(Id/ARN/Name) +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SecurityGroupEgressRulesUserIdGroupPairsGroupRefFrom { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +/// Reference field for VPCID +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SecurityGroupEgressRulesUserIdGroupPairsVpcRef { + /// AWSResourceReference provides all the values necessary to reference another + /// k8s resource for finding the identifier(Id/ARN/Name) + #[serde(default, skip_serializing_if = "Option::is_none")] + pub from: Option, +} + +/// AWSResourceReference provides all the values necessary to reference another +/// k8s resource for finding the identifier(Id/ARN/Name) +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SecurityGroupEgressRulesUserIdGroupPairsVpcRefFrom { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, } /// Describes a set of permissions for a security group rule. @@ -194,6 +234,9 @@ pub struct SecurityGroupIngressRulesUserIdGroupPairs { pub group_id: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "groupName")] pub group_name: Option, + /// Reference field for GroupName + #[serde(default, skip_serializing_if = "Option::is_none", rename = "groupRef")] + pub group_ref: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "peeringStatus")] pub peering_status: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "userID")] @@ -202,6 +245,43 @@ pub struct SecurityGroupIngressRulesUserIdGroupPairs { pub vpc_id: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "vpcPeeringConnectionID")] pub vpc_peering_connection_id: Option, + /// Reference field for VPCID + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vpcRef")] + pub vpc_ref: Option, +} + +/// Reference field for GroupName +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SecurityGroupIngressRulesUserIdGroupPairsGroupRef { + /// AWSResourceReference provides all the values necessary to reference another + /// k8s resource for finding the identifier(Id/ARN/Name) + #[serde(default, skip_serializing_if = "Option::is_none")] + pub from: Option, +} + +/// AWSResourceReference provides all the values necessary to reference another +/// k8s resource for finding the identifier(Id/ARN/Name) +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SecurityGroupIngressRulesUserIdGroupPairsGroupRefFrom { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +/// Reference field for VPCID +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SecurityGroupIngressRulesUserIdGroupPairsVpcRef { + /// AWSResourceReference provides all the values necessary to reference another + /// k8s resource for finding the identifier(Id/ARN/Name) + #[serde(default, skip_serializing_if = "Option::is_none")] + pub from: Option, +} + +/// AWSResourceReference provides all the values necessary to reference another +/// k8s resource for finding the identifier(Id/ARN/Name) +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SecurityGroupIngressRulesUserIdGroupPairsVpcRefFrom { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, } /// Describes a tag. diff --git a/kube-custom-resources-rs/src/elasticsearch_k8s_elastic_co/v1/elasticsearches.rs b/kube-custom-resources-rs/src/elasticsearch_k8s_elastic_co/v1/elasticsearches.rs index 034ac0682..d28f3f12a 100644 --- a/kube-custom-resources-rs/src/elasticsearch_k8s_elastic_co/v1/elasticsearches.rs +++ b/kube-custom-resources-rs/src/elasticsearch_k8s_elastic_co/v1/elasticsearches.rs @@ -69,6 +69,9 @@ pub struct ElasticsearchSpec { /// Auth contains user authentication and authorization security settings for Elasticsearch. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ElasticsearchAuth { + /// DisableElasticUser disables the default elastic user that is created by ECK. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "disableElasticUser")] + pub disable_elastic_user: Option, /// FileRealm to propagate to the Elasticsearch cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fileRealm")] pub file_realm: Option>, diff --git a/kube-custom-resources-rs/src/extensions_istio_io/v1alpha1/wasmplugins.rs b/kube-custom-resources-rs/src/extensions_istio_io/v1alpha1/wasmplugins.rs index 392274f91..3e06734aa 100644 --- a/kube-custom-resources-rs/src/extensions_istio_io/v1alpha1/wasmplugins.rs +++ b/kube-custom-resources-rs/src/extensions_istio_io/v1alpha1/wasmplugins.rs @@ -41,7 +41,7 @@ pub struct WasmPluginSpec { pub plugin_name: Option, /// Determines ordering of `WasmPlugins` in the same `phase`. #[serde(default, skip_serializing_if = "Option::is_none")] - pub priority: Option, + pub priority: Option, /// Criteria used to select the specific set of pods/VMs on which this plugin configuration should be applied. #[serde(default, skip_serializing_if = "Option::is_none")] pub selector: Option, diff --git a/kube-custom-resources-rs/src/externaldns_k8s_io/v1alpha1/dnsendpoints.rs b/kube-custom-resources-rs/src/externaldns_k8s_io/v1alpha1/dnsendpoints.rs index 6a2b0b0d6..73acb9fb5 100644 --- a/kube-custom-resources-rs/src/externaldns_k8s_io/v1alpha1/dnsendpoints.rs +++ b/kube-custom-resources-rs/src/externaldns_k8s_io/v1alpha1/dnsendpoints.rs @@ -32,7 +32,7 @@ pub struct DNSEndpointEndpoints { /// TTL for the record #[serde(default, skip_serializing_if = "Option::is_none", rename = "recordTTL")] pub record_ttl: Option, - /// RecordType type of record, e.g. CNAME, A, SRV, TXT etc + /// RecordType type of record, e.g. CNAME, A, AAAA, SRV, TXT etc #[serde(default, skip_serializing_if = "Option::is_none", rename = "recordType")] pub record_type: Option, /// Identifier to distinguish multiple records with the same name and type (e.g. Route53 records with routing policies other than 'simple') diff --git a/kube-custom-resources-rs/src/fluentbit_fluent_io/v1alpha2/clusteroutputs.rs b/kube-custom-resources-rs/src/fluentbit_fluent_io/v1alpha2/clusteroutputs.rs index edad3ff07..c1a989214 100644 --- a/kube-custom-resources-rs/src/fluentbit_fluent_io/v1alpha2/clusteroutputs.rs +++ b/kube-custom-resources-rs/src/fluentbit_fluent_io/v1alpha2/clusteroutputs.rs @@ -451,7 +451,7 @@ pub struct ClusterOutputCustomPlugin { pub struct ClusterOutputDatadog { /// Your Datadog API key. #[serde(default, skip_serializing_if = "Option::is_none")] - pub apikey: Option, + pub apikey: Option, /// Compress the payload in GZIP format. Datadog supports and recommends setting this to gzip. #[serde(default, skip_serializing_if = "Option::is_none")] pub compress: Option, @@ -490,6 +490,35 @@ pub struct ClusterOutputDatadog { pub tls: Option, } +/// Your Datadog API key. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ClusterOutputDatadogApikey { + /// ValueSource defines how to find a value's key. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +/// ValueSource defines how to find a value's key. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ClusterOutputDatadogApikeyValueFrom { + /// Selects a key of a secret in the pod's namespace + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +/// Selects a key of a secret in the pod's namespace +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ClusterOutputDatadogApikeyValueFromSecretKeyRef { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + /// Elasticsearch defines Elasticsearch Output configuration. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterOutputEs { diff --git a/kube-custom-resources-rs/src/fluentbit_fluent_io/v1alpha2/outputs.rs b/kube-custom-resources-rs/src/fluentbit_fluent_io/v1alpha2/outputs.rs index b6ad81cea..91d90942e 100644 --- a/kube-custom-resources-rs/src/fluentbit_fluent_io/v1alpha2/outputs.rs +++ b/kube-custom-resources-rs/src/fluentbit_fluent_io/v1alpha2/outputs.rs @@ -452,7 +452,7 @@ pub struct OutputCustomPlugin { pub struct OutputDatadog { /// Your Datadog API key. #[serde(default, skip_serializing_if = "Option::is_none")] - pub apikey: Option, + pub apikey: Option, /// Compress the payload in GZIP format. Datadog supports and recommends setting this to gzip. #[serde(default, skip_serializing_if = "Option::is_none")] pub compress: Option, @@ -491,6 +491,35 @@ pub struct OutputDatadog { pub tls: Option, } +/// Your Datadog API key. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct OutputDatadogApikey { + /// ValueSource defines how to find a value's key. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +/// ValueSource defines how to find a value's key. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct OutputDatadogApikeyValueFrom { + /// Selects a key of a secret in the pod's namespace + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +/// Selects a key of a secret in the pod's namespace +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct OutputDatadogApikeyValueFromSecretKeyRef { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + /// Elasticsearch defines Elasticsearch Output configuration. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct OutputEs { diff --git a/kube-custom-resources-rs/src/gateway_networking_k8s_io/v1/httproutes.rs b/kube-custom-resources-rs/src/gateway_networking_k8s_io/v1/httproutes.rs index 2192db30e..6b556f064 100644 --- a/kube-custom-resources-rs/src/gateway_networking_k8s_io/v1/httproutes.rs +++ b/kube-custom-resources-rs/src/gateway_networking_k8s_io/v1/httproutes.rs @@ -2450,6 +2450,12 @@ pub struct HTTPRouteRulesTimeouts { /// sent from the gateway to when the full response has been received from the backend. /// /// + /// Setting a timeout to the zero duration (e.g. "0s") SHOULD disable the timeout + /// completely. Implementations that cannot completely disable the timeout MUST + /// instead interpret the zero duration as the longest possible value to which + /// the timeout can be set. + /// + /// /// An entire client HTTP transaction with a gateway, covered by the Request timeout, /// may result in more than one call from the gateway to the destination backend, /// for example, if automatic retries are supported. @@ -2472,6 +2478,12 @@ pub struct HTTPRouteRulesTimeouts { /// to complete. /// /// + /// Setting a timeout to the zero duration (e.g. "0s") SHOULD disable the timeout + /// completely. Implementations that cannot completely disable the timeout MUST + /// instead interpret the zero duration as the longest possible value to which + /// the timeout can be set. + /// + /// /// This timeout is intended to cover as close to the whole request-response transaction /// as possible although an implementation MAY choose to start the timeout after the entire /// request stream has been received instead of immediately after the transaction is diff --git a/kube-custom-resources-rs/src/gateway_networking_k8s_io/v1beta1/httproutes.rs b/kube-custom-resources-rs/src/gateway_networking_k8s_io/v1beta1/httproutes.rs index 676dade48..b4e81e25c 100644 --- a/kube-custom-resources-rs/src/gateway_networking_k8s_io/v1beta1/httproutes.rs +++ b/kube-custom-resources-rs/src/gateway_networking_k8s_io/v1beta1/httproutes.rs @@ -2450,6 +2450,12 @@ pub struct HTTPRouteRulesTimeouts { /// sent from the gateway to when the full response has been received from the backend. /// /// + /// Setting a timeout to the zero duration (e.g. "0s") SHOULD disable the timeout + /// completely. Implementations that cannot completely disable the timeout MUST + /// instead interpret the zero duration as the longest possible value to which + /// the timeout can be set. + /// + /// /// An entire client HTTP transaction with a gateway, covered by the Request timeout, /// may result in more than one call from the gateway to the destination backend, /// for example, if automatic retries are supported. @@ -2472,6 +2478,12 @@ pub struct HTTPRouteRulesTimeouts { /// to complete. /// /// + /// Setting a timeout to the zero duration (e.g. "0s") SHOULD disable the timeout + /// completely. Implementations that cannot completely disable the timeout MUST + /// instead interpret the zero duration as the longest possible value to which + /// the timeout can be set. + /// + /// /// This timeout is intended to cover as close to the whole request-response transaction /// as possible although an implementation MAY choose to start the timeout after the entire /// request stream has been received instead of immediately after the transaction is diff --git a/kube-custom-resources-rs/src/helm_toolkit_fluxcd_io/v2beta2/helmreleases.rs b/kube-custom-resources-rs/src/helm_toolkit_fluxcd_io/v2beta2/helmreleases.rs index 6affe4c1f..5b13e34c7 100644 --- a/kube-custom-resources-rs/src/helm_toolkit_fluxcd_io/v2beta2/helmreleases.rs +++ b/kube-custom-resources-rs/src/helm_toolkit_fluxcd_io/v2beta2/helmreleases.rs @@ -277,6 +277,7 @@ pub struct HelmReleaseChartRef { pub enum HelmReleaseChartRefKind { #[serde(rename = "OCIRepository")] OciRepository, + HelmChart, } /// NamespacedObjectReference contains enough information to locate the referenced Kubernetes resource object in any diff --git a/kube-custom-resources-rs/src/image_toolkit_fluxcd_io/v1beta2/imageupdateautomations.rs b/kube-custom-resources-rs/src/image_toolkit_fluxcd_io/v1beta2/imageupdateautomations.rs new file mode 100644 index 000000000..7de7807f8 --- /dev/null +++ b/kube-custom-resources-rs/src/image_toolkit_fluxcd_io/v1beta2/imageupdateautomations.rs @@ -0,0 +1,296 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/fluxcd/image-automation-controller/image.toolkit.fluxcd.io/v1beta2/imageupdateautomations.yaml --derive=Default --derive=PartialEq +// kopium version: 0.18.0 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use std::collections::BTreeMap; +use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition; + +/// ImageUpdateAutomationSpec defines the desired state of ImageUpdateAutomation +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "image.toolkit.fluxcd.io", version = "v1beta2", kind = "ImageUpdateAutomation", plural = "imageupdateautomations")] +#[kube(namespaced)] +#[kube(status = "ImageUpdateAutomationStatus")] +#[kube(schema = "disabled")] +pub struct ImageUpdateAutomationSpec { + /// GitSpec contains all the git-specific definitions. This is + /// technically optional, but in practice mandatory until there are + /// other kinds of source allowed. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub git: Option, + /// Interval gives an lower bound for how often the automation + /// run should be attempted. + pub interval: String, + /// PolicySelector allows to filter applied policies based on labels. + /// By default includes all policies in namespace. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "policySelector")] + pub policy_selector: Option, + /// SourceRef refers to the resource giving access details + /// to a git repository. + #[serde(rename = "sourceRef")] + pub source_ref: ImageUpdateAutomationSourceRef, + /// Suspend tells the controller to not run this automation, until + /// it is unset (or set to false). Defaults to false. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub suspend: Option, + /// Update gives the specification for how to update the files in + /// the repository. This can be left empty, to use the default + /// value. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub update: Option, +} + +/// GitSpec contains all the git-specific definitions. This is +/// technically optional, but in practice mandatory until there are +/// other kinds of source allowed. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationGit { + /// Checkout gives the parameters for cloning the git repository, + /// ready to make changes. If not present, the `spec.ref` field from the + /// referenced `GitRepository` or its default will be used. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub checkout: Option, + /// Commit specifies how to commit to the git repository. + pub commit: ImageUpdateAutomationGitCommit, + /// Push specifies how and where to push commits made by the + /// automation. If missing, commits are pushed (back) to + /// `.spec.checkout.branch` or its default. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub push: Option, +} + +/// Checkout gives the parameters for cloning the git repository, +/// ready to make changes. If not present, the `spec.ref` field from the +/// referenced `GitRepository` or its default will be used. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationGitCheckout { + /// Reference gives a branch, tag or commit to clone from the Git + /// repository. + #[serde(rename = "ref")] + pub r#ref: ImageUpdateAutomationGitCheckoutRef, +} + +/// Reference gives a branch, tag or commit to clone from the Git +/// repository. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationGitCheckoutRef { + /// Branch to check out, defaults to 'master' if no other field is defined. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub branch: Option, + /// Commit SHA to check out, takes precedence over all reference fields. + /// + /// + /// This can be combined with Branch to shallow clone the branch, in which + /// the commit is expected to exist. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub commit: Option, + /// Name of the reference to check out; takes precedence over Branch, Tag and SemVer. + /// + /// + /// It must be a valid Git reference: https://git-scm.com/docs/git-check-ref-format#_description + /// Examples: "refs/heads/main", "refs/tags/v0.1.0", "refs/pull/420/head", "refs/merge-requests/1/head" + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// SemVer tag expression to check out, takes precedence over Tag. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub semver: Option, + /// Tag to check out, takes precedence over Branch. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tag: Option, +} + +/// Commit specifies how to commit to the git repository. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationGitCommit { + /// Author gives the email and optionally the name to use as the + /// author of commits. + pub author: ImageUpdateAutomationGitCommitAuthor, + /// MessageTemplate provides a template for the commit message, + /// into which will be interpolated the details of the change made. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "messageTemplate")] + pub message_template: Option, + /// SigningKey provides the option to sign commits with a GPG key + #[serde(default, skip_serializing_if = "Option::is_none", rename = "signingKey")] + pub signing_key: Option, +} + +/// Author gives the email and optionally the name to use as the +/// author of commits. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationGitCommitAuthor { + /// Email gives the email to provide when making a commit. + pub email: String, + /// Name gives the name to provide when making a commit. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +/// SigningKey provides the option to sign commits with a GPG key +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationGitCommitSigningKey { + /// SecretRef holds the name to a secret that contains a 'git.asc' key + /// corresponding to the ASCII Armored file containing the GPG signing + /// keypair as the value. It must be in the same namespace as the + /// ImageUpdateAutomation. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] + pub secret_ref: Option, +} + +/// SecretRef holds the name to a secret that contains a 'git.asc' key +/// corresponding to the ASCII Armored file containing the GPG signing +/// keypair as the value. It must be in the same namespace as the +/// ImageUpdateAutomation. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationGitCommitSigningKeySecretRef { + /// Name of the referent. + pub name: String, +} + +/// Push specifies how and where to push commits made by the +/// automation. If missing, commits are pushed (back) to +/// `.spec.checkout.branch` or its default. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationGitPush { + /// Branch specifies that commits should be pushed to the branch + /// named. The branch is created using `.spec.checkout.branch` as the + /// starting point, if it doesn't already exist. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub branch: Option, + /// Options specifies the push options that are sent to the Git + /// server when performing a push operation. For details, see: + /// https://git-scm.com/docs/git-push#Documentation/git-push.txt---push-optionltoptiongt + #[serde(default, skip_serializing_if = "Option::is_none")] + pub options: Option>, + /// Refspec specifies the Git Refspec to use for a push operation. + /// If both Branch and Refspec are provided, then the commit is pushed + /// to the branch and also using the specified refspec. + /// For more details about Git Refspecs, see: + /// https://git-scm.com/book/en/v2/Git-Internals-The-Refspec + #[serde(default, skip_serializing_if = "Option::is_none")] + pub refspec: Option, +} + +/// PolicySelector allows to filter applied policies based on labels. +/// By default includes all policies in namespace. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationPolicySelector { + /// matchExpressions is a list of label selector requirements. The requirements are ANDed. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationPolicySelectorMatchExpressions { + /// key is the label key that the selector applies to. + pub key: String, + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. + pub operator: String, + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + +/// SourceRef refers to the resource giving access details +/// to a git repository. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationSourceRef { + /// API version of the referent. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + /// Kind of the referent. + pub kind: ImageUpdateAutomationSourceRefKind, + /// Name of the referent. + pub name: String, + /// Namespace of the referent, defaults to the namespace of the Kubernetes resource object that contains the reference. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, +} + +/// SourceRef refers to the resource giving access details +/// to a git repository. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum ImageUpdateAutomationSourceRefKind { + GitRepository, +} + +/// Update gives the specification for how to update the files in +/// the repository. This can be left empty, to use the default +/// value. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationUpdate { + /// Path to the directory containing the manifests to be updated. + /// Defaults to 'None', which translates to the root path + /// of the GitRepositoryRef. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + /// Strategy names the strategy to be used. + pub strategy: ImageUpdateAutomationUpdateStrategy, +} + +/// Update gives the specification for how to update the files in +/// the repository. This can be left empty, to use the default +/// value. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum ImageUpdateAutomationUpdateStrategy { + Setters, +} + +/// ImageUpdateAutomationStatus defines the observed state of ImageUpdateAutomation +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationStatus { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, + /// LastAutomationRunTime records the last time the controller ran + /// this automation through to completion (even if no updates were + /// made). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastAutomationRunTime")] + pub last_automation_run_time: Option, + /// LastHandledReconcileAt holds the value of the most recent + /// reconcile request value, so a change of the annotation value + /// can be detected. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastHandledReconcileAt")] + pub last_handled_reconcile_at: Option, + /// LastPushCommit records the SHA1 of the last commit made by the + /// controller, for this automation object + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastPushCommit")] + pub last_push_commit: Option, + /// LastPushTime records the time of the last pushed change. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastPushTime")] + pub last_push_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] + pub observed_generation: Option, + /// ObservedPolicies is the list of observed ImagePolicies that were + /// considered by the ImageUpdateAutomation update process. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedPolicies")] + pub observed_policies: Option>, + /// ObservedPolicies []ObservedPolicy `json:"observedPolicies,omitempty"` + /// ObservedSourceRevision is the last observed source revision. This can be + /// used to determine if the source has been updated since last observation. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedSourceRevision")] + pub observed_source_revision: Option, +} + +/// ObservedPolicies is the list of observed ImagePolicies that were +/// considered by the ImageUpdateAutomation update process. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ImageUpdateAutomationStatusObservedPolicies { + /// Name is the bare image's name. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Tag is the image's tag. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tag: Option, +} + diff --git a/kube-custom-resources-rs/src/image_toolkit_fluxcd_io/v1beta2/mod.rs b/kube-custom-resources-rs/src/image_toolkit_fluxcd_io/v1beta2/mod.rs index 47a13752c..02eb77bbc 100644 --- a/kube-custom-resources-rs/src/image_toolkit_fluxcd_io/v1beta2/mod.rs +++ b/kube-custom-resources-rs/src/image_toolkit_fluxcd_io/v1beta2/mod.rs @@ -1,2 +1,3 @@ pub mod imagepolicies; pub mod imagerepositories; +pub mod imageupdateautomations; diff --git a/kube-custom-resources-rs/src/instana_io/v1/agents.rs b/kube-custom-resources-rs/src/instana_io/v1/agents.rs index cbde413a5..0c7b6f6ee 100644 --- a/kube-custom-resources-rs/src/instana_io/v1/agents.rs +++ b/kube-custom-resources-rs/src/instana_io/v1/agents.rs @@ -150,6 +150,9 @@ pub struct InstanaAgentAgent { /// ListenAddress is the IP addresses the Agent HTTP server will listen on. Normally this will just be localhost (`127.0.0.1`), the pod public IP and any container runtime bridge interfaces. Set `listenAddress: *` for making the Agent listen on all network interfaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "listenAddress")] pub listen_address: Option, + /// The minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing, for it to be considered available + #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] + pub min_ready_seconds: Option, /// Set agent mode, possible options are APM, INFRASTRUCTURE or AWS. KUBERNETES should not be used but instead enabled via `kubernetes.deployment.enabled: true`. #[serde(default, skip_serializing_if = "Option::is_none")] pub mode: Option, @@ -742,6 +745,9 @@ pub struct InstanaAgentK8sSensor { pub struct InstanaAgentK8sSensorDeployment { #[serde(default, skip_serializing_if = "Option::is_none")] pub enabled: Option, + /// The minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing, for it to be considered available + #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] + pub min_ready_seconds: Option, /// Override pod resource requirements for the Kubernetes Sensor pods. #[serde(default, skip_serializing_if = "Option::is_none")] pub pod: Option, @@ -797,6 +803,9 @@ pub struct InstanaAgentKubernetes { pub struct InstanaAgentKubernetesDeployment { #[serde(default, skip_serializing_if = "Option::is_none")] pub enabled: Option, + /// The minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing, for it to be considered available + #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] + pub min_ready_seconds: Option, /// Override pod resource requirements for the Kubernetes Sensor pods. #[serde(default, skip_serializing_if = "Option::is_none")] pub pod: Option, diff --git a/kube-custom-resources-rs/src/k8s_mariadb_com/v1alpha1/grants.rs b/kube-custom-resources-rs/src/k8s_mariadb_com/v1alpha1/grants.rs index 453c0b1fb..372313b1a 100644 --- a/kube-custom-resources-rs/src/k8s_mariadb_com/v1alpha1/grants.rs +++ b/kube-custom-resources-rs/src/k8s_mariadb_com/v1alpha1/grants.rs @@ -19,7 +19,7 @@ pub struct GrantSpec { /// GrantOption to use in the Grant. #[serde(default, skip_serializing_if = "Option::is_none", rename = "grantOption")] pub grant_option: Option, - /// Host to use in the Grant. + /// Host to use in the Grant. It can be localhost, an IP or '%'. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// MariaDBRef is a reference to a MariaDB object. diff --git a/kube-custom-resources-rs/src/k8s_mariadb_com/v1alpha1/mariadbs.rs b/kube-custom-resources-rs/src/k8s_mariadb_com/v1alpha1/mariadbs.rs index 01a7ae18c..8e910ef4b 100644 --- a/kube-custom-resources-rs/src/k8s_mariadb_com/v1alpha1/mariadbs.rs +++ b/kube-custom-resources-rs/src/k8s_mariadb_com/v1alpha1/mariadbs.rs @@ -6795,6 +6795,9 @@ pub struct MariaDBMaxScale { /// Enabled is a flag to enable a MaxScale instance to be used with the current MariaDB. #[serde(default, skip_serializing_if = "Option::is_none")] pub enabled: Option, + /// GuiKubernetesService define a template for a Kubernetes Service object to connect to MaxScale's GUI. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "guiKubernetesService")] + pub gui_kubernetes_service: Option, /// Image name to be used by the MaxScale instances. The supported format is `:`. /// Only MaxScale official images are supported. #[serde(default, skip_serializing_if = "Option::is_none")] @@ -6802,7 +6805,7 @@ pub struct MariaDBMaxScale { /// ImagePullPolicy is the image pull policy. One of `Always`, `Never` or `IfNotPresent`. If not defined, it defaults to `IfNotPresent`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] pub image_pull_policy: Option, - /// Service defines templates to configure the Kubernetes Service object. + /// KubernetesService defines a template for a Kubernetes Service object to connect to MaxScale. #[serde(default, skip_serializing_if = "Option::is_none", rename = "kubernetesService")] pub kubernetes_service: Option, /// Metrics configures metrics and how to scrape them. @@ -7305,6 +7308,52 @@ pub struct MariaDBMaxScaleConnectionSecretTemplateMetadata { pub labels: Option>, } +/// GuiKubernetesService define a template for a Kubernetes Service object to connect to MaxScale's GUI. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct MariaDBMaxScaleGuiKubernetesService { + /// AllocateLoadBalancerNodePorts Service field. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocateLoadBalancerNodePorts")] + pub allocate_load_balancer_node_ports: Option, + /// ExternalTrafficPolicy Service field. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalTrafficPolicy")] + pub external_traffic_policy: Option, + /// LoadBalancerIP Service field. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerIP")] + pub load_balancer_ip: Option, + /// LoadBalancerSourceRanges Service field. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerSourceRanges")] + pub load_balancer_source_ranges: Option>, + /// Metadata to be added to the Service metadata. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + /// SessionAffinity Service field. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinity")] + pub session_affinity: Option, + /// Type is the Service type. One of `ClusterIP`, `NodePort` or `LoadBalancer`. If not defined, it defaults to `ClusterIP`. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +/// Metadata to be added to the Service metadata. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct MariaDBMaxScaleGuiKubernetesServiceMetadata { + /// Annotations to be added to children resources. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + /// Labels to be added to children resources. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, +} + +/// GuiKubernetesService define a template for a Kubernetes Service object to connect to MaxScale's GUI. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum MariaDBMaxScaleGuiKubernetesServiceType { + #[serde(rename = "ClusterIP")] + ClusterIp, + NodePort, + LoadBalancer, +} + /// MaxScale is the MaxScale specification that defines the MaxScale resource to be used with the current MariaDB. /// When enabling this field, MaxScaleRef is automatically set. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] @@ -7314,7 +7363,7 @@ pub enum MariaDBMaxScaleImagePullPolicy { IfNotPresent, } -/// Service defines templates to configure the Kubernetes Service object. +/// KubernetesService defines a template for a Kubernetes Service object to connect to MaxScale. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct MariaDBMaxScaleKubernetesService { /// AllocateLoadBalancerNodePorts Service field. @@ -7351,7 +7400,7 @@ pub struct MariaDBMaxScaleKubernetesServiceMetadata { pub labels: Option>, } -/// Service defines templates to configure the Kubernetes Service object. +/// KubernetesService defines a template for a Kubernetes Service object to connect to MaxScale. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum MariaDBMaxScaleKubernetesServiceType { #[serde(rename = "ClusterIP")] diff --git a/kube-custom-resources-rs/src/k8s_mariadb_com/v1alpha1/maxscales.rs b/kube-custom-resources-rs/src/k8s_mariadb_com/v1alpha1/maxscales.rs index d6327e4ae..4e64078ce 100644 --- a/kube-custom-resources-rs/src/k8s_mariadb_com/v1alpha1/maxscales.rs +++ b/kube-custom-resources-rs/src/k8s_mariadb_com/v1alpha1/maxscales.rs @@ -42,6 +42,9 @@ pub struct MaxScaleSpec { /// EnvFrom represents the references (via ConfigMap and Secrets) to environment variables to be injected in the container. #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] pub env_from: Option>, + /// GuiKubernetesService defines a template for a Kubernetes Service object to connect to MaxScale's GUI. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "guiKubernetesService")] + pub gui_kubernetes_service: Option, /// Image name to be used by the MaxScale instances. The supported format is `:`. /// Only MaxScale official images are supported. #[serde(default, skip_serializing_if = "Option::is_none")] @@ -58,7 +61,7 @@ pub struct MaxScaleSpec { /// InitContainers to be used in the Pod. #[serde(default, skip_serializing_if = "Option::is_none", rename = "initContainers")] pub init_containers: Option>, - /// Service defines templates to configure the Kubernetes Service object. + /// KubernetesService defines a template for a Kubernetes Service object to connect to MaxScale. #[serde(default, skip_serializing_if = "Option::is_none", rename = "kubernetesService")] pub kubernetes_service: Option, /// LivenessProbe to be used in the Container. @@ -1450,6 +1453,52 @@ pub struct MaxScaleEnvFromSecretRef { pub optional: Option, } +/// GuiKubernetesService defines a template for a Kubernetes Service object to connect to MaxScale's GUI. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct MaxScaleGuiKubernetesService { + /// AllocateLoadBalancerNodePorts Service field. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocateLoadBalancerNodePorts")] + pub allocate_load_balancer_node_ports: Option, + /// ExternalTrafficPolicy Service field. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalTrafficPolicy")] + pub external_traffic_policy: Option, + /// LoadBalancerIP Service field. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerIP")] + pub load_balancer_ip: Option, + /// LoadBalancerSourceRanges Service field. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerSourceRanges")] + pub load_balancer_source_ranges: Option>, + /// Metadata to be added to the Service metadata. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metadata: Option, + /// SessionAffinity Service field. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinity")] + pub session_affinity: Option, + /// Type is the Service type. One of `ClusterIP`, `NodePort` or `LoadBalancer`. If not defined, it defaults to `ClusterIP`. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +/// Metadata to be added to the Service metadata. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct MaxScaleGuiKubernetesServiceMetadata { + /// Annotations to be added to children resources. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + /// Labels to be added to children resources. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, +} + +/// GuiKubernetesService defines a template for a Kubernetes Service object to connect to MaxScale's GUI. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum MaxScaleGuiKubernetesServiceType { + #[serde(rename = "ClusterIP")] + ClusterIp, + NodePort, + LoadBalancer, +} + /// MaxScaleSpec defines the desired state of MaxScale. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum MaxScaleImagePullPolicy { @@ -2132,7 +2181,7 @@ pub struct MaxScaleInitContainersVolumeMounts { pub sub_path_expr: Option, } -/// Service defines templates to configure the Kubernetes Service object. +/// KubernetesService defines a template for a Kubernetes Service object to connect to MaxScale. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct MaxScaleKubernetesService { /// AllocateLoadBalancerNodePorts Service field. @@ -2169,7 +2218,7 @@ pub struct MaxScaleKubernetesServiceMetadata { pub labels: Option>, } -/// Service defines templates to configure the Kubernetes Service object. +/// KubernetesService defines a template for a Kubernetes Service object to connect to MaxScale. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum MaxScaleKubernetesServiceType { #[serde(rename = "ClusterIP")] diff --git a/kube-custom-resources-rs/src/kamaji_clastix_io/v1alpha1/datastores.rs b/kube-custom-resources-rs/src/kamaji_clastix_io/v1alpha1/datastores.rs index 1023d5843..207c098f1 100644 --- a/kube-custom-resources-rs/src/kamaji_clastix_io/v1alpha1/datastores.rs +++ b/kube-custom-resources-rs/src/kamaji_clastix_io/v1alpha1/datastores.rs @@ -90,6 +90,8 @@ pub enum DataStoreDriver { MySql, #[serde(rename = "PostgreSQL")] PostgreSql, + #[serde(rename = "NATS")] + Nats, } /// Defines the TLS/SSL configuration required to connect to the data store in a secure way. diff --git a/kube-custom-resources-rs/src/kamaji_clastix_io/v1alpha1/tenantcontrolplanes.rs b/kube-custom-resources-rs/src/kamaji_clastix_io/v1alpha1/tenantcontrolplanes.rs index f7743be52..ceba981ed 100644 --- a/kube-custom-resources-rs/src/kamaji_clastix_io/v1alpha1/tenantcontrolplanes.rs +++ b/kube-custom-resources-rs/src/kamaji_clastix_io/v1alpha1/tenantcontrolplanes.rs @@ -207,6 +207,9 @@ pub struct TenantControlPlaneControlPlaneDeployment { /// More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")] pub node_selector: Option>, + /// AdditionalMetadata defines which additional metadata, such as labels and annotations, must be attached to the created resource. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "podAdditionalMetadata")] + pub pod_additional_metadata: Option, /// RegistrySettings allows to override the default images for the given Tenant Control Plane instance. /// It could be used to point to a different container registry rather than the public one. #[serde(default, skip_serializing_if = "Option::is_none", rename = "registrySettings")] @@ -224,6 +227,9 @@ pub struct TenantControlPlaneControlPlaneDeployment { /// More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class #[serde(default, skip_serializing_if = "Option::is_none", rename = "runtimeClassName")] pub runtime_class_name: Option, + /// ServiceAccountName allows to specify the service account to be mounted to the pods of the Control plane deployment + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountName")] + pub service_account_name: Option, /// Strategy describes how to replace existing pods with new ones for the given Tenant Control Plane. /// Default value is set to Rolling Update, with a blue/green strategy. #[serde(default, skip_serializing_if = "Option::is_none")] @@ -5160,6 +5166,15 @@ pub struct TenantControlPlaneControlPlaneDeploymentExtraArgs { pub scheduler: Option>, } +/// AdditionalMetadata defines which additional metadata, such as labels and annotations, must be attached to the created resource. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct TenantControlPlaneControlPlaneDeploymentPodAdditionalMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, +} + /// RegistrySettings allows to override the default images for the given Tenant Control Plane instance. /// It could be used to point to a different container registry rather than the public one. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] diff --git a/kube-custom-resources-rs/src/karpenter_k8s_aws/v1beta1/ec2nodeclasses.rs b/kube-custom-resources-rs/src/karpenter_k8s_aws/v1beta1/ec2nodeclasses.rs index e669bc840..d1dd98e43 100644 --- a/kube-custom-resources-rs/src/karpenter_k8s_aws/v1beta1/ec2nodeclasses.rs +++ b/kube-custom-resources-rs/src/karpenter_k8s_aws/v1beta1/ec2nodeclasses.rs @@ -5,7 +5,6 @@ use kube::CustomResource; use serde::{Serialize, Deserialize}; use std::collections::BTreeMap; -use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString; /// EC2NodeClassSpec is the top level specification for the AWS Karpenter Provider. /// This will contain configuration necessary to launch instances in AWS. @@ -197,7 +196,7 @@ pub struct EC2NodeClassBlockDeviceMappingsEbs { /// /// * standard: 1-1,024 #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeSize")] - pub volume_size: Option, + pub volume_size: Option, /// VolumeType of the block device. /// For more information, see Amazon EBS volume types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) /// in the Amazon Elastic Compute Cloud User Guide. diff --git a/kube-custom-resources-rs/src/kmm_sigs_x_k8s_io/v1beta1/modules.rs b/kube-custom-resources-rs/src/kmm_sigs_x_k8s_io/v1beta1/modules.rs index 278f07856..0200defd7 100644 --- a/kube-custom-resources-rs/src/kmm_sigs_x_k8s_io/v1beta1/modules.rs +++ b/kube-custom-resources-rs/src/kmm_sigs_x_k8s_io/v1beta1/modules.rs @@ -232,6 +232,8 @@ pub struct ModuleDevicePluginContainerVolumeMounts { /// to container and the other way around. /// When not set, MountPropagationNone is used. /// This field is beta in 1.10. + /// When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified + /// (which defaults to None). #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] pub mount_propagation: Option, /// This must match the Name of a Volume. @@ -240,6 +242,28 @@ pub struct ModuleDevicePluginContainerVolumeMounts { /// Defaults to false. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, + /// RecursiveReadOnly specifies whether read-only mounts should be handled + /// recursively. + /// + /// + /// If ReadOnly is false, this field has no meaning and must be unspecified. + /// + /// + /// If ReadOnly is true, and this field is set to Disabled, the mount is not made + /// recursively read-only. If this field is set to IfPossible, the mount is made + /// recursively read-only, if it is supported by the container runtime. If this + /// field is set to Enabled, the mount is made recursively read-only if it is + /// supported by the container runtime, otherwise the pod will not be started and + /// an error will be generated to indicate the reason. + /// + /// + /// If this field is set to IfPossible or Enabled, MountPropagation must be set to + /// None (or be unspecified, which defaults to None). + /// + /// + /// If this field is not specified, it is treated as an equivalent of Disabled. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "recursiveReadOnly")] + pub recursive_read_only: Option, /// Path within the volume from which the container's volume should be mounted. /// Defaults to "" (volume's root). #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] @@ -658,7 +682,7 @@ pub struct ModuleDevicePluginVolumesDownwardApi { /// DownwardAPIVolumeFile represents information to create the file containing the pod field #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ModuleDevicePluginVolumesDownwardApiItems { - /// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + /// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, /// Optional: mode bits used to set permissions on this file, must be an octal value @@ -677,7 +701,7 @@ pub struct ModuleDevicePluginVolumesDownwardApiItems { pub resource_field_ref: Option, } -/// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +/// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ModuleDevicePluginVolumesDownwardApiItemsFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -894,7 +918,7 @@ pub struct ModuleDevicePluginVolumesEphemeralVolumeClaimTemplateSpec { /// If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be /// set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource /// exists. - /// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass + /// More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ /// (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributesClassName")] pub volume_attributes_class_name: Option, @@ -1484,7 +1508,7 @@ pub struct ModuleDevicePluginVolumesProjectedSourcesDownwardApi { /// DownwardAPIVolumeFile represents information to create the file containing the pod field #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ModuleDevicePluginVolumesProjectedSourcesDownwardApiItems { - /// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + /// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, /// Optional: mode bits used to set permissions on this file, must be an octal value @@ -1503,7 +1527,7 @@ pub struct ModuleDevicePluginVolumesProjectedSourcesDownwardApiItems { pub resource_field_ref: Option, } -/// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +/// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ModuleDevicePluginVolumesProjectedSourcesDownwardApiItemsFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". diff --git a/kube-custom-resources-rs/src/kuadrant_io/v1alpha1/dnsrecords.rs b/kube-custom-resources-rs/src/kuadrant_io/v1alpha1/dnsrecords.rs index fffe61f91..e66a23e65 100644 --- a/kube-custom-resources-rs/src/kuadrant_io/v1alpha1/dnsrecords.rs +++ b/kube-custom-resources-rs/src/kuadrant_io/v1alpha1/dnsrecords.rs @@ -14,18 +14,19 @@ use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition; #[kube(status = "DNSRecordStatus")] #[kube(schema = "disabled")] pub struct DNSRecordSpec { + /// endpoints is a list of endpoints that will be published into the dns provider. #[serde(default, skip_serializing_if = "Option::is_none")] pub endpoints: Option>, /// HealthCheckSpec configures health checks in the DNS provider. By default this health check will be applied to each unique DNS A Record for the listeners assigned to the target gateway #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheck")] pub health_check: Option, - /// ManagedZoneReference holds a reference to a ManagedZone - #[serde(default, skip_serializing_if = "Option::is_none", rename = "managedZone")] - pub managed_zone: Option, - /// OwnerID is a unique string used to identify all endpoints created by this kuadrant + /// managedZone is a reference to a ManagedZone instance to which this record will publish its endpoints. + #[serde(rename = "managedZone")] + pub managed_zone: DNSRecordManagedZone, + /// ownerID is a unique string used to identify the owner of this record. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ownerID")] pub owner_id: Option, - /// rootHost is the single root for all endpoints in a DNSRecord. If rootHost is set, it is expected all defined endpoints are children of or equal to this rootHost + /// rootHost is the single root for all endpoints in a DNSRecord. If rootHost is set, it is expected all defined endpoints are children of or equal to this rootHost #[serde(default, skip_serializing_if = "Option::is_none", rename = "rootHost")] pub root_host: Option, } @@ -78,7 +79,7 @@ pub struct DNSRecordHealthCheck { pub protocol: Option, } -/// ManagedZoneReference holds a reference to a ManagedZone +/// managedZone is a reference to a ManagedZone instance to which this record will publish its endpoints. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct DNSRecordManagedZone { /// `name` is the name of the managed zone. Required @@ -161,6 +162,8 @@ pub struct DNSRecordStatusHealthCheck { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct DNSRecordStatusHealthCheckProbes { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, pub host: String, pub id: String, #[serde(rename = "ipAddress")] diff --git a/kube-custom-resources-rs/src/kuadrant_io/v1alpha1/managedzones.rs b/kube-custom-resources-rs/src/kuadrant_io/v1alpha1/managedzones.rs index 0fdce550b..fd3af5d74 100644 --- a/kube-custom-resources-rs/src/kuadrant_io/v1alpha1/managedzones.rs +++ b/kube-custom-resources-rs/src/kuadrant_io/v1alpha1/managedzones.rs @@ -13,27 +13,29 @@ use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition; #[kube(status = "ManagedZoneStatus")] #[kube(schema = "disabled")] pub struct ManagedZoneSpec { - /// Description for this ManagedZone + /// description for this ManagedZone pub description: String, + /// dnsProviderSecretRef reference to a secret containing credentials to access a dns provider. #[serde(rename = "dnsProviderSecretRef")] pub dns_provider_secret_ref: ManagedZoneDnsProviderSecretRef, - /// Domain name of this ManagedZone + /// domainName of this ManagedZone #[serde(rename = "domainName")] pub domain_name: String, - /// ID is the provider assigned id of this zone (i.e. route53.HostedZone.ID). + /// id is the provider assigned id of this zone (i.e. route53.HostedZone.ID). #[serde(default, skip_serializing_if = "Option::is_none")] pub id: Option, - /// Reference to another managed zone that this managed zone belongs to. + /// parentManagedZone reference to another managed zone that this managed zone belongs to. #[serde(default, skip_serializing_if = "Option::is_none", rename = "parentManagedZone")] pub parent_managed_zone: Option, } +/// dnsProviderSecretRef reference to a secret containing credentials to access a dns provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ManagedZoneDnsProviderSecretRef { pub name: String, } -/// Reference to another managed zone that this managed zone belongs to. +/// parentManagedZone reference to another managed zone that this managed zone belongs to. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ManagedZoneParentManagedZone { /// `name` is the name of the managed zone. Required diff --git a/kube-custom-resources-rs/src/kuadrant_io/v1beta2/ratelimitpolicies.rs b/kube-custom-resources-rs/src/kuadrant_io/v1beta2/ratelimitpolicies.rs index dbffbd499..828852a74 100644 --- a/kube-custom-resources-rs/src/kuadrant_io/v1beta2/ratelimitpolicies.rs +++ b/kube-custom-resources-rs/src/kuadrant_io/v1beta2/ratelimitpolicies.rs @@ -21,6 +21,10 @@ pub struct RateLimitPolicySpec { /// Limits holds the struct of limits indexed by a unique name #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, + /// Overrides define override values for this policy and for policies inheriting this policy. + /// Overrides are mutually exclusive with implicit defaults and explicit Defaults defined by RateLimitPolicyCommonSpec. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub overrides: Option, /// TargetRef identifies an API object to apply policy to. #[serde(rename = "targetRef")] pub target_ref: RateLimitPolicyTargetRef, @@ -659,6 +663,327 @@ pub enum RateLimitPolicyLimitsWhenOperator { Matches, } +/// Overrides define override values for this policy and for policies inheriting this policy. +/// Overrides are mutually exclusive with implicit defaults and explicit Defaults defined by RateLimitPolicyCommonSpec. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct RateLimitPolicyOverrides { + /// Limits holds the struct of limits indexed by a unique name + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, +} + +/// Limits holds the struct of limits indexed by a unique name +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct RateLimitPolicyOverridesLimits { + /// Counters defines additional rate limit counters based on context qualifiers and well known selectors + /// TODO Document properly "Well-known selector" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors + #[serde(default, skip_serializing_if = "Option::is_none")] + pub counters: Option>, + /// Rates holds the list of limit rates + #[serde(default, skip_serializing_if = "Option::is_none")] + pub rates: Option>, + /// RouteSelectors defines semantics for matching an HTTP request based on conditions + #[serde(default, skip_serializing_if = "Option::is_none", rename = "routeSelectors")] + pub route_selectors: Option>, + /// When holds the list of conditions for the policy to be enforced. + /// Called also "soft" conditions as route selectors must also match + #[serde(default, skip_serializing_if = "Option::is_none")] + pub when: Option>, +} + +/// Rate defines the actual rate limit that will be used when there is a match +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct RateLimitPolicyOverridesLimitsRates { + /// Duration defines the time period for which the Limit specified above applies. + pub duration: i64, + /// Limit defines the max value allowed for a given period of time + pub limit: i64, + /// Duration defines the time uni + /// Possible values are: "second", "minute", "hour", "day" + pub unit: RateLimitPolicyOverridesLimitsRatesUnit, +} + +/// Rate defines the actual rate limit that will be used when there is a match +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum RateLimitPolicyOverridesLimitsRatesUnit { + #[serde(rename = "second")] + Second, + #[serde(rename = "minute")] + Minute, + #[serde(rename = "hour")] + Hour, + #[serde(rename = "day")] + Day, +} + +/// RouteSelector defines semantics for matching an HTTP request based on conditions +/// https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct RateLimitPolicyOverridesLimitsRouteSelectors { + /// Hostnames defines a set of hostname that should match against the HTTP Host header to select a HTTPRoute to process the request + /// https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec + #[serde(default, skip_serializing_if = "Option::is_none")] + pub hostnames: Option>, + /// Matches define conditions used for matching the rule against incoming HTTP requests. + /// https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec + #[serde(default, skip_serializing_if = "Option::is_none")] + pub matches: Option>, +} + +/// HTTPRouteMatch defines the predicate used to match requests to a given +/// action. Multiple match types are ANDed together, i.e. the match will +/// evaluate to true only if all conditions are satisfied. +/// +/// +/// For example, the match below will match a HTTP request only if its path +/// starts with `/foo` AND it contains the `version: v1` header: +/// +/// +/// ``` +/// match: +/// +/// +/// path: +/// value: "/foo" +/// headers: +/// - name: "version" +/// value "v1" +/// +/// +/// ``` +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct RateLimitPolicyOverridesLimitsRouteSelectorsMatches { + /// Headers specifies HTTP request header matchers. Multiple match values are + /// ANDed together, meaning, a request must match all the specified headers + /// to select the route. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub headers: Option>, + /// Method specifies HTTP method matcher. + /// When specified, this route will be matched only if the request has the + /// specified method. + /// + /// + /// Support: Extended + #[serde(default, skip_serializing_if = "Option::is_none")] + pub method: Option, + /// Path specifies a HTTP request path matcher. If this field is not + /// specified, a default prefix match on the "/" path is provided. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + /// QueryParams specifies HTTP query parameter matchers. Multiple match + /// values are ANDed together, meaning, a request must match all the + /// specified query parameters to select the route. + /// + /// + /// Support: Extended + #[serde(default, skip_serializing_if = "Option::is_none", rename = "queryParams")] + pub query_params: Option>, +} + +/// HTTPHeaderMatch describes how to select a HTTP route by matching HTTP request +/// headers. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct RateLimitPolicyOverridesLimitsRouteSelectorsMatchesHeaders { + /// Name is the name of the HTTP Header to be matched. Name matching MUST be + /// case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). + /// + /// + /// If multiple entries specify equivalent header names, only the first + /// entry with an equivalent name MUST be considered for a match. Subsequent + /// entries with an equivalent header name MUST be ignored. Due to the + /// case-insensitivity of header names, "foo" and "Foo" are considered + /// equivalent. + /// + /// + /// When a header is repeated in an HTTP request, it is + /// implementation-specific behavior as to how this is represented. + /// Generally, proxies should follow the guidance from the RFC: + /// https://www.rfc-editor.org/rfc/rfc7230.html#section-3.2.2 regarding + /// processing a repeated header, with special handling for "Set-Cookie". + pub name: String, + /// Type specifies how to match against the value of the header. + /// + /// + /// Support: Core (Exact) + /// + /// + /// Support: Implementation-specific (RegularExpression) + /// + /// + /// Since RegularExpression HeaderMatchType has implementation-specific + /// conformance, implementations can support POSIX, PCRE or any other dialects + /// of regular expressions. Please read the implementation's documentation to + /// determine the supported dialect. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + /// Value is the value of HTTP Header to be matched. + pub value: String, +} + +/// HTTPHeaderMatch describes how to select a HTTP route by matching HTTP request +/// headers. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum RateLimitPolicyOverridesLimitsRouteSelectorsMatchesHeadersType { + Exact, + RegularExpression, +} + +/// HTTPRouteMatch defines the predicate used to match requests to a given +/// action. Multiple match types are ANDed together, i.e. the match will +/// evaluate to true only if all conditions are satisfied. +/// +/// +/// For example, the match below will match a HTTP request only if its path +/// starts with `/foo` AND it contains the `version: v1` header: +/// +/// +/// ``` +/// match: +/// +/// +/// path: +/// value: "/foo" +/// headers: +/// - name: "version" +/// value "v1" +/// +/// +/// ``` +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum RateLimitPolicyOverridesLimitsRouteSelectorsMatchesMethod { + #[serde(rename = "GET")] + Get, + #[serde(rename = "HEAD")] + Head, + #[serde(rename = "POST")] + Post, + #[serde(rename = "PUT")] + Put, + #[serde(rename = "DELETE")] + Delete, + #[serde(rename = "CONNECT")] + Connect, + #[serde(rename = "OPTIONS")] + Options, + #[serde(rename = "TRACE")] + Trace, + #[serde(rename = "PATCH")] + Patch, +} + +/// Path specifies a HTTP request path matcher. If this field is not +/// specified, a default prefix match on the "/" path is provided. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct RateLimitPolicyOverridesLimitsRouteSelectorsMatchesPath { + /// Type specifies how to match against the path Value. + /// + /// + /// Support: Core (Exact, PathPrefix) + /// + /// + /// Support: Implementation-specific (RegularExpression) + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + /// Value of the HTTP path to match against. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +/// Path specifies a HTTP request path matcher. If this field is not +/// specified, a default prefix match on the "/" path is provided. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum RateLimitPolicyOverridesLimitsRouteSelectorsMatchesPathType { + Exact, + PathPrefix, + RegularExpression, +} + +/// HTTPQueryParamMatch describes how to select a HTTP route by matching HTTP +/// query parameters. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct RateLimitPolicyOverridesLimitsRouteSelectorsMatchesQueryParams { + /// Name is the name of the HTTP query param to be matched. This must be an + /// exact string match. (See + /// https://tools.ietf.org/html/rfc7230#section-2.7.3). + /// + /// + /// If multiple entries specify equivalent query param names, only the first + /// entry with an equivalent name MUST be considered for a match. Subsequent + /// entries with an equivalent query param name MUST be ignored. + /// + /// + /// If a query param is repeated in an HTTP request, the behavior is + /// purposely left undefined, since different data planes have different + /// capabilities. However, it is *recommended* that implementations should + /// match against the first value of the param if the data plane supports it, + /// as this behavior is expected in other load balancing contexts outside of + /// the Gateway API. + /// + /// + /// Users SHOULD NOT route traffic based on repeated query params to guard + /// themselves against potential differences in the implementations. + pub name: String, + /// Type specifies how to match against the value of the query parameter. + /// + /// + /// Support: Extended (Exact) + /// + /// + /// Support: Implementation-specific (RegularExpression) + /// + /// + /// Since RegularExpression QueryParamMatchType has Implementation-specific + /// conformance, implementations can support POSIX, PCRE or any other + /// dialects of regular expressions. Please read the implementation's + /// documentation to determine the supported dialect. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + /// Value is the value of HTTP query param to be matched. + pub value: String, +} + +/// HTTPQueryParamMatch describes how to select a HTTP route by matching HTTP +/// query parameters. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum RateLimitPolicyOverridesLimitsRouteSelectorsMatchesQueryParamsType { + Exact, + RegularExpression, +} + +/// RouteSelector defines semantics for matching an HTTP request based on conditions +/// https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct RateLimitPolicyOverridesLimitsWhen { + /// The binary operator to be applied to the content fetched from the selector + /// Possible values are: "eq" (equal to), "neq" (not equal to) + pub operator: RateLimitPolicyOverridesLimitsWhenOperator, + /// Selector defines one item from the well known selectors + /// TODO Document properly "Well-known selector" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors + pub selector: String, + /// The value of reference for the comparison. + pub value: String, +} + +/// RouteSelector defines semantics for matching an HTTP request based on conditions +/// https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum RateLimitPolicyOverridesLimitsWhenOperator { + #[serde(rename = "eq")] + Eq, + #[serde(rename = "neq")] + Neq, + #[serde(rename = "startswith")] + Startswith, + #[serde(rename = "endswith")] + Endswith, + #[serde(rename = "incl")] + Incl, + #[serde(rename = "excl")] + Excl, + #[serde(rename = "matches")] + Matches, +} + /// TargetRef identifies an API object to apply policy to. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct RateLimitPolicyTargetRef { diff --git a/kube-custom-resources-rs/src/lib.rs b/kube-custom-resources-rs/src/lib.rs index 7d23545a6..4d18c6ce3 100644 --- a/kube-custom-resources-rs/src/lib.rs +++ b/kube-custom-resources-rs/src/lib.rs @@ -1403,6 +1403,7 @@ apiVersion `image.toolkit.fluxcd.io/v1beta1`: - `ImageRepository` apiVersion `image.toolkit.fluxcd.io/v1beta2`: +- `ImageUpdateAutomation` - `ImagePolicy` - `ImageRepository` diff --git a/kube-custom-resources-rs/src/minio_min_io/v2/tenants.rs b/kube-custom-resources-rs/src/minio_min_io/v2/tenants.rs index c90abe8f2..d4e8a2bb0 100644 --- a/kube-custom-resources-rs/src/minio_min_io/v2/tenants.rs +++ b/kube-custom-resources-rs/src/minio_min_io/v2/tenants.rs @@ -56,6 +56,8 @@ pub struct TenantSpec { #[serde(default, skip_serializing_if = "Option::is_none")] pub kes: Option, #[serde(default, skip_serializing_if = "Option::is_none")] + pub lifecycle: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] pub liveness: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub logging: Option, @@ -2118,6 +2120,98 @@ pub struct TenantKesTopologySpreadConstraintsLabelSelectorMatchExpressions { pub values: Option>, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantLifecycle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] + pub post_start: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] + pub pre_stop: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantLifecyclePostStart { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantLifecyclePostStartExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantLifecyclePostStartHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantLifecyclePostStartHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantLifecyclePostStartTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantLifecyclePreStop { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] + pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] + pub tcp_socket: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantLifecyclePreStopExec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub command: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantLifecyclePreStopHttpGet { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaders")] + pub http_headers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + pub port: IntOrString, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantLifecyclePreStopHttpGetHttpHeaders { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantLifecyclePreStopTcpSocket { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + pub port: IntOrString, +} + #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantLiveness { #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/monitoring_coreos_com/v1alpha1/scrapeconfigs.rs b/kube-custom-resources-rs/src/monitoring_coreos_com/v1alpha1/scrapeconfigs.rs index c2da04049..048b1661d 100644 --- a/kube-custom-resources-rs/src/monitoring_coreos_com/v1alpha1/scrapeconfigs.rs +++ b/kube-custom-resources-rs/src/monitoring_coreos_com/v1alpha1/scrapeconfigs.rs @@ -12,6 +12,9 @@ use std::collections::BTreeMap; #[kube(namespaced)] #[kube(schema = "disabled")] pub struct ScrapeConfigSpec { + /// NomadSDConfigs defines a list of Nomad service discovery configurations. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "NomadSDConfigs")] + pub nomad_sd_configs: Option>, /// Authorization header to use on every scrape request. #[serde(default, skip_serializing_if = "Option::is_none")] pub authorization: Option, @@ -180,6 +183,371 @@ pub struct ScrapeConfigSpec { pub track_timestamps_staleness: Option, } +/// NomadSDConfig configurations allow retrieving scrape targets from Nomad's Service API. +/// See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#nomad_sd_config +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigs { + /// The information to access the Nomad API. It is to be defined + /// as the Nomad documentation requires. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowStale")] + pub allow_stale: Option, + /// Authorization header to use on every scrape request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub authorization: Option, + /// BasicAuth information to use on every scrape request. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "basicAuth")] + pub basic_auth: Option, + /// Whether to enable HTTP2. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "enableHTTP2")] + pub enable_http2: Option, + /// Configure whether HTTP requests follow HTTP 3xx redirects. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "followRedirects")] + pub follow_redirects: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// `noProxy` is a comma-separated string that can contain IPs, CIDR notation, domain names + /// that should be excluded from proxying. IP and domain names can + /// contain port numbers. + /// + /// + /// It requires Prometheus >= v2.43.0. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "noProxy")] + pub no_proxy: Option, + /// Optional OAuth 2.0 configuration. + /// Cannot be set at the same time as `authorization` or `basic_auth`. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub oauth2: Option, + /// ProxyConnectHeader optionally specifies headers to send to + /// proxies during CONNECT requests. + /// + /// + /// It requires Prometheus >= v2.43.0. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "proxyConnectHeader")] + pub proxy_connect_header: Option>, + /// Whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY). + /// If unset, Prometheus uses its default value. + /// + /// + /// It requires Prometheus >= v2.43.0. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "proxyFromEnvironment")] + pub proxy_from_environment: Option, + /// `proxyURL` defines the HTTP proxy server to use. + /// + /// + /// It requires Prometheus >= v2.43.0. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "proxyUrl")] + pub proxy_url: Option, + /// Duration is a valid time duration that can be parsed by Prometheus model.ParseDuration() function. + /// Supported units: y, w, d, h, m, s, ms + /// Examples: `30s`, `1m`, `1h20m15s`, `15d` + #[serde(default, skip_serializing_if = "Option::is_none", rename = "refreshInterval")] + pub refresh_interval: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub region: Option, + pub server: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tagSeparator")] + pub tag_separator: Option, + /// TLS configuration applying to the target HTTP endpoint. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tlsConfig")] + pub tls_config: Option, +} + +/// Authorization header to use on every scrape request. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsAuthorization { + /// Selects a key of a Secret in the namespace that contains the credentials for authentication. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub credentials: Option, + /// Defines the authentication type. The value is case-insensitive. + /// + /// + /// "Basic" is not a supported value. + /// + /// + /// Default: "Bearer" + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +/// Selects a key of a Secret in the namespace that contains the credentials for authentication. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsAuthorizationCredentials { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// BasicAuth information to use on every scrape request. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsBasicAuth { + /// `password` specifies a key of a Secret containing the password for + /// authentication. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + /// `username` specifies a key of a Secret containing the username for + /// authentication. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +/// `password` specifies a key of a Secret containing the password for +/// authentication. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsBasicAuthPassword { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// `username` specifies a key of a Secret containing the username for +/// authentication. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsBasicAuthUsername { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Optional OAuth 2.0 configuration. +/// Cannot be set at the same time as `authorization` or `basic_auth`. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsOauth2 { + /// `clientId` specifies a key of a Secret or ConfigMap containing the + /// OAuth2 client's ID. + #[serde(rename = "clientId")] + pub client_id: ScrapeConfigNomadSdConfigsOauth2ClientId, + /// `clientSecret` specifies a key of a Secret containing the OAuth2 + /// client's secret. + #[serde(rename = "clientSecret")] + pub client_secret: ScrapeConfigNomadSdConfigsOauth2ClientSecret, + /// `endpointParams` configures the HTTP parameters to append to the token + /// URL. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "endpointParams")] + pub endpoint_params: Option>, + /// `scopes` defines the OAuth2 scopes used for the token request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scopes: Option>, + /// `tokenURL` configures the URL to fetch the token from. + #[serde(rename = "tokenUrl")] + pub token_url: String, +} + +/// `clientId` specifies a key of a Secret or ConfigMap containing the +/// OAuth2 client's ID. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsOauth2ClientId { + /// ConfigMap containing data to use for the targets. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + /// Secret containing data to use for the targets. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, +} + +/// ConfigMap containing data to use for the targets. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsOauth2ClientIdConfigMap { + /// The key to select. + pub key: String, + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the ConfigMap or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Secret containing data to use for the targets. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsOauth2ClientIdSecret { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// `clientSecret` specifies a key of a Secret containing the OAuth2 +/// client's secret. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsOauth2ClientSecret { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// ProxyConnectHeader optionally specifies headers to send to +/// proxies during CONNECT requests. +/// +/// +/// It requires Prometheus >= v2.43.0. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsProxyConnectHeader { + /// The key of the secret to select from. Must be a valid secret key. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// TLS configuration applying to the target HTTP endpoint. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsTlsConfig { + /// Certificate authority used when verifying server certificates. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ca: Option, + /// Client certificate to present when doing client-authentication. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cert: Option, + /// Disable target certificate validation. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "insecureSkipVerify")] + pub insecure_skip_verify: Option, + /// Secret containing the client key file for the targets. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "keySecret")] + pub key_secret: Option, + /// Used to verify the hostname for the targets. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serverName")] + pub server_name: Option, +} + +/// Certificate authority used when verifying server certificates. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsTlsConfigCa { + /// ConfigMap containing data to use for the targets. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + /// Secret containing data to use for the targets. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, +} + +/// ConfigMap containing data to use for the targets. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsTlsConfigCaConfigMap { + /// The key to select. + pub key: String, + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the ConfigMap or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Secret containing data to use for the targets. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsTlsConfigCaSecret { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Client certificate to present when doing client-authentication. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsTlsConfigCert { + /// ConfigMap containing data to use for the targets. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] + pub config_map: Option, + /// Secret containing data to use for the targets. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, +} + +/// ConfigMap containing data to use for the targets. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsTlsConfigCertConfigMap { + /// The key to select. + pub key: String, + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the ConfigMap or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Secret containing data to use for the targets. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsTlsConfigCertSecret { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Secret containing the client key file for the targets. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct ScrapeConfigNomadSdConfigsTlsConfigKeySecret { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + /// Authorization header to use on every scrape request. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ScrapeConfigAuthorization { diff --git a/kube-custom-resources-rs/src/networking_istio_io/v1beta1/proxyconfigs.rs b/kube-custom-resources-rs/src/networking_istio_io/v1beta1/proxyconfigs.rs index e3ed9fe37..3450b6dd2 100644 --- a/kube-custom-resources-rs/src/networking_istio_io/v1beta1/proxyconfigs.rs +++ b/kube-custom-resources-rs/src/networking_istio_io/v1beta1/proxyconfigs.rs @@ -14,7 +14,7 @@ use std::collections::BTreeMap; pub struct ProxyConfigSpec { /// The number of worker threads to run. #[serde(default, skip_serializing_if = "Option::is_none")] - pub concurrency: Option, + pub concurrency: Option, /// Additional environment variables for the proxy. #[serde(default, skip_serializing_if = "Option::is_none", rename = "environmentVariables")] pub environment_variables: Option>, diff --git a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/bootstrapproviders.rs b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/bootstrapproviders.rs index 0fa074789..727b110fb 100644 --- a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/bootstrapproviders.rs +++ b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/bootstrapproviders.rs @@ -288,8 +288,31 @@ pub struct BootstrapProviderDeploymentAffinityPodAffinityPreferredDuringScheduli #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -313,6 +336,7 @@ pub struct BootstrapProviderDeploymentAffinityPodAffinityPreferredDuringScheduli } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -385,8 +409,31 @@ pub struct BootstrapProviderDeploymentAffinityPodAffinityPreferredDuringScheduli #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -410,6 +457,7 @@ pub struct BootstrapProviderDeploymentAffinityPodAffinityRequiredDuringSchedulin } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -513,8 +561,31 @@ pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityPreferredDuringSche #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -538,6 +609,7 @@ pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityPreferredDuringSche } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -610,8 +682,31 @@ pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityPreferredDuringSche #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -635,6 +730,7 @@ pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityRequiredDuringSched } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. diff --git a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/controlplaneproviders.rs b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/controlplaneproviders.rs index 94cd40f2d..091540b9f 100644 --- a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/controlplaneproviders.rs +++ b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/controlplaneproviders.rs @@ -288,8 +288,31 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAffinityPreferredDuringSched #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -313,6 +336,7 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAffinityPreferredDuringSched } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -385,8 +409,31 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAffinityPreferredDuringSched #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -410,6 +457,7 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAffinityRequiredDuringSchedu } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -513,8 +561,31 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityPreferredDuringS #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -538,6 +609,7 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityPreferredDuringS } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -610,8 +682,31 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityPreferredDuringS #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -635,6 +730,7 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityRequiredDuringSc } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. diff --git a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/coreproviders.rs b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/coreproviders.rs index 729478b8b..88b91abc7 100644 --- a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/coreproviders.rs +++ b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/coreproviders.rs @@ -288,8 +288,31 @@ pub struct CoreProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgn #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -313,6 +336,7 @@ pub struct CoreProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgn } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -385,8 +409,31 @@ pub struct CoreProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgn #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -410,6 +457,7 @@ pub struct CoreProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgno } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -513,8 +561,31 @@ pub struct CoreProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulin #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -538,6 +609,7 @@ pub struct CoreProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulin } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -610,8 +682,31 @@ pub struct CoreProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulin #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -635,6 +730,7 @@ pub struct CoreProviderDeploymentAffinityPodAntiAffinityRequiredDuringScheduling } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. diff --git a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/infrastructureproviders.rs b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/infrastructureproviders.rs index 4364b8eb5..b4e86458b 100644 --- a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/infrastructureproviders.rs +++ b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha1/infrastructureproviders.rs @@ -288,8 +288,31 @@ pub struct InfrastructureProviderDeploymentAffinityPodAffinityPreferredDuringSch #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -313,6 +336,7 @@ pub struct InfrastructureProviderDeploymentAffinityPodAffinityPreferredDuringSch } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -385,8 +409,31 @@ pub struct InfrastructureProviderDeploymentAffinityPodAffinityPreferredDuringSch #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -410,6 +457,7 @@ pub struct InfrastructureProviderDeploymentAffinityPodAffinityRequiredDuringSche } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -513,8 +561,31 @@ pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityPreferredDurin #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -538,6 +609,7 @@ pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityPreferredDurin } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -610,8 +682,31 @@ pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityPreferredDurin #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -635,6 +730,7 @@ pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityRequiredDuring } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. diff --git a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/addonproviders.rs b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/addonproviders.rs index 8fac07e18..b0648d601 100644 --- a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/addonproviders.rs +++ b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/addonproviders.rs @@ -307,8 +307,31 @@ pub struct AddonProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIg #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct AddonProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -332,6 +355,7 @@ pub struct AddonProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIg } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct AddonProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -404,8 +428,31 @@ pub struct AddonProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIg #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct AddonProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -429,6 +476,7 @@ pub struct AddonProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgn } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct AddonProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -532,8 +580,31 @@ pub struct AddonProviderDeploymentAffinityPodAntiAffinityPreferredDuringScheduli #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct AddonProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -557,6 +628,7 @@ pub struct AddonProviderDeploymentAffinityPodAntiAffinityPreferredDuringScheduli } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct AddonProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -629,8 +701,31 @@ pub struct AddonProviderDeploymentAffinityPodAntiAffinityPreferredDuringScheduli #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct AddonProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -654,6 +749,7 @@ pub struct AddonProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulin } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct AddonProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. diff --git a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/bootstrapproviders.rs b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/bootstrapproviders.rs index 6aa5c634b..95b0306db 100644 --- a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/bootstrapproviders.rs +++ b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/bootstrapproviders.rs @@ -307,8 +307,31 @@ pub struct BootstrapProviderDeploymentAffinityPodAffinityPreferredDuringScheduli #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -332,6 +355,7 @@ pub struct BootstrapProviderDeploymentAffinityPodAffinityPreferredDuringScheduli } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -404,8 +428,31 @@ pub struct BootstrapProviderDeploymentAffinityPodAffinityPreferredDuringScheduli #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -429,6 +476,7 @@ pub struct BootstrapProviderDeploymentAffinityPodAffinityRequiredDuringSchedulin } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -532,8 +580,31 @@ pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityPreferredDuringSche #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -557,6 +628,7 @@ pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityPreferredDuringSche } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -629,8 +701,31 @@ pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityPreferredDuringSche #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -654,6 +749,7 @@ pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityRequiredDuringSched } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BootstrapProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. diff --git a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/controlplaneproviders.rs b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/controlplaneproviders.rs index e7ede5a8b..da72c3d53 100644 --- a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/controlplaneproviders.rs +++ b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/controlplaneproviders.rs @@ -307,8 +307,31 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAffinityPreferredDuringSched #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -332,6 +355,7 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAffinityPreferredDuringSched } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -404,8 +428,31 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAffinityPreferredDuringSched #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -429,6 +476,7 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAffinityRequiredDuringSchedu } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -532,8 +580,31 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityPreferredDuringS #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -557,6 +628,7 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityPreferredDuringS } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -629,8 +701,31 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityPreferredDuringS #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -654,6 +749,7 @@ pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityRequiredDuringSc } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ControlPlaneProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. diff --git a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/coreproviders.rs b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/coreproviders.rs index 3aedcf6eb..754b0a1da 100644 --- a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/coreproviders.rs +++ b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/coreproviders.rs @@ -307,8 +307,31 @@ pub struct CoreProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgn #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -332,6 +355,7 @@ pub struct CoreProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgn } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -404,8 +428,31 @@ pub struct CoreProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgn #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -429,6 +476,7 @@ pub struct CoreProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgno } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -532,8 +580,31 @@ pub struct CoreProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulin #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -557,6 +628,7 @@ pub struct CoreProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulin } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -629,8 +701,31 @@ pub struct CoreProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulin #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -654,6 +749,7 @@ pub struct CoreProviderDeploymentAffinityPodAntiAffinityRequiredDuringScheduling } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CoreProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. diff --git a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/infrastructureproviders.rs b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/infrastructureproviders.rs index 9c4cf1b7d..55c65af39 100644 --- a/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/infrastructureproviders.rs +++ b/kube-custom-resources-rs/src/operator_cluster_x_k8s_io/v1alpha2/infrastructureproviders.rs @@ -307,8 +307,31 @@ pub struct InfrastructureProviderDeploymentAffinityPodAffinityPreferredDuringSch #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -332,6 +355,7 @@ pub struct InfrastructureProviderDeploymentAffinityPodAffinityPreferredDuringSch } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -404,8 +428,31 @@ pub struct InfrastructureProviderDeploymentAffinityPodAffinityPreferredDuringSch #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -429,6 +476,7 @@ pub struct InfrastructureProviderDeploymentAffinityPodAffinityRequiredDuringSche } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -532,8 +580,31 @@ pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityPreferredDurin #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -557,6 +628,7 @@ pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityPreferredDurin } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -629,8 +701,31 @@ pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityPreferredDurin #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. /// The term is applied to the union of the namespaces selected by this field /// and the ones listed in the namespaces field. @@ -654,6 +749,7 @@ pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityRequiredDuring } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InfrastructureProviderDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. diff --git a/kube-custom-resources-rs/src/operator_open_cluster_management_io/v1/klusterlets.rs b/kube-custom-resources-rs/src/operator_open_cluster_management_io/v1/klusterlets.rs index f7a4284ee..558b99d2d 100644 --- a/kube-custom-resources-rs/src/operator_open_cluster_management_io/v1/klusterlets.rs +++ b/kube-custom-resources-rs/src/operator_open_cluster_management_io/v1/klusterlets.rs @@ -117,6 +117,11 @@ pub struct KlusterletNodePlacementTolerations { /// RegistrationConfiguration contains the configuration of registration #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct KlusterletRegistrationConfiguration { + /// BootstrapKubeConfigs defines the ordered list of bootstrap kubeconfigs. The order decides which bootstrap kubeconfig to use first when rebootstrap. + /// When the agent loses the connection to the current hub over HubConnectionTimeoutSeconds, or the managedcluster CR is set `hubAcceptsClient=false` on the hub, the controller marks the related bootstrap kubeconfig as "failed". + /// A failed bootstrapkubeconfig won't be used for the duration specified by SkipFailedBootstrapKubeConfigSeconds. But if the user updates the content of a failed bootstrapkubeconfig, the "failed" mark will be cleared. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "bootstrapKubeConfigs")] + pub bootstrap_kube_configs: Option, /// clientCertExpirationSeconds represents the seconds of a client certificate to expire. If it is not set or 0, the default duration seconds will be set by the hub cluster. If the value is larger than the max signing duration seconds set on the hub cluster, the max signing duration seconds will be set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientCertExpirationSeconds")] pub client_cert_expiration_seconds: Option, @@ -134,6 +139,39 @@ pub struct KlusterletRegistrationConfiguration { pub kube_apiqps: Option, } +/// BootstrapKubeConfigs defines the ordered list of bootstrap kubeconfigs. The order decides which bootstrap kubeconfig to use first when rebootstrap. +/// When the agent loses the connection to the current hub over HubConnectionTimeoutSeconds, or the managedcluster CR is set `hubAcceptsClient=false` on the hub, the controller marks the related bootstrap kubeconfig as "failed". +/// A failed bootstrapkubeconfig won't be used for the duration specified by SkipFailedBootstrapKubeConfigSeconds. But if the user updates the content of a failed bootstrapkubeconfig, the "failed" mark will be cleared. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct KlusterletRegistrationConfigurationBootstrapKubeConfigs { + /// LocalSecretsConfig include a list of secrets that contains the kubeconfigs for ordered bootstrap kubeconifigs. The secrets must be in the same namespace where the agent controller runs. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localSecretsConfig")] + pub local_secrets_config: Option, + /// Type specifies the type of priority bootstrap kubeconfigs. By default, it is set to None, representing no priority bootstrap kubeconfigs are set. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, +} + +/// LocalSecretsConfig include a list of secrets that contains the kubeconfigs for ordered bootstrap kubeconifigs. The secrets must be in the same namespace where the agent controller runs. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct KlusterletRegistrationConfigurationBootstrapKubeConfigsLocalSecretsConfig { + /// HubConnectionTimeoutSeconds is used to set the timeout of connecting to the hub cluster. When agent loses the connection to the hub over the timeout seconds, the agent do a rebootstrap. By default is 10 mins. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "hubConnectionTimeoutSeconds")] + pub hub_connection_timeout_seconds: Option, + /// SecretNames is a list of secret names. The secrets are in the same namespace where the agent controller runs. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretNames")] + pub secret_names: Option>, +} + +/// BootstrapKubeConfigs defines the ordered list of bootstrap kubeconfigs. The order decides which bootstrap kubeconfig to use first when rebootstrap. +/// When the agent loses the connection to the current hub over HubConnectionTimeoutSeconds, or the managedcluster CR is set `hubAcceptsClient=false` on the hub, the controller marks the related bootstrap kubeconfig as "failed". +/// A failed bootstrapkubeconfig won't be used for the duration specified by SkipFailedBootstrapKubeConfigSeconds. But if the user updates the content of a failed bootstrapkubeconfig, the "failed" mark will be cleared. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum KlusterletRegistrationConfigurationBootstrapKubeConfigsType { + None, + LocalSecrets, +} + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct KlusterletRegistrationConfigurationFeatureGates { /// Feature is the key of feature gate. e.g. featuregate/Foo. diff --git a/kube-custom-resources-rs/src/org_eclipse_che/v2/checlusters.rs b/kube-custom-resources-rs/src/org_eclipse_che/v2/checlusters.rs index 576f03f2f..200008bbb 100644 --- a/kube-custom-resources-rs/src/org_eclipse_che/v2/checlusters.rs +++ b/kube-custom-resources-rs/src/org_eclipse_che/v2/checlusters.rs @@ -249,13 +249,13 @@ pub struct CheClusterComponentsCheServerProxy { /// The secret name that contains `user` and `password` for a proxy server. The secret must have a `app.kubernetes.io/part-of=che.eclipse.org` label. #[serde(default, skip_serializing_if = "Option::is_none", rename = "credentialsSecretName")] pub credentials_secret_name: Option, - /// A list of hosts that can be reached directly, bypassing the proxy. Specify wild card domain use the following form `.`, for example: - localhost - my.host.com - 123.42.12.32 Use only when a proxy configuration is required. The Operator respects OpenShift cluster-wide proxy configuration, defining `nonProxyHosts` in a custom resource leads to merging non-proxy hosts lists from the cluster proxy configuration, and the ones defined in the custom resources. See the following page: https://docs.openshift.com/container-platform/4.4/networking/enable-cluster-wide-proxy.html. + /// A list of hosts that can be reached directly, bypassing the proxy. Specify wild card domain use the following form `.`, for example: - localhost - my.host.com - 123.42.12.32 Use only when a proxy configuration is required. The Operator respects OpenShift cluster-wide proxy configuration, defining `nonProxyHosts` in a custom resource leads to merging non-proxy hosts lists from the cluster proxy configuration, and the ones defined in the custom resources. See the following page: https://docs.openshift.com/container-platform/latest/networking/enable-cluster-wide-proxy.html. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nonProxyHosts")] pub non_proxy_hosts: Option>, /// Proxy server port. #[serde(default, skip_serializing_if = "Option::is_none")] pub port: Option, - /// URL (protocol+hostname) of the proxy server. Use only when a proxy configuration is required. The Operator respects OpenShift cluster-wide proxy configuration, defining `url` in a custom resource leads to overriding the cluster proxy configuration. See the following page: https://docs.openshift.com/container-platform/4.4/networking/enable-cluster-wide-proxy.html. + /// URL (protocol+hostname) of the proxy server. Use only when a proxy configuration is required. The Operator respects OpenShift cluster-wide proxy configuration, defining `url` in a custom resource leads to overriding the cluster proxy configuration. See the following page: https://docs.openshift.com/container-platform/latest/networking/enable-cluster-wide-proxy.html. #[serde(default, skip_serializing_if = "Option::is_none")] pub url: Option, } diff --git a/kube-custom-resources-rs/src/postgres_operator_crunchydata_com/v1beta1/pgadmins.rs b/kube-custom-resources-rs/src/postgres_operator_crunchydata_com/v1beta1/pgadmins.rs index 0e29189aa..5ca329fc1 100644 --- a/kube-custom-resources-rs/src/postgres_operator_crunchydata_com/v1beta1/pgadmins.rs +++ b/kube-custom-resources-rs/src/postgres_operator_crunchydata_com/v1beta1/pgadmins.rs @@ -45,6 +45,9 @@ pub struct PGAdminSpec { /// ServerGroups for importing PostgresClusters to pgAdmin. To create a pgAdmin with no selectors, leave this field empty. A pgAdmin created with no `ServerGroups` will not automatically add any servers through discovery. PostgresClusters can still be added manually. #[serde(default, skip_serializing_if = "Option::is_none", rename = "serverGroups")] pub server_groups: Option>, + /// ServiceName will be used as the name of a ClusterIP service pointing to the pgAdmin pod and port. If the service already exists, PGO will update the service. For more information about services reference the Kubernetes and CrunchyData documentation. https://kubernetes.io/docs/concepts/services-networking/service/ + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceName")] + pub service_name: Option, /// Tolerations of the PGAdmin pod. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration #[serde(default, skip_serializing_if = "Option::is_none")] pub tolerations: Option>, @@ -796,6 +799,9 @@ pub struct PGAdminTolerations { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct PGAdminUsers { + /// A reference to the secret that holds the user's password. + #[serde(rename = "passwordRef")] + pub password_ref: PGAdminUsersPasswordRef, /// Role determines whether the user has admin privileges or not. Defaults to User. Valid options are Administrator and User. #[serde(default, skip_serializing_if = "Option::is_none")] pub role: Option, @@ -803,6 +809,19 @@ pub struct PGAdminUsers { pub username: String, } +/// A reference to the secret that holds the user's password. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct PGAdminUsersPasswordRef { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum PGAdminUsersRole { Administrator, diff --git a/kube-custom-resources-rs/src/projectcontour_io/v1alpha1/contourdeployments.rs b/kube-custom-resources-rs/src/projectcontour_io/v1alpha1/contourdeployments.rs index bd4eddf4e..5414f8335 100644 --- a/kube-custom-resources-rs/src/projectcontour_io/v1alpha1/contourdeployments.rs +++ b/kube-custom-resources-rs/src/projectcontour_io/v1alpha1/contourdeployments.rs @@ -438,6 +438,8 @@ pub struct ContourDeploymentEnvoyExtraVolumeMounts { /// to container and the other way around. /// When not set, MountPropagationNone is used. /// This field is beta in 1.10. + /// When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified + /// (which defaults to None). #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] pub mount_propagation: Option, /// This must match the Name of a Volume. @@ -446,6 +448,20 @@ pub struct ContourDeploymentEnvoyExtraVolumeMounts { /// Defaults to false. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, + /// RecursiveReadOnly specifies whether read-only mounts should be handled + /// recursively. + /// If ReadOnly is false, this field has no meaning and must be unspecified. + /// If ReadOnly is true, and this field is set to Disabled, the mount is not made + /// recursively read-only. If this field is set to IfPossible, the mount is made + /// recursively read-only, if it is supported by the container runtime. If this + /// field is set to Enabled, the mount is made recursively read-only if it is + /// supported by the container runtime, otherwise the pod will not be started and + /// an error will be generated to indicate the reason. + /// If this field is set to IfPossible or Enabled, MountPropagation must be set to + /// None (or be unspecified, which defaults to None). + /// If this field is not specified, it is treated as an equivalent of Disabled. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "recursiveReadOnly")] + pub recursive_read_only: Option, /// Path within the volume from which the container's volume should be mounted. /// Defaults to "" (volume's root). #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] @@ -856,7 +872,7 @@ pub struct ContourDeploymentEnvoyExtraVolumesDownwardApi { /// DownwardAPIVolumeFile represents information to create the file containing the pod field #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ContourDeploymentEnvoyExtraVolumesDownwardApiItems { - /// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + /// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, /// Optional: mode bits used to set permissions on this file, must be an octal value @@ -875,7 +891,7 @@ pub struct ContourDeploymentEnvoyExtraVolumesDownwardApiItems { pub resource_field_ref: Option, } -/// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +/// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ContourDeploymentEnvoyExtraVolumesDownwardApiItemsFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -1072,7 +1088,7 @@ pub struct ContourDeploymentEnvoyExtraVolumesEphemeralVolumeClaimTemplateSpec { /// If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be /// set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource /// exists. - /// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass + /// More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ /// (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributesClassName")] pub volume_attributes_class_name: Option, @@ -1650,7 +1666,7 @@ pub struct ContourDeploymentEnvoyExtraVolumesProjectedSourcesDownwardApi { /// DownwardAPIVolumeFile represents information to create the file containing the pod field #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ContourDeploymentEnvoyExtraVolumesProjectedSourcesDownwardApiItems { - /// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + /// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, /// Optional: mode bits used to set permissions on this file, must be an octal value @@ -1669,7 +1685,7 @@ pub struct ContourDeploymentEnvoyExtraVolumesProjectedSourcesDownwardApiItems { pub resource_field_ref: Option, } -/// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +/// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ContourDeploymentEnvoyExtraVolumesProjectedSourcesDownwardApiItemsFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". diff --git a/kube-custom-resources-rs/src/ray_io/v1/rayclusters.rs b/kube-custom-resources-rs/src/ray_io/v1/rayclusters.rs index b3c03ce7d..aa74a34a2 100644 --- a/kube-custom-resources-rs/src/ray_io/v1/rayclusters.rs +++ b/kube-custom-resources-rs/src/ray_io/v1/rayclusters.rs @@ -6158,5 +6158,7 @@ pub struct RayClusterStatusHead { pub pod_ip: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceIP")] pub service_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceName")] + pub service_name: Option, } diff --git a/kube-custom-resources-rs/src/ray_io/v1/rayjobs.rs b/kube-custom-resources-rs/src/ray_io/v1/rayjobs.rs index 23862a37c..dfb1244e2 100644 --- a/kube-custom-resources-rs/src/ray_io/v1/rayjobs.rs +++ b/kube-custom-resources-rs/src/ray_io/v1/rayjobs.rs @@ -9075,5 +9075,7 @@ pub struct RayJobStatusRayClusterStatusHead { pub pod_ip: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceIP")] pub service_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceName")] + pub service_name: Option, } diff --git a/kube-custom-resources-rs/src/ray_io/v1/rayservices.rs b/kube-custom-resources-rs/src/ray_io/v1/rayservices.rs index eb00eec4a..10f6699ec 100644 --- a/kube-custom-resources-rs/src/ray_io/v1/rayservices.rs +++ b/kube-custom-resources-rs/src/ray_io/v1/rayservices.rs @@ -6349,6 +6349,8 @@ pub struct RayServiceStatusActiveServiceStatusRayClusterStatusHead { pub pod_ip: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceIP")] pub service_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceName")] + pub service_name: Option, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] @@ -6421,5 +6423,7 @@ pub struct RayServiceStatusPendingServiceStatusRayClusterStatusHead { pub pod_ip: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceIP")] pub service_ip: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceName")] + pub service_name: Option, } diff --git a/kube-custom-resources-rs/src/scylla_scylladb_com/v1/scyllaclusters.rs b/kube-custom-resources-rs/src/scylla_scylladb_com/v1/scyllaclusters.rs index 3531bfa4e..e1a6684b8 100644 --- a/kube-custom-resources-rs/src/scylla_scylladb_com/v1/scyllaclusters.rs +++ b/kube-custom-resources-rs/src/scylla_scylladb_com/v1/scyllaclusters.rs @@ -151,6 +151,9 @@ pub struct ScyllaClusterAlternatorServingCertificateUserManagedOptions { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ScyllaClusterBackups { + /// cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cron: Option, /// dc is a list of datacenter glob patterns, e.g. 'dc1,!otherdc*' used to specify the DCs to include or exclude from backup. #[serde(default, skip_serializing_if = "Option::is_none")] pub dc: Option>, @@ -181,6 +184,9 @@ pub struct ScyllaClusterBackups { /// startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. #[serde(default, skip_serializing_if = "Option::is_none", rename = "startDate")] pub start_date: Option, + /// timezone specifies the timezone of cron field. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub timezone: Option, /// uploadParallel is a list of upload parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters. #[serde(default, skip_serializing_if = "Option::is_none", rename = "uploadParallel")] pub upload_parallel: Option>, @@ -1984,6 +1990,9 @@ pub struct ScyllaClusterReadinessGates { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ScyllaClusterRepairs { + /// cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cron: Option, /// dc is a list of datacenter glob patterns, e.g. 'dc1', '!otherdc*' used to specify the DCs to include or exclude from backup. #[serde(default, skip_serializing_if = "Option::is_none")] pub dc: Option>, @@ -2017,6 +2026,9 @@ pub struct ScyllaClusterRepairs { /// startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. #[serde(default, skip_serializing_if = "Option::is_none", rename = "startDate")] pub start_date: Option, + /// timezone specifies the timezone of cron field. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub timezone: Option, } /// status is the current status of this scylla cluster. @@ -2059,6 +2071,9 @@ pub struct ScyllaClusterStatus { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ScyllaClusterStatusBackups { + /// cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cron: Option, /// dc is a list of datacenter glob patterns, e.g. 'dc1,!otherdc*' used to specify the DCs to include or exclude from backup. #[serde(default, skip_serializing_if = "Option::is_none")] pub dc: Option>, @@ -2095,6 +2110,9 @@ pub struct ScyllaClusterStatusBackups { /// startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. #[serde(default, skip_serializing_if = "Option::is_none", rename = "startDate")] pub start_date: Option, + /// timezone specifies the timezone of cron field. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub timezone: Option, /// uploadParallel is a list of upload parallelism limits in the format [:]. The : part is optional and allows for specifying different limits in selected datacenters. If The : part is not set the limit is global (e.g. 'dc1:2,5') the runs are parallel in n nodes (2 in dc1) and n nodes in all the other datacenters. #[serde(default, skip_serializing_if = "Option::is_none", rename = "uploadParallel")] pub upload_parallel: Option>, @@ -2142,6 +2160,9 @@ pub struct ScyllaClusterStatusRacksConditions { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ScyllaClusterStatusRepairs { + /// cron specifies the task schedule as a cron expression. It supports an extended syntax including @monthly, @weekly, @daily, @midnight, @hourly, @every X[h|m|s]. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cron: Option, /// dc is a list of datacenter glob patterns, e.g. 'dc1', '!otherdc*' used to specify the DCs to include or exclude from backup. #[serde(default, skip_serializing_if = "Option::is_none")] pub dc: Option>, @@ -2181,6 +2202,9 @@ pub struct ScyllaClusterStatusRepairs { /// startDate specifies the task start date expressed in the RFC3339 format or now[+duration], e.g. now+3d2h10m, valid units are d, h, m, s. #[serde(default, skip_serializing_if = "Option::is_none", rename = "startDate")] pub start_date: Option, + /// timezone specifies the timezone of cron field. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub timezone: Option, } /// upgrade reflects state of ongoing upgrade procedure. diff --git a/kube-custom-resources-rs/src/secrets_hashicorp_com/v1beta1/vaultdynamicsecrets.rs b/kube-custom-resources-rs/src/secrets_hashicorp_com/v1beta1/vaultdynamicsecrets.rs index df52f5ca8..06dfcd148 100644 --- a/kube-custom-resources-rs/src/secrets_hashicorp_com/v1beta1/vaultdynamicsecrets.rs +++ b/kube-custom-resources-rs/src/secrets_hashicorp_com/v1beta1/vaultdynamicsecrets.rs @@ -266,6 +266,10 @@ pub struct VaultDynamicSecretStatus { /// StaticCredsMetaData contains the static creds response meta-data #[serde(default, skip_serializing_if = "Option::is_none", rename = "staticCredsMetaData")] pub static_creds_meta_data: Option, + /// VaultClientMeta contains the status of the Vault client and is used during + /// resource reconciliation. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "vaultClientMeta")] + pub vault_client_meta: Option, } /// SecretLease for the Vault secret. @@ -303,3 +307,16 @@ pub struct VaultDynamicSecretStatusStaticCredsMetaData { pub ttl: i64, } +/// VaultClientMeta contains the status of the Vault client and is used during +/// resource reconciliation. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct VaultDynamicSecretStatusVaultClientMeta { + /// CacheKey is the unique key used to identify the client cache. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "cacheKey")] + pub cache_key: Option, + /// ID is the Vault ID of the authenticated client. The ID should never contain + /// any sensitive information. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub id: Option, +} + diff --git a/kube-custom-resources-rs/src/sparkoperator_k8s_io/v1beta2/scheduledsparkapplications.rs b/kube-custom-resources-rs/src/sparkoperator_k8s_io/v1beta2/scheduledsparkapplications.rs index b1ec13008..bce28b3be 100644 --- a/kube-custom-resources-rs/src/sparkoperator_k8s_io/v1beta2/scheduledsparkapplications.rs +++ b/kube-custom-resources-rs/src/sparkoperator_k8s_io/v1beta2/scheduledsparkapplications.rs @@ -175,6 +175,8 @@ pub struct ScheduledSparkApplicationTemplateDriver { pub service_account: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAnnotations")] pub service_annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceLabels")] + pub service_labels: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "shareProcessNamespace")] pub share_process_namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/sparkoperator_k8s_io/v1beta2/sparkapplications.rs b/kube-custom-resources-rs/src/sparkoperator_k8s_io/v1beta2/sparkapplications.rs index d92b2655b..7df352e33 100644 --- a/kube-custom-resources-rs/src/sparkoperator_k8s_io/v1beta2/sparkapplications.rs +++ b/kube-custom-resources-rs/src/sparkoperator_k8s_io/v1beta2/sparkapplications.rs @@ -161,6 +161,8 @@ pub struct SparkApplicationDriver { pub service_account: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAnnotations")] pub service_annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceLabels")] + pub service_labels: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "shareProcessNamespace")] pub share_process_namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/tests_testkube_io/v1/testtriggers.rs b/kube-custom-resources-rs/src/tests_testkube_io/v1/testtriggers.rs index da62bc5f6..335c4b38f 100644 --- a/kube-custom-resources-rs/src/tests_testkube_io/v1/testtriggers.rs +++ b/kube-custom-resources-rs/src/tests_testkube_io/v1/testtriggers.rs @@ -122,6 +122,8 @@ pub enum TestTriggerExecution { Test, #[serde(rename = "testsuite")] Testsuite, + #[serde(rename = "testworkflow")] + Testworkflow, } /// What resource probes should be matched diff --git a/kube-custom-resources-rs/src/work_karmada_io/v1alpha2/clusterresourcebindings.rs b/kube-custom-resources-rs/src/work_karmada_io/v1alpha2/clusterresourcebindings.rs index 577f0ff0a..3bd70e4ad 100644 --- a/kube-custom-resources-rs/src/work_karmada_io/v1alpha2/clusterresourcebindings.rs +++ b/kube-custom-resources-rs/src/work_karmada_io/v1alpha2/clusterresourcebindings.rs @@ -42,6 +42,10 @@ pub struct ClusterResourceBindingSpec { /// RequiredBy represents the list of Bindings that depend on the referencing resource. #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredBy")] pub required_by: Option>, + /// RescheduleTriggeredAt is a timestamp representing when the referenced resource is triggered rescheduling. When this field is updated, it means a rescheduling is manually triggered by user, and the expected behavior of this action is to do a complete recalculation without referring to last scheduling results. It works with the status.lastScheduledTime field, and only when this timestamp is later than timestamp in status.lastScheduledTime will the rescheduling actually execute, otherwise, ignored. + /// It is represented in RFC3339 form (like '2006-01-02T15:04:05Z') and is in UTC. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "rescheduleTriggeredAt")] + pub reschedule_triggered_at: Option, /// Resource represents the Kubernetes resource to be propagated. pub resource: ClusterResourceBindingResource, /// SchedulerName represents which scheduler to proceed the scheduling. It inherits directly from the associated PropagationPolicy(or ClusterPropagationPolicy). @@ -584,6 +588,9 @@ pub struct ClusterResourceBindingStatus { /// Conditions contain the different condition statuses. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, + /// LastScheduledTime representing the latest timestamp when scheduler successfully finished a scheduling. It is represented in RFC3339 form (like '2006-01-02T15:04:05Z') and is in UTC. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastScheduledTime")] + pub last_scheduled_time: Option, /// SchedulerObservedGeneration is the generation(.metadata.generation) observed by the scheduler. If SchedulerObservedGeneration is less than the generation in metadata means the scheduler hasn't confirmed the scheduling result or hasn't done the schedule yet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "schedulerObservedGeneration")] pub scheduler_observed_generation: Option, diff --git a/kube-custom-resources-rs/src/work_karmada_io/v1alpha2/resourcebindings.rs b/kube-custom-resources-rs/src/work_karmada_io/v1alpha2/resourcebindings.rs index 6f38b6534..eae92a2d8 100644 --- a/kube-custom-resources-rs/src/work_karmada_io/v1alpha2/resourcebindings.rs +++ b/kube-custom-resources-rs/src/work_karmada_io/v1alpha2/resourcebindings.rs @@ -43,6 +43,10 @@ pub struct ResourceBindingSpec { /// RequiredBy represents the list of Bindings that depend on the referencing resource. #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredBy")] pub required_by: Option>, + /// RescheduleTriggeredAt is a timestamp representing when the referenced resource is triggered rescheduling. When this field is updated, it means a rescheduling is manually triggered by user, and the expected behavior of this action is to do a complete recalculation without referring to last scheduling results. It works with the status.lastScheduledTime field, and only when this timestamp is later than timestamp in status.lastScheduledTime will the rescheduling actually execute, otherwise, ignored. + /// It is represented in RFC3339 form (like '2006-01-02T15:04:05Z') and is in UTC. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "rescheduleTriggeredAt")] + pub reschedule_triggered_at: Option, /// Resource represents the Kubernetes resource to be propagated. pub resource: ResourceBindingResource, /// SchedulerName represents which scheduler to proceed the scheduling. It inherits directly from the associated PropagationPolicy(or ClusterPropagationPolicy). @@ -585,6 +589,9 @@ pub struct ResourceBindingStatus { /// Conditions contain the different condition statuses. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, + /// LastScheduledTime representing the latest timestamp when scheduler successfully finished a scheduling. It is represented in RFC3339 form (like '2006-01-02T15:04:05Z') and is in UTC. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastScheduledTime")] + pub last_scheduled_time: Option, /// SchedulerObservedGeneration is the generation(.metadata.generation) observed by the scheduler. If SchedulerObservedGeneration is less than the generation in metadata means the scheduler hasn't confirmed the scheduling result or hasn't done the schedule yet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "schedulerObservedGeneration")] pub scheduler_observed_generation: Option, diff --git a/kube-custom-resources-rs/src/workloads_kubeblocks_io/v1alpha1/instancesets.rs b/kube-custom-resources-rs/src/workloads_kubeblocks_io/v1alpha1/instancesets.rs index cdf0c8239..ca9b82d85 100644 --- a/kube-custom-resources-rs/src/workloads_kubeblocks_io/v1alpha1/instancesets.rs +++ b/kube-custom-resources-rs/src/workloads_kubeblocks_io/v1alpha1/instancesets.rs @@ -6485,51 +6485,48 @@ pub struct InstanceSetVolumeClaimTemplatesStatus { /// Represents the current information about the state machine. This data may be out of date. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct InstanceSetStatus { - /// Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset. + /// Total number of available instances (ready for at least minReadySeconds) targeted by this InstanceSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableReplicas")] pub available_replicas: Option, - /// collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "collisionCount")] - pub collision_count: Option, - /// Represents the latest available observations of a statefulset's current state. + /// Represents the latest available observations of an instanceset's current state. Known .status.conditions.type are: "InstanceFailure", "InstanceReady" #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// When not empty, indicates the version of the InstanceSet used to generate the underlying workload. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentGeneration")] - pub current_generation: Option, - /// currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision. + /// currentReplicas is the number of instances created by the InstanceSet controller from the InstanceSet version indicated by CurrentRevisions. #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentReplicas")] pub current_replicas: Option, - /// currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas). + /// currentRevision, if not empty, indicates the version of the InstanceSet used to generate instances in the sequence [0,currentReplicas). #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentRevision")] pub current_revision: Option, /// currentRevisions, if not empty, indicates the old version of the InstanceSet used to generate the underlying workload. key is the pod name, value is the revision. #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentRevisions")] pub current_revisions: Option>, - /// Defines the initial number of pods (members) when the cluster is first initialized. This value is set to spec.Replicas at the time of object creation and remains constant thereafter. - #[serde(rename = "initReplicas")] - pub init_replicas: i32, + /// Defines the initial number of instances when the cluster is first initialized. This value is set to spec.Replicas at the time of object creation and remains constant thereafter. Used only when spec.roles set. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "initReplicas")] + pub init_replicas: Option, /// Provides the status of each member in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "membersStatus")] pub members_status: Option>, - /// observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server. + /// observedGeneration is the most recent generation observed for this InstanceSet. It corresponds to the InstanceSet's generation, which is updated on mutation by the API Server. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Represents the number of pods (members) that have already reached the MembersStatus during the cluster initialization stage. This value remains constant once it equals InitReplicas. + /// Represents the number of instances that have already reached the MembersStatus during the cluster initialization stage. This value remains constant once it equals InitReplicas. Used only when spec.roles set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyInitReplicas")] pub ready_init_replicas: Option, - /// readyReplicas is the number of pods created for this StatefulSet with a Ready Condition. + /// readyReplicas is the number of instances created for this InstanceSet with a Ready Condition. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] pub ready_replicas: Option, - /// replicas is the number of Pods created by the StatefulSet controller. + /// Indicates whether it is required for the InstanceSet to have at least one primary instance ready. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyWithoutPrimary")] + pub ready_without_primary: Option, + /// replicas is the number of instances created by the InstanceSet controller. pub replicas: i32, - /// updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas) + /// updateRevision, if not empty, indicates the version of the InstanceSet used to generate instances in the sequence [replicas-updatedReplicas,replicas) #[serde(default, skip_serializing_if = "Option::is_none", rename = "updateRevision")] pub update_revision: Option, /// updateRevisions, if not empty, indicates the new version of the InstanceSet used to generate the underlying workload. key is the pod name, value is the revision. #[serde(default, skip_serializing_if = "Option::is_none", rename = "updateRevisions")] pub update_revisions: Option>, - /// updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision. + /// updatedReplicas is the number of instances created by the InstanceSet controller from the InstanceSet version indicated by UpdateRevisions. #[serde(default, skip_serializing_if = "Option::is_none", rename = "updatedReplicas")] pub updated_replicas: Option, } @@ -6539,12 +6536,6 @@ pub struct InstanceSetStatusMembersStatus { /// Represents the name of the pod. #[serde(rename = "podName")] pub pod_name: String, - /// Whether the corresponding Pod is in ready condition. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ready: Option, - /// Indicates whether it is required for the InstanceSet to have at least one primary instance ready. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyWithoutPrimary")] - pub ready_without_primary: Option, /// Defines the role of the replica in the cluster. #[serde(default, skip_serializing_if = "Option::is_none")] pub role: Option,