From da3af5cd15de3929caeb218021d3317ae8e8990a Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Mon, 13 May 2024 12:53:35 +0000 Subject: [PATCH 01/62] Initial design of additionalVolumes support Signed-off-by: Casper Thygesen Signed-off-by: KastTrifork --- .../common/template/AdditionalVolume.java | 125 + .../model/common/template/PodTemplate.java | 15 +- .../operator/cluster/model/KafkaCluster.java | 62 + .../crds/040-Crd-kafka.yaml | 12754 +++++++-------- .../crds/040-Crd-kafka.yaml | 12841 ++++++++-------- .../cluster-operator/040-Crd-kafka.yaml | 535 + .../041-Crd-kafkaconnect.yaml | 178 + .../045-Crd-kafkamirrormaker.yaml | 89 + .../cluster-operator/046-Crd-kafkabridge.yaml | 89 + .../048-Crd-kafkamirrormaker2.yaml | 178 + .../04A-Crd-kafkanodepool.yaml | 89 + 11 files changed, 14747 insertions(+), 12208 deletions(-) create mode 100644 api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java new file mode 100644 index 00000000000..37ea2c56941 --- /dev/null +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java @@ -0,0 +1,125 @@ +/* + * Copyright Strimzi authors. + * License: Apache License 2.0 (see the file LICENSE or http://apache.org/licenses/LICENSE-2.0.html). + */ +package io.strimzi.api.kafka.model.common.template; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.fabric8.kubernetes.api.model.CSIVolumeSource; +import io.fabric8.kubernetes.api.model.ConfigMapVolumeSource; +import io.fabric8.kubernetes.api.model.EmptyDirVolumeSource; +import io.fabric8.kubernetes.api.model.SecretVolumeSource; +import io.strimzi.api.kafka.model.common.Constants; +import io.strimzi.api.kafka.model.common.UnknownPropertyPreserving; +import io.strimzi.crdgenerator.annotations.Description; +import io.strimzi.crdgenerator.annotations.KubeLink; +import io.sundr.builder.annotations.Buildable; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.HashMap; +import java.util.Map; + +/** + * Representation of additional volumes for Strimzi resources. + */ +@Buildable(editableEnabled = false, builderPackage = Constants.FABRIC8_KUBERNETES_API) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ "name", "path", "subPath", "secret", "configMap", "emptyDir", "csi" }) +@EqualsAndHashCode +@ToString +public class AdditionalVolume implements UnknownPropertyPreserving { + private String name; + private String path; + private String subPath; + private SecretVolumeSource secret; + private ConfigMapVolumeSource configMap; + private EmptyDirVolumeSource emptyDir; + private CSIVolumeSource csi; + private Map additionalProperties = new HashMap<>(0); + + @Description("Name to use for the volume. Required.") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Description("Path in the container to mount the volume at. Required.") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + @Description("SubPath of the referenced volume to mount.") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + public String getSubPath() { + return subPath; + } + + public void setSubPath(String subPath) { + this.subPath = subPath; + } + + @Description("Secret to use populate the volume.") + @KubeLink(group = "core", version = "v1", kind = "secretvolumesource") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + public SecretVolumeSource getSecret() { + return secret; + } + + public void setSecret(SecretVolumeSource secret) { + this.secret = secret; + } + + @Description("ConfigMap to use to populate the volume.") + @KubeLink(group = "core", version = "v1", kind = "configmapvolumesource") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + public ConfigMapVolumeSource getConfigMap() { + return configMap; + } + + public void setConfigMap(ConfigMapVolumeSource configMap) { + this.configMap = configMap; + } + + @Description("EmptyDir to use to populate the volume.") + @KubeLink(group = "core", version = "v1", kind = "emptydirvolumesource") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + public EmptyDirVolumeSource getEmptyDir() { + return emptyDir; + } + + public void setEmptyDir(EmptyDirVolumeSource emptyDir) { + this.emptyDir = emptyDir; + } + + @Description("CSI object to use to populate the volume.") + @KubeLink(group = "core", version = "v1", kind = "csivolumesource") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + public CSIVolumeSource getCsi() { + return csi; + } + + public void setCsi(CSIVolumeSource csi) { + this.csi = csi; + } + + @Override + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @Override + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } +} \ No newline at end of file diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java index dde796a12cf..4b94731a8c3 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java @@ -38,7 +38,7 @@ @JsonInclude(JsonInclude.Include.NON_DEFAULT) @JsonPropertyOrder({"metadata", "imagePullSecrets", "securityContext", "terminationGracePeriodSeconds", "affinity", "tolerations", "topologySpreadConstraints", "priorityClassName", "schedulerName", "hostAliases", - "enableServiceLinks", "tmpDirSizeLimit"}) + "enableServiceLinks", "tmpDirSizeLimit", "additionalVolumes"}) @EqualsAndHashCode @ToString @DescriptionFile @@ -51,10 +51,12 @@ public class PodTemplate implements HasMetadataTemplate, UnknownPropertyPreservi private List tolerations; private List topologySpreadConstraints; private String priorityClassName; + private String priorityClassName2; private String schedulerName; private List hostAliases; private Boolean enableServiceLinks; private String tmpDirSizeLimit; + private List additionalVolumes; private Map additionalProperties = new HashMap<>(0); @@ -196,6 +198,17 @@ public void setTmpDirSizeLimit(String tmpDirSizeLimit) { this.tmpDirSizeLimit = tmpDirSizeLimit; } + @Description("Additional volumes that can be mounted to the pod.") + @JsonProperty("additionalVolumes") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + public List getAdditionalVolumes() { + return additionalVolumes; + } + + public void setAdditionalVolumes(List additionalVolumes) { + this.additionalVolumes = additionalVolumes; + } + @Override public Map getAdditionalProperties() { return this.additionalProperties; diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java index 44a9b0800dd..a08fc1a1ebe 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java @@ -1277,6 +1277,43 @@ private List generatePersistentVolumeClaimsForPool(KafkaP volumeList.add(VolumeUtils.createSecretVolume(CLIENT_CA_CERTS_VOLUME, KafkaResources.clientsCaCertificateSecretName(cluster), isOpenShift)); volumeList.add(VolumeUtils.createConfigMapVolume(LOG_AND_METRICS_CONFIG_VOLUME_NAME, podName)); volumeList.add(VolumeUtils.createEmptyDirVolume("ready-files", "1Ki", "Memory")); + for (int i = 0; i < templatePod.getAdditionalVolumes().size(); i++) { + AdditionalVolume volumeConfig = templatePod.getAdditionalVolumes().get(i); + + if (volumeConfig.getConfigMap() != null) { + volumeList.add(new VolumeBuilder() + .withName(volumeConfig.getName()) + .withNewConfigMap() + .withName(volumeConfig.getConfigMap().getName()) + .endConfigMap() + .build()); + } + + if (volumeConfig.getSecret() != null) { + volumeList.add(new VolumeBuilder() + .withName(volumeConfig.getName()) + .withNewSecret() + .withSecretName(volumeConfig.getSecret().getSecretName()) + .endSecret() + .build()); + } + + if (volumeConfig.getEmptyDir() != null) { + volumeList.add(new VolumeBuilder() + .withName(volumeConfig.getName()) + .withNewEmptyDir() + .withMedium(volumeConfig.getEmptyDir().getMedium()) + .endEmptyDir() + .build()); + } + + if (volumeConfig.getCsi() != null) { + volumeList.add(new VolumeBuilder() + .withName(volumeConfig.getName()) + .withCsi(volumeConfig.getCsi()) + .build()); + } + } for (GenericKafkaListener listener : listeners) { if (listener.isTls() @@ -1320,6 +1357,8 @@ private List generatePersistentVolumeClaimsForPool(KafkaP return volumeList; } + + /** * Generates a list of volumes used by PodSets. For StrimziPodSet, it needs to include also all persistent claim * volumes which StatefulSet would generate on its own. @@ -1348,6 +1387,7 @@ private List getPodSetVolumes(String podName, Storage storage, PodTempla * @return List of volume mounts */ private List getVolumeMounts(Storage storage) { + //todo additionalVolumes List volumeMountList = new ArrayList<>(VolumeUtils.createVolumeMounts(storage, false)); volumeMountList.add(VolumeUtils.createTempDirVolumeMount()); volumeMountList.add(VolumeUtils.createVolumeMount(CLUSTER_CA_CERTS_VOLUME, CLUSTER_CA_CERTS_VOLUME_MOUNT)); @@ -1356,6 +1396,28 @@ private List getVolumeMounts(Storage storage) { volumeMountList.add(VolumeUtils.createVolumeMount(LOG_AND_METRICS_CONFIG_VOLUME_NAME, LOG_AND_METRICS_CONFIG_VOLUME_MOUNT)); volumeMountList.add(VolumeUtils.createVolumeMount("ready-files", "/var/opt/kafka")); + for (int i = 0; i < templatePod.getAdditionalVolumes().size(); i++) { + AdditionalVolume volumeConfig = templatePod.getAdditionalVolumes().get(i); + boolean readOnly = true; + String subPath = ""; + + if (volumeConfig.getEmptyDir() != null) { + readOnly = false; + } + + // SubPaths are only supported for ConfigMaps, Secrets and CSI volumes + if (volumeConfig.getConfigMap() != null || volumeConfig.getSecret() != null || volumeConfig.getCsi() != null) { + subPath = volumeConfig.getSubPath().trim(); + } + + volumeMountList.add(new VolumeMountBuilder() + .withName(volumeConfig.getName()) + .withReadOnly(readOnly) + .withMountPath(volumeConfig.getPath()) + .withSubPath(subPath) + .build()); + } + if (rack != null || isExposedWithNodePort()) { volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); } diff --git a/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml b/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml index ed78e4722c9..6b07bb71fb3 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml @@ -5,7 +5,6 @@ metadata: labels: app: strimzi strimzi.io/crd-install: "true" - component: kafkas.kafka.strimzi.io-crd spec: group: kafka.strimzi.io names: @@ -14,122 +13,216 @@ spec: singular: kafka plural: kafkas shortNames: - - k + - k categories: - - strimzi + - strimzi scope: Namespaced conversion: strategy: None versions: - - name: v1beta2 - served: true - storage: true - subresources: - status: {} - additionalPrinterColumns: - - name: Desired Kafka replicas - description: The desired number of Kafka replicas in the cluster - jsonPath: .spec.kafka.replicas - type: integer - - name: Desired ZK replicas - description: The desired number of ZooKeeper replicas in the cluster - jsonPath: .spec.zookeeper.replicas - type: integer - - name: Ready - description: The state of the custom resource - jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" - type: string - - name: Metadata State - description: The state of the cluster metadata - jsonPath: .status.kafkaMetadataState - type: string - - name: Warnings - description: Warnings related to the custom resource - jsonPath: ".status.conditions[?(@.type==\"Warning\")].status" - type: string - schema: - openAPIV3Schema: - type: object - properties: - apiVersion: - type: string - 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" - kind: - type: string - 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" - metadata: - type: object - spec: - type: object - properties: - kafka: - type: object - properties: - version: - type: string - description: The Kafka broker version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. - metadataVersion: - type: string - description: "The KRaft metadata version used by the Kafka cluster. This property is ignored when running in ZooKeeper mode. If the property is not set, it defaults to the metadata version that corresponds to the `version` property." - replicas: - type: integer - minimum: 1 - description: The number of pods in the cluster. This property is required when node pools are not used. - image: - type: string - description: "The container image used for Kafka pods. If the property is not set, the default Kafka image version is determined based on the `version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration. Changing the Kafka image version does not automatically update the image versions for other components, such as Kafka Exporter. " - listeners: - type: array - minItems: 1 - items: - type: object - properties: - name: - type: string - pattern: "^[a-z0-9]{1,11}$" - description: Name of the listener. The name will be used to identify the listener and the related Kubernetes objects. The name has to be unique within given a Kafka cluster. The name can consist of lowercase characters and numbers and be up to 11 characters long. - port: - type: integer - minimum: 9092 - description: "Port number used by the listener inside Kafka. The port number has to be unique within a given Kafka cluster. Allowed port numbers are 9092 and higher with the exception of ports 9404 and 9999, which are already used for Prometheus and JMX. Depending on the listener type, the port number might not be the same as the port number that connects Kafka clients." - type: - type: string - enum: - - internal - - route - - loadbalancer - - nodeport - - ingress - - cluster-ip - description: "Type of the listener. The supported types are as follows: \n\n* `internal` type exposes Kafka internally only within the Kubernetes cluster.\n* `route` type uses OpenShift Routes to expose Kafka.\n* `loadbalancer` type uses LoadBalancer type services to expose Kafka.\n* `nodeport` type uses NodePort type services to expose Kafka.\n* `ingress` type uses Kubernetes Nginx Ingress to expose Kafka with TLS passthrough.\n* `cluster-ip` type uses a per-broker `ClusterIP` service.\n" - tls: - type: boolean - description: Enables TLS encryption on the listener. This is a required property. - authentication: - type: object - properties: - accessTokenIsJwt: - type: boolean - description: Configure whether the access token is treated as JWT. This must be set to `false` if the authorization server returns opaque tokens. Defaults to `true`. - checkAccessTokenType: - type: boolean - description: Configure whether the access token type check is performed or not. This should be set to `false` if the authorization server does not include 'typ' claim in JWT token. Defaults to `true`. - checkAudience: - type: boolean - description: "Enable or disable audience checking. Audience checks identify the recipients of tokens. If audience checking is enabled, the OAuth Client ID also has to be configured using the `clientId` property. The Kafka broker will reject tokens that do not have its `clientId` in their `aud` (audience) claim.Default value is `false`." - checkIssuer: - type: boolean - description: Enable or disable issuer checking. By default issuer is checked using the value configured by `validIssuerUri`. Default value is `true`. - clientAudience: - type: string - description: The audience to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. - clientId: - type: string - description: OAuth Client ID which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. - clientScope: - type: string - description: The scope to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. - clientSecret: + - name: v1beta2 + served: true + storage: true + subresources: + status: {} + additionalPrinterColumns: + - name: Desired Kafka replicas + description: The desired number of Kafka replicas in the cluster + jsonPath: .spec.kafka.replicas + type: integer + - name: Desired ZK replicas + description: The desired number of ZooKeeper replicas in the cluster + jsonPath: .spec.zookeeper.replicas + type: integer + - name: Ready + description: The state of the custom resource + jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" + type: string + - name: Metadata State + description: The state of the cluster metadata + jsonPath: .status.kafkaMetadataState + type: string + - name: Warnings + description: Warnings related to the custom resource + jsonPath: ".status.conditions[?(@.type==\"Warning\")].status" + type: string + schema: + openAPIV3Schema: + type: object + properties: + apiVersion: + type: string + 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" + kind: + type: string + 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" + metadata: + type: object + spec: + type: object + properties: + kafka: + type: object + properties: + version: + type: string + description: The Kafka broker version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. + metadataVersion: + type: string + description: "The KRaft metadata version used by the Kafka cluster. This property is ignored when running in ZooKeeper mode. If the property is not set, it defaults to the metadata version that corresponds to the `version` property." + replicas: + type: integer + minimum: 1 + description: The number of pods in the cluster. This property is required when node pools are not used. + image: + type: string + description: "The container image used for Kafka pods. If the property is not set, the default Kafka image version is determined based on the `version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration. Changing the Kafka image version does not automatically update the image versions for other components, such as Kafka Exporter. " + listeners: + type: array + minItems: 1 + items: + type: object + properties: + name: + type: string + pattern: "^[a-z0-9]{1,11}$" + description: Name of the listener. The name will be used to identify the listener and the related Kubernetes objects. The name has to be unique within given a Kafka cluster. The name can consist of lowercase characters and numbers and be up to 11 characters long. + port: + type: integer + minimum: 9092 + description: "Port number used by the listener inside Kafka. The port number has to be unique within a given Kafka cluster. Allowed port numbers are 9092 and higher with the exception of ports 9404 and 9999, which are already used for Prometheus and JMX. Depending on the listener type, the port number might not be the same as the port number that connects Kafka clients." + type: + type: string + enum: + - internal + - route + - loadbalancer + - nodeport + - ingress + - cluster-ip + description: "Type of the listener. The supported types are as follows: \n\n* `internal` type exposes Kafka internally only within the Kubernetes cluster.\n* `route` type uses OpenShift Routes to expose Kafka.\n* `loadbalancer` type uses LoadBalancer type services to expose Kafka.\n* `nodeport` type uses NodePort type services to expose Kafka.\n* `ingress` type uses Kubernetes Nginx Ingress to expose Kafka with TLS passthrough.\n* `cluster-ip` type uses a per-broker `ClusterIP` service.\n" + tls: + type: boolean + description: Enables TLS encryption on the listener. This is a required property. + authentication: + type: object + properties: + accessTokenIsJwt: + type: boolean + description: Configure whether the access token is treated as JWT. This must be set to `false` if the authorization server returns opaque tokens. Defaults to `true`. + checkAccessTokenType: + type: boolean + description: Configure whether the access token type check is performed or not. This should be set to `false` if the authorization server does not include 'typ' claim in JWT token. Defaults to `true`. + checkAudience: + type: boolean + description: "Enable or disable audience checking. Audience checks identify the recipients of tokens. If audience checking is enabled, the OAuth Client ID also has to be configured using the `clientId` property. The Kafka broker will reject tokens that do not have its `clientId` in their `aud` (audience) claim.Default value is `false`." + checkIssuer: + type: boolean + description: Enable or disable issuer checking. By default issuer is checked using the value configured by `validIssuerUri`. Default value is `true`. + clientAudience: + type: string + description: The audience to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. + clientId: + type: string + description: OAuth Client ID which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. + clientScope: + type: string + description: The scope to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. + clientSecret: + type: object + properties: + key: + type: string + description: The key under which the secret value is stored in the Kubernetes Secret. + secretName: + type: string + description: The name of the Kubernetes Secret containing the secret value. + required: + - key + - secretName + description: Link to Kubernetes Secret containing the OAuth client secret which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. + connectTimeoutSeconds: + type: integer + description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." + customClaimCheck: + type: string + description: JsonPath filter query to be applied to the JWT token or to the response of the introspection endpoint for additional token validation. Not set by default. + disableTlsHostnameVerification: + type: boolean + description: Enable or disable TLS hostname verification. Default value is `false`. + enableECDSA: + type: boolean + description: Enable or disable ECDSA support by installing BouncyCastle crypto provider. ECDSA support is always enabled. The BouncyCastle libraries are no longer packaged with Strimzi. Value is ignored. + enableMetrics: + type: boolean + description: Enable or disable OAuth metrics. Default value is `false`. + enableOauthBearer: + type: boolean + description: Enable or disable OAuth authentication over SASL_OAUTHBEARER. Default value is `true`. + enablePlain: + type: boolean + description: Enable or disable OAuth authentication over SASL_PLAIN. There is no re-authentication support when this mechanism is used. Default value is `false`. + failFast: + type: boolean + description: Enable or disable termination of Kafka broker processes due to potentially recoverable runtime errors during startup. Default value is `true`. + fallbackUserNameClaim: + type: string + description: The fallback username claim to be used for the user id if the claim specified by `userNameClaim` is not present. This is useful when `client_credentials` authentication only results in the client id being provided in another claim. It only takes effect if `userNameClaim` is set. + fallbackUserNamePrefix: + type: string + description: "The prefix to use with the value of `fallbackUserNameClaim` to construct the user id. This only takes effect if `fallbackUserNameClaim` is true, and the value is present for the claim. Mapping usernames and client ids into the same user id space is useful in preventing name collisions." + groupsClaim: + type: string + description: JsonPath query used to extract groups for the user during authentication. Extracted groups can be used by a custom authorizer. By default no groups are extracted. + groupsClaimDelimiter: + type: string + description: "A delimiter used to parse groups when they are extracted as a single String value rather than a JSON array. Default value is ',' (comma)." + httpRetries: + type: integer + description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." + httpRetryPauseMs: + type: integer + description: "The pause to take before retrying a failed HTTP request. If not set, the default is to not pause at all but to immediately repeat a request." + includeAcceptHeader: + type: boolean + description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. + introspectionEndpointUri: + type: string + description: URI of the token introspection endpoint which can be used to validate opaque non-JWT tokens. + jwksEndpointUri: + type: string + description: "URI of the JWKS certificate endpoint, which can be used for local JWT validation." + jwksExpirySeconds: + type: integer + minimum: 1 + description: Configures how often are the JWKS certificates considered valid. The expiry interval has to be at least 60 seconds longer then the refresh interval specified in `jwksRefreshSeconds`. Defaults to 360 seconds. + jwksIgnoreKeyUse: + type: boolean + description: Flag to ignore the 'use' attribute of `key` declarations in a JWKS endpoint response. Default value is `false`. + jwksMinRefreshPauseSeconds: + type: integer + minimum: 0 + description: "The minimum pause between two consecutive refreshes. When an unknown signing key is encountered the refresh is scheduled immediately, but will always wait for this minimum pause. Defaults to 1 second." + jwksRefreshSeconds: + type: integer + minimum: 1 + description: Configures how often are the JWKS certificates refreshed. The refresh interval has to be at least 60 seconds shorter then the expiry interval specified in `jwksExpirySeconds`. Defaults to 300 seconds. + listenerConfig: + x-kubernetes-preserve-unknown-fields: true + type: object + description: Configuration to be used for a specific listener. All values are prefixed with listener.name.__. + maxSecondsWithoutReauthentication: + type: integer + description: "Maximum number of seconds the authenticated session remains valid without re-authentication. This enables Apache Kafka re-authentication feature, and causes sessions to expire when the access token expires. If the access token expires before max time or if max time is reached, the client has to re-authenticate, otherwise the server will drop the connection. Not set by default - the authenticated session does not expire when the access token expires. This option only applies to SASL_OAUTHBEARER authentication mechanism (when `enableOauthBearer` is `true`)." + readTimeoutSeconds: + type: integer + description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." + sasl: + type: boolean + description: Enable or disable SASL on this listener. + secrets: + type: array + items: type: object properties: key: @@ -139,189 +232,137 @@ spec: type: string description: The name of the Kubernetes Secret containing the secret value. required: - - key - - secretName - description: Link to Kubernetes Secret containing the OAuth client secret which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. - connectTimeoutSeconds: - type: integer - description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." - customClaimCheck: - type: string - description: JsonPath filter query to be applied to the JWT token or to the response of the introspection endpoint for additional token validation. Not set by default. - disableTlsHostnameVerification: - type: boolean - description: Enable or disable TLS hostname verification. Default value is `false`. - enableECDSA: - type: boolean - description: Enable or disable ECDSA support by installing BouncyCastle crypto provider. ECDSA support is always enabled. The BouncyCastle libraries are no longer packaged with Strimzi. Value is ignored. - enableMetrics: - type: boolean - description: Enable or disable OAuth metrics. Default value is `false`. - enableOauthBearer: - type: boolean - description: Enable or disable OAuth authentication over SASL_OAUTHBEARER. Default value is `true`. - enablePlain: - type: boolean - description: Enable or disable OAuth authentication over SASL_PLAIN. There is no re-authentication support when this mechanism is used. Default value is `false`. - failFast: - type: boolean - description: Enable or disable termination of Kafka broker processes due to potentially recoverable runtime errors during startup. Default value is `true`. - fallbackUserNameClaim: - type: string - description: The fallback username claim to be used for the user id if the claim specified by `userNameClaim` is not present. This is useful when `client_credentials` authentication only results in the client id being provided in another claim. It only takes effect if `userNameClaim` is set. - fallbackUserNamePrefix: - type: string - description: "The prefix to use with the value of `fallbackUserNameClaim` to construct the user id. This only takes effect if `fallbackUserNameClaim` is true, and the value is present for the claim. Mapping usernames and client ids into the same user id space is useful in preventing name collisions." - groupsClaim: - type: string - description: JsonPath query used to extract groups for the user during authentication. Extracted groups can be used by a custom authorizer. By default no groups are extracted. - groupsClaimDelimiter: - type: string - description: "A delimiter used to parse groups when they are extracted as a single String value rather than a JSON array. Default value is ',' (comma)." - httpRetries: - type: integer - description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." - httpRetryPauseMs: - type: integer - description: "The pause to take before retrying a failed HTTP request. If not set, the default is to not pause at all but to immediately repeat a request." - includeAcceptHeader: - type: boolean - description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. - introspectionEndpointUri: - type: string - description: URI of the token introspection endpoint which can be used to validate opaque non-JWT tokens. - jwksEndpointUri: - type: string - description: "URI of the JWKS certificate endpoint, which can be used for local JWT validation." - jwksExpirySeconds: - type: integer - minimum: 1 - description: Configures how often are the JWKS certificates considered valid. The expiry interval has to be at least 60 seconds longer then the refresh interval specified in `jwksRefreshSeconds`. Defaults to 360 seconds. - jwksIgnoreKeyUse: - type: boolean - description: Flag to ignore the 'use' attribute of `key` declarations in a JWKS endpoint response. Default value is `false`. - jwksMinRefreshPauseSeconds: - type: integer - minimum: 0 - description: "The minimum pause between two consecutive refreshes. When an unknown signing key is encountered the refresh is scheduled immediately, but will always wait for this minimum pause. Defaults to 1 second." - jwksRefreshSeconds: - type: integer - minimum: 1 - description: Configures how often are the JWKS certificates refreshed. The refresh interval has to be at least 60 seconds shorter then the expiry interval specified in `jwksExpirySeconds`. Defaults to 300 seconds. - listenerConfig: - x-kubernetes-preserve-unknown-fields: true - type: object - description: Configuration to be used for a specific listener. All values are prefixed with listener.name.__. - maxSecondsWithoutReauthentication: - type: integer - description: "Maximum number of seconds the authenticated session remains valid without re-authentication. This enables Apache Kafka re-authentication feature, and causes sessions to expire when the access token expires. If the access token expires before max time or if max time is reached, the client has to re-authenticate, otherwise the server will drop the connection. Not set by default - the authenticated session does not expire when the access token expires. This option only applies to SASL_OAUTHBEARER authentication mechanism (when `enableOauthBearer` is `true`)." - readTimeoutSeconds: - type: integer - description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." - sasl: - type: boolean - description: Enable or disable SASL on this listener. - secrets: - type: array - items: - type: object - properties: - key: - type: string - description: The key under which the secret value is stored in the Kubernetes Secret. - secretName: - type: string - description: The name of the Kubernetes Secret containing the secret value. - required: - - key - - secretName - description: Secrets to be mounted to /opt/kafka/custom-authn-secrets/custom-listener-_-_/__. - tlsTrustedCertificates: - type: array - items: - type: object - properties: - certificate: - type: string - description: The name of the file certificate in the Secret. - secretName: - type: string - description: The name of the Secret containing the certificate. - required: - - certificate - - secretName - description: Trusted certificates for TLS connection to the OAuth server. - tokenEndpointUri: - type: string - description: "URI of the Token Endpoint to use with SASL_PLAIN mechanism when the client authenticates with `clientId` and a `secret`. If set, the client can authenticate over SASL_PLAIN by either setting `username` to `clientId`, and setting `password` to client `secret`, or by setting `username` to account username, and `password` to access token prefixed with `$accessToken:`. If this option is not set, the `password` is always interpreted as an access token (without a prefix), and `username` as the account username (a so called 'no-client-credentials' mode)." - type: - type: string - enum: - - tls - - scram-sha-512 - - oauth - - custom - description: Authentication type. `oauth` type uses SASL OAUTHBEARER Authentication. `scram-sha-512` type uses SASL SCRAM-SHA-512 Authentication. `tls` type uses TLS Client Authentication. `tls` type is supported only on TLS listeners.`custom` type allows for any authentication type to be used. - userInfoEndpointUri: - type: string - description: 'URI of the User Info Endpoint to use as a fallback to obtaining the user id when the Introspection Endpoint does not return information that can be used for the user id. ' - userNameClaim: - type: string - description: "Name of the claim from the JWT authentication token, Introspection Endpoint response or User Info Endpoint response which will be used to extract the user id. Defaults to `sub`." - validIssuerUri: - type: string - description: URI of the token issuer used for authentication. - validTokenType: - type: string - description: "Valid value for the `token_type` attribute returned by the Introspection Endpoint. No default value, and not checked by default." - required: - - type - description: Authentication configuration for this listener. - configuration: - type: object - properties: - brokerCertChainAndKey: + - key + - secretName + description: Secrets to be mounted to /opt/kafka/custom-authn-secrets/custom-listener-_-_/__. + tlsTrustedCertificates: + type: array + items: type: object properties: - certificate: - type: string - description: The name of the file certificate in the Secret. - key: - type: string - description: The name of the private key in the Secret. secretName: type: string description: The name of the Secret containing the certificate. + certificate: + type: string + description: The name of the file certificate in the Secret. required: - - certificate - - key - - secretName - description: Reference to the `Secret` which holds the certificate and private key pair which will be used for this listener. The certificate can optionally contain the whole chain. This field can be used only with listeners with enabled TLS encryption. - externalTrafficPolicy: + - secretName + - certificate + description: Trusted certificates for TLS connection to the OAuth server. + tokenEndpointUri: + type: string + description: "URI of the Token Endpoint to use with SASL_PLAIN mechanism when the client authenticates with `clientId` and a `secret`. If set, the client can authenticate over SASL_PLAIN by either setting `username` to `clientId`, and setting `password` to client `secret`, or by setting `username` to account username, and `password` to access token prefixed with `$accessToken:`. If this option is not set, the `password` is always interpreted as an access token (without a prefix), and `username` as the account username (a so called 'no-client-credentials' mode)." + type: + type: string + enum: + - tls + - scram-sha-512 + - oauth + - custom + description: Authentication type. `oauth` type uses SASL OAUTHBEARER Authentication. `scram-sha-512` type uses SASL SCRAM-SHA-512 Authentication. `tls` type uses TLS Client Authentication. `tls` type is supported only on TLS listeners.`custom` type allows for any authentication type to be used. + userInfoEndpointUri: + type: string + description: 'URI of the User Info Endpoint to use as a fallback to obtaining the user id when the Introspection Endpoint does not return information that can be used for the user id. ' + userNameClaim: + type: string + description: "Name of the claim from the JWT authentication token, Introspection Endpoint response or User Info Endpoint response which will be used to extract the user id. Defaults to `sub`." + validIssuerUri: + type: string + description: URI of the token issuer used for authentication. + validTokenType: + type: string + description: "Valid value for the `token_type` attribute returned by the Introspection Endpoint. No default value, and not checked by default." + required: + - type + description: Authentication configuration for this listener. + configuration: + type: object + properties: + brokerCertChainAndKey: + type: object + properties: + key: + type: string + description: The name of the private key in the Secret. + secretName: + type: string + description: The name of the Secret containing the certificate. + certificate: + type: string + description: The name of the file certificate in the Secret. + required: + - key + - secretName + - certificate + description: Reference to the `Secret` which holds the certificate and private key pair which will be used for this listener. The certificate can optionally contain the whole chain. This field can be used only with listeners with enabled TLS encryption. + class: + type: string + description: "Configures a specific class for `Ingress` and `LoadBalancer` that defines which controller will be used. This field can only be used with `ingress` and `loadbalancer` type listeners. If not specified, the default controller is used. For an `ingress` listener, set the `ingressClassName` property in the `Ingress` resources. For a `loadbalancer` listener, set the `loadBalancerClass` property in the `Service` resources." + externalTrafficPolicy: + type: string + enum: + - Local + - Cluster + description: "Specifies whether the service routes external traffic to node-local or cluster-wide endpoints. `Cluster` may cause a second hop to another node and obscures the client source IP. `Local` avoids a second hop for LoadBalancer and Nodeport type services and preserves the client source IP (when supported by the infrastructure). If unspecified, Kubernetes will use `Cluster` as the default.This field can be used only with `loadbalancer` or `nodeport` type listener." + loadBalancerSourceRanges: + type: array + items: type: string - enum: - - Local - - Cluster - description: "Specifies whether the service routes external traffic to node-local or cluster-wide endpoints. `Cluster` may cause a second hop to another node and obscures the client source IP. `Local` avoids a second hop for LoadBalancer and Nodeport type services and preserves the client source IP (when supported by the infrastructure). If unspecified, Kubernetes will use `Cluster` as the default.This field can be used only with `loadbalancer` or `nodeport` type listener." - loadBalancerSourceRanges: - type: array - items: + description: "A list of CIDR ranges (for example `10.0.0.0/8` or `130.211.204.1/32`) from which clients can connect to load balancer type listeners. If supported by the platform, traffic through the loadbalancer is restricted to the specified CIDR ranges. This field is applicable only for loadbalancer type services and is ignored if the cloud provider does not support the feature. This field can be used only with `loadbalancer` type listener." + bootstrap: + type: object + properties: + alternativeNames: + type: array + items: + type: string + description: Additional alternative names for the bootstrap service. The alternative names will be added to the list of subject alternative names of the TLS certificates. + host: + type: string + description: The bootstrap host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. + nodePort: + type: integer + description: Node port for the bootstrap service. This field can be used only with `nodeport` type listener. + loadBalancerIP: type: string - description: "A list of CIDR ranges (for example `10.0.0.0/8` or `130.211.204.1/32`) from which clients can connect to load balancer type listeners. If supported by the platform, traffic through the loadbalancer is restricted to the specified CIDR ranges. This field is applicable only for loadbalancer type services and is ignored if the cloud provider does not support the feature. This field can be used only with `loadbalancer` type listener." - bootstrap: + description: The loadbalancer is requested with the IP address specified in this field. This feature depends on whether the underlying cloud provider supports specifying the `loadBalancerIP` when a load balancer is created. This field is ignored if the cloud provider does not support the feature.This field can be used only with `loadbalancer` type listener. + annotations: + additionalProperties: + type: string + type: object + description: "Annotations that will be added to the `Ingress`, `Route`, or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." + labels: + additionalProperties: + type: string + type: object + description: "Labels that will be added to the `Ingress`, `Route`, or `Service` resource. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." + externalIPs: + type: array + items: + type: string + description: External IPs associated to the nodeport service. These IPs are used by clients external to the Kubernetes cluster to access the Kafka brokers. This field is helpful when `nodeport` without `externalIP` is not sufficient. For example on bare-metal Kubernetes clusters that do not support Loadbalancer service types. This field can only be used with `nodeport` type listener. + description: Bootstrap configuration. + brokers: + type: array + items: type: object properties: - alternativeNames: - type: array - items: - type: string - description: Additional alternative names for the bootstrap service. The alternative names will be added to the list of subject alternative names of the TLS certificates. + broker: + type: integer + description: ID of the kafka broker (broker identifier). Broker IDs start from 0 and correspond to the number of broker replicas. + advertisedHost: + type: string + description: The host name used in the brokers' `advertised.listeners`. + advertisedPort: + type: integer + description: The port number used in the brokers' `advertised.listeners`. host: type: string - description: The bootstrap host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. + description: The broker host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. nodePort: type: integer - description: Node port for the bootstrap service. This field can be used only with `nodeport` type listener. + description: Node port for the per-broker service. This field can be used only with `nodeport` type listener. loadBalancerIP: type: string description: The loadbalancer is requested with the IP address specified in this field. This feature depends on whether the underlying cloud provider supports specifying the `loadBalancerIP` when a load balancer is created. This field is ignored if the cloud provider does not support the feature.This field can be used only with `loadbalancer` type listener. @@ -329,6400 +370,7007 @@ spec: additionalProperties: type: string type: object - description: "Annotations that will be added to the `Ingress`, `Route`, or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." + description: "Annotations that will be added to the `Ingress` or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, or `ingress` type listeners." labels: additionalProperties: type: string type: object description: "Labels that will be added to the `Ingress`, `Route`, or `Service` resource. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." - description: Bootstrap configuration. - brokers: - type: array - items: - type: object - properties: - broker: - type: integer - description: ID of the kafka broker (broker identifier). Broker IDs start from 0 and correspond to the number of broker replicas. - advertisedHost: - type: string - description: The host name used in the brokers' `advertised.listeners`. - advertisedPort: - type: integer - description: The port number used in the brokers' `advertised.listeners`. - host: - type: string - description: The broker host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. - nodePort: - type: integer - description: Node port for the per-broker service. This field can be used only with `nodeport` type listener. - loadBalancerIP: + externalIPs: + type: array + items: type: string - description: The loadbalancer is requested with the IP address specified in this field. This feature depends on whether the underlying cloud provider supports specifying the `loadBalancerIP` when a load balancer is created. This field is ignored if the cloud provider does not support the feature.This field can be used only with `loadbalancer` type listener. - annotations: - additionalProperties: - type: string - type: object - description: "Annotations that will be added to the `Ingress` or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, or `ingress` type listeners." - labels: - additionalProperties: - type: string - type: object - description: "Labels that will be added to the `Ingress`, `Route`, or `Service` resource. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." - required: - - broker - description: Per-broker configurations. - ipFamilyPolicy: + description: External IPs associated to the nodeport service. These IPs are used by clients external to the Kubernetes cluster to access the Kafka brokers. This field is helpful when `nodeport` without `externalIP` is not sufficient. For example on bare-metal Kubernetes clusters that do not support Loadbalancer service types. This field can only be used with `nodeport` type listener. + required: + - broker + description: Per-broker configurations. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: type: string enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - createBootstrapService: - type: boolean - description: Whether to create the bootstrap service or not. The bootstrap service is created by default (if not specified differently). This field can be used with the `loadBalancer` type listener. - class: - type: string - description: "Configures a specific class for `Ingress` and `LoadBalancer` that defines which controller will be used. This field can only be used with `ingress` and `loadbalancer` type listeners. If not specified, the default controller is used. For an `ingress` listener, set the `ingressClassName` property in the `Ingress` resources. For a `loadbalancer` listener, set the `loadBalancerClass` property in the `Service` resources." - finalizers: - type: array - items: - type: string - description: "A list of finalizers which will be configured for the `LoadBalancer` type Services created for this listener. If supported by the platform, the finalizer `service.kubernetes.io/load-balancer-cleanup` to make sure that the external load balancer is deleted together with the service.For more information, see https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#garbage-collecting-load-balancers. This field can be used only with `loadbalancer` type listeners." - maxConnectionCreationRate: - type: integer - description: The maximum connection creation rate we allow in this listener at any time. New connections will be throttled if the limit is reached. - maxConnections: - type: integer - description: The maximum number of connections we allow for this listener in the broker at any time. New connections are blocked if the limit is reached. - preferredNodePortAddressType: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + createBootstrapService: + type: boolean + description: Whether to create the bootstrap service or not. The bootstrap service is created by default (if not specified differently). This field can be used with the `loadBalancer` type listener. + finalizers: + type: array + items: type: string - enum: - - ExternalIP - - ExternalDNS - - InternalIP - - InternalDNS - - Hostname - description: |- - Defines which address type should be used as the node address. Available types are: `ExternalDNS`, `ExternalIP`, `InternalDNS`, `InternalIP` and `Hostname`. By default, the addresses will be used in the following order (the first one found will be used): + description: "A list of finalizers which will be configured for the `LoadBalancer` type Services created for this listener. If supported by the platform, the finalizer `service.kubernetes.io/load-balancer-cleanup` to make sure that the external load balancer is deleted together with the service.For more information, see https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#garbage-collecting-load-balancers. This field can be used only with `loadbalancer` type listeners." + useServiceDnsDomain: + type: boolean + description: "Configures whether the Kubernetes service DNS domain should be used or not. If set to `true`, the generated addresses will contain the service DNS domain suffix (by default `.cluster.local`, can be configured using environment variable `KUBERNETES_SERVICE_DNS_DOMAIN`). Defaults to `false`.This field can be used only with `internal` and `cluster-ip` type listeners." + maxConnections: + type: integer + description: The maximum number of connections we allow for this listener in the broker at any time. New connections are blocked if the limit is reached. + maxConnectionCreationRate: + type: integer + description: The maximum connection creation rate we allow in this listener at any time. New connections will be throttled if the limit is reached. + preferredNodePortAddressType: + type: string + enum: + - ExternalIP + - ExternalDNS + - InternalIP + - InternalDNS + - Hostname + description: |- + Defines which address type should be used as the node address. Available types are: `ExternalDNS`, `ExternalIP`, `InternalDNS`, `InternalIP` and `Hostname`. By default, the addresses will be used in the following order (the first one found will be used): - * `ExternalDNS` - * `ExternalIP` - * `InternalDNS` - * `InternalIP` - * `Hostname` + * `ExternalDNS` + * `ExternalIP` + * `InternalDNS` + * `InternalIP` + * `Hostname` - This field is used to select the preferred address type, which is checked first. If no address is found for this address type, the other types are checked in the default order. This field can only be used with `nodeport` type listener. - useServiceDnsDomain: - type: boolean - description: "Configures whether the Kubernetes service DNS domain should be used or not. If set to `true`, the generated addresses will contain the service DNS domain suffix (by default `.cluster.local`, can be configured using environment variable `KUBERNETES_SERVICE_DNS_DOMAIN`). Defaults to `false`.This field can be used only with `internal` and `cluster-ip` type listeners." - description: Additional listener configuration. - networkPolicyPeers: - type: array - items: - type: object - properties: - ipBlock: - type: object - properties: - cidr: + This field is used to select the preferred address type, which is checked first. If no address is found for this address type, the other types are checked in the default order. This field can only be used with `nodeport` type listener. + description: Additional listener configuration. + networkPolicyPeers: + type: array + items: + type: object + properties: + ipBlock: + type: object + properties: + cidr: + type: string + except: + type: array + items: type: string - except: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - podSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string + matchLabels: + additionalProperties: + type: string + type: object + podSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - description: "List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list." - required: - - name - - port + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + description: "List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list." + required: + - name + - port + - type + - tls + description: Configures listeners of Kafka brokers. + config: + x-kubernetes-preserve-unknown-fields: true + type: object + description: "Kafka broker config properties with the following prefixes cannot be set: listeners, advertised., broker., listener., host.name, port, inter.broker.listener.name, sasl., ssl., security., password., log.dir, zookeeper.connect, zookeeper.set.acl, zookeeper.ssl, zookeeper.clientCnxnSocket, authorizer., super.user, cruise.control.metrics.topic, cruise.control.metrics.reporter.bootstrap.servers, node.id, process.roles, controller., metadata.log.dir, zookeeper.metadata.migration.enable (with the exception of: zookeeper.connection.timeout.ms, sasl.server.max.receive.size, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, ssl.secure.random.implementation, cruise.control.metrics.topic.num.partitions, cruise.control.metrics.topic.replication.factor, cruise.control.metrics.topic.retention.ms, cruise.control.metrics.topic.auto.create.retries, cruise.control.metrics.topic.auto.create.timeout.ms, cruise.control.metrics.topic.min.insync.replicas, controller.quorum.election.backoff.max.ms, controller.quorum.election.timeout.ms, controller.quorum.fetch.timeout.ms)." + storage: + type: object + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation. + deleteClaim: + type: boolean + description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. + id: + type: integer + minimum: 0 + description: Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'. + kraftMetadata: + type: string + enum: + - shared + description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." + overrides: + type: array + items: + type: object + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation for this broker. + broker: + type: integer + description: Id of the kafka broker (broker identifier). + description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. + selector: + additionalProperties: + type: string + type: object + description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. + size: + type: string + description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." + sizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." + type: + type: string + enum: + - ephemeral + - persistent-claim + - jbod + description: "Storage type, must be either 'ephemeral', 'persistent-claim', or 'jbod'." + volumes: + type: array + items: + type: object + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation. + deleteClaim: + type: boolean + description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. + id: + type: integer + minimum: 0 + description: Storage identification number. Mandatory for storage volumes defined with a `jbod` storage type configuration. + kraftMetadata: + type: string + enum: + - shared + description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." + overrides: + type: array + items: + type: object + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation for this broker. + broker: + type: integer + description: Id of the kafka broker (broker identifier). + description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. + selector: + additionalProperties: + type: string + type: object + description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. + size: + type: string + description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." + sizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." + type: + type: string + enum: + - ephemeral + - persistent-claim + description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." + required: - type - - tls - description: Configures listeners of Kafka brokers. - config: - x-kubernetes-preserve-unknown-fields: true - type: object - description: "Kafka broker config properties with the following prefixes cannot be set: listeners, advertised., broker., listener., host.name, port, inter.broker.listener.name, sasl., ssl., security., password., log.dir, zookeeper.connect, zookeeper.set.acl, zookeeper.ssl, zookeeper.clientCnxnSocket, authorizer., super.user, cruise.control.metrics.topic, cruise.control.metrics.reporter.bootstrap.servers, node.id, process.roles, controller., metadata.log.dir, zookeeper.metadata.migration.enable (with the exception of: zookeeper.connection.timeout.ms, sasl.server.max.receive.size, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, ssl.secure.random.implementation, cruise.control.metrics.topic.num.partitions, cruise.control.metrics.topic.replication.factor, cruise.control.metrics.topic.retention.ms, cruise.control.metrics.topic.auto.create.retries, cruise.control.metrics.topic.auto.create.timeout.ms, cruise.control.metrics.topic.min.insync.replicas, controller.quorum.election.backoff.max.ms, controller.quorum.election.timeout.ms, controller.quorum.fetch.timeout.ms)." - storage: - type: object - properties: - class: + description: List of volumes as Storage objects representing the JBOD disks array. + required: + - type + description: Storage configuration (disk). Cannot be updated. This property is required when node pools are not used. + authorization: + type: object + properties: + allowOnError: + type: boolean + description: "Defines whether a Kafka client should be allowed or denied by default when the authorizer fails to query the Open Policy Agent, for example, when it is temporarily unavailable). Defaults to `false` - all actions will be denied." + authorizerClass: + type: string + description: "Authorization implementation class, which must be available in classpath." + clientId: + type: string + description: OAuth Client ID which the Kafka client can use to authenticate against the OAuth server and use the token endpoint URI. + connectTimeoutSeconds: + type: integer + minimum: 1 + description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." + delegateToKafkaAcls: + type: boolean + description: Whether authorization decision should be delegated to the 'Simple' authorizer if DENIED by Keycloak Authorization Services policies. Default value is `false`. + disableTlsHostnameVerification: + type: boolean + description: Enable or disable TLS hostname verification. Default value is `false`. + enableMetrics: + type: boolean + description: Enable or disable OAuth metrics. The default value is `false`. + expireAfterMs: + type: integer + description: The expiration of the records kept in the local cache to avoid querying the Open Policy Agent for every request. Defines how often the cached authorization decisions are reloaded from the Open Policy Agent server. In milliseconds. Defaults to `3600000`. + grantsAlwaysLatest: + type: boolean + description: "Controls whether the latest grants are fetched for a new session. When enabled, grants are retrieved from Keycloak and cached for the user. The default value is `false`." + grantsGcPeriodSeconds: + type: integer + minimum: 1 + description: "The time, in seconds, between consecutive runs of a job that cleans stale grants from the cache. The default value is 300." + grantsMaxIdleTimeSeconds: + type: integer + minimum: 1 + description: "The time, in seconds, after which an idle grant can be evicted from the cache. The default value is 300." + grantsRefreshPeriodSeconds: + type: integer + minimum: 0 + description: The time between two consecutive grants refresh runs in seconds. The default value is 60. + grantsRefreshPoolSize: + type: integer + minimum: 1 + description: "The number of threads to use to refresh grants for active sessions. The more threads, the more parallelism, so the sooner the job completes. However, using more threads places a heavier load on the authorization server. The default value is 5." + httpRetries: + type: integer + minimum: 0 + description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." + includeAcceptHeader: + type: boolean + description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. + initialCacheCapacity: + type: integer + description: Initial capacity of the local cache used by the authorizer to avoid querying the Open Policy Agent for every request Defaults to `5000`. + maximumCacheSize: + type: integer + description: Maximum capacity of the local cache used by the authorizer to avoid querying the Open Policy Agent for every request. Defaults to `50000`. + readTimeoutSeconds: + type: integer + minimum: 1 + description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." + superUsers: + type: array + items: type: string - description: The storage class to use for dynamic volume allocation. - deleteClaim: - type: boolean - description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. - id: - type: integer - minimum: 0 - description: Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'. - overrides: - type: array - items: + description: "List of super users, which are user principals with unlimited access rights." + supportsAdminApi: + type: boolean + description: Indicates whether the custom authorizer supports the APIs for managing ACLs using the Kafka Admin API. Defaults to `false`. + tlsTrustedCertificates: + type: array + items: + type: object + properties: + secretName: + type: string + description: The name of the Secret containing the certificate. + certificate: + type: string + description: The name of the file certificate in the Secret. + required: + - secretName + - certificate + description: Trusted certificates for TLS connection to the OAuth server. + tokenEndpointUri: + type: string + description: Authorization server token endpoint URI. + type: + type: string + enum: + - simple + - opa + - keycloak + - custom + description: "Authorization type. Currently, the supported types are `simple`, `keycloak`, `opa` and `custom`. `simple` authorization type uses Kafka's built-in authorizer for authorization. `keycloak` authorization type uses Keycloak Authorization Services for authorization. `opa` authorization type uses Open Policy Agent based authorization.`custom` authorization type uses user-provided implementation for authorization." + url: + type: string + example: http://opa:8181/v1/data/kafka/authz/allow + description: The URL used to connect to the Open Policy Agent server. The URL has to include the policy which will be queried by the authorizer. This option is required. + required: + - type + description: Authorization configuration for Kafka brokers. + rack: + type: object + properties: + topologyKey: + type: string + example: topology.kubernetes.io/zone + description: "A key that matches labels assigned to the Kubernetes cluster nodes. The value of the label is used to set a broker's `broker.rack` config, and the `client.rack` config for Kafka Connect or MirrorMaker 2." + required: + - topologyKey + description: Configuration of the `broker.rack` broker config. + brokerRackInitImage: + type: string + description: The image of the init container used for initializing the `broker.rack`. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: + type: string + type: object + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: + type: object + properties: + name: + type: string + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for pods. + jmxOptions: + type: object + properties: + authentication: + type: object + properties: + type: + type: string + enum: + - password + description: Authentication type. Currently the only supported types are `password`.`password` type creates a username and protected port with no TLS. + required: + - type + description: Authentication configuration for connecting to the JMX port. + description: JMX Options for Kafka brokers. + resources: + type: object + properties: + claims: + type: array + items: + type: object + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + metricsConfig: + type: object + properties: + type: + type: string + enum: + - jmxPrometheusExporter + description: Metrics type. Only 'jmxPrometheusExporter' supported currently. + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: - class: + key: type: string - description: The storage class to use for dynamic volume allocation for this broker. - broker: - type: integer - description: Id of the kafka broker (broker identifier). - description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. - selector: - additionalProperties: - type: string - type: object - description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. - size: - type: string - description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." - sizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." - type: + name: + type: string + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' + required: + - type + - valueFrom + description: Metrics configuration. + logging: + type: object + properties: + loggers: + additionalProperties: type: string - enum: - - ephemeral - - persistent-claim - - jbod - description: "Storage type, must be either 'ephemeral', 'persistent-claim', or 'jbod'." - volumes: - type: array - items: + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: + type: object + properties: + key: + type: string + name: + type: string + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration for Kafka. + template: + type: object + properties: + statefulset: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + podManagementPolicy: + type: string + enum: + - OrderedReady + - Parallel + description: PodManagementPolicy which will be used for this StatefulSet. Valid values are `Parallel` and `OrderedReady`. Defaults to `Parallel`. + description: Template for Kafka `StatefulSet`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: + type: object + properties: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: type: object properties: - class: + fsGroup: + type: integer + fsGroupChangePolicy: type: string - description: The storage class to use for dynamic volume allocation. - deleteClaim: + runAsGroup: + type: integer + runAsNonRoot: type: boolean - description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. - id: + runAsUser: type: integer - minimum: 0 - description: Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'. - overrides: + seLinuxOptions: + type: object + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + supplementalGroups: + type: array + items: + type: integer + sysctls: type: array items: type: object properties: - class: + name: type: string - description: The storage class to use for dynamic volume allocation for this broker. - broker: - type: integer - description: Id of the kafka broker (broker identifier). - description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. - selector: - additionalProperties: - type: string + value: + type: string + windowsOptions: type: object - description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. - size: - type: string - description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." - sizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." - type: - type: string - enum: - - ephemeral - - persistent-claim - description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." - required: - - type - description: List of volumes as Storage objects representing the JBOD disks array. - required: - - type - description: Storage configuration (disk). Cannot be updated. This property is required when node pools are not used. - authorization: - type: object - properties: - allowOnError: - type: boolean - description: "Defines whether a Kafka client should be allowed or denied by default when the authorizer fails to query the Open Policy Agent, for example, when it is temporarily unavailable). Defaults to `false` - all actions will be denied." - authorizerClass: - type: string - description: "Authorization implementation class, which must be available in classpath." - clientId: - type: string - description: OAuth Client ID which the Kafka client can use to authenticate against the OAuth server and use the token endpoint URI. - connectTimeoutSeconds: - type: integer - minimum: 1 - description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." - delegateToKafkaAcls: - type: boolean - description: Whether authorization decision should be delegated to the 'Simple' authorizer if DENIED by Keycloak Authorization Services policies. Default value is `false`. - disableTlsHostnameVerification: - type: boolean - description: Enable or disable TLS hostname verification. Default value is `false`. - enableMetrics: - type: boolean - description: Enable or disable OAuth metrics. The default value is `false`. - expireAfterMs: - type: integer - description: The expiration of the records kept in the local cache to avoid querying the Open Policy Agent for every request. Defines how often the cached authorization decisions are reloaded from the Open Policy Agent server. In milliseconds. Defaults to `3600000`. - grantsAlwaysLatest: - type: boolean - description: "Controls whether the latest grants are fetched for a new session. When enabled, grants are retrieved from Keycloak and cached for the user. The default value is `false`." - grantsGcPeriodSeconds: - type: integer - minimum: 1 - description: "The time, in seconds, between consecutive runs of a job that cleans stale grants from the cache. The default value is 300." - grantsMaxIdleTimeSeconds: - type: integer - minimum: 1 - description: "The time, in seconds, after which an idle grant can be evicted from the cache. The default value is 300." - grantsRefreshPeriodSeconds: - type: integer - minimum: 0 - description: The time between two consecutive grants refresh runs in seconds. The default value is 60. - grantsRefreshPoolSize: - type: integer - minimum: 1 - description: "The number of threads to use to refresh grants for active sessions. The more threads, the more parallelism, so the sooner the job completes. However, using more threads places a heavier load on the authorization server. The default value is 5." - httpRetries: - type: integer - minimum: 0 - description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." - includeAcceptHeader: - type: boolean - description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. - initialCacheCapacity: - type: integer - description: Initial capacity of the local cache used by the authorizer to avoid querying the Open Policy Agent for every request Defaults to `5000`. - maximumCacheSize: - type: integer - description: Maximum capacity of the local cache used by the authorizer to avoid querying the Open Policy Agent for every request. Defaults to `50000`. - readTimeoutSeconds: - type: integer - minimum: 1 - description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." - superUsers: - type: array - items: - type: string - description: "List of super users, which are user principals with unlimited access rights." - supportsAdminApi: - type: boolean - description: Indicates whether the custom authorizer supports the APIs for managing ACLs using the Kafka Admin API. Defaults to `false`. - tlsTrustedCertificates: - type: array - items: - type: object - properties: - certificate: - type: string - description: The name of the file certificate in the Secret. - secretName: - type: string - description: The name of the Secret containing the certificate. - required: - - certificate - - secretName - description: Trusted certificates for TLS connection to the OAuth server. - tokenEndpointUri: - type: string - description: Authorization server token endpoint URI. - type: - type: string - enum: - - simple - - opa - - keycloak - - custom - description: "Authorization type. Currently, the supported types are `simple`, `keycloak`, `opa` and `custom`. `simple` authorization type uses Kafka's built-in authorizer for authorization. `keycloak` authorization type uses Keycloak Authorization Services for authorization. `opa` authorization type uses Open Policy Agent based authorization.`custom` authorization type uses user-provided implementation for authorization." - url: - type: string - example: http://opa:8181/v1/data/kafka/authz/allow - description: The URL used to connect to the Open Policy Agent server. The URL has to include the policy which will be queried by the authorizer. This option is required. - required: - - type - description: Authorization configuration for Kafka brokers. - rack: - type: object - properties: - topologyKey: - type: string - example: topology.kubernetes.io/zone - description: "A key that matches labels assigned to the Kubernetes cluster nodes. The value of the label is used to set a broker's `broker.rack` config, and the `client.rack` config for Kafka Connect or MirrorMaker 2." - required: - - topologyKey - description: Configuration of the `broker.rack` broker config. - brokerRackInitImage: - type: string - description: The image of the init container used for initializing the `broker.rack`. - livenessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod readiness checking. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: - type: string - type: object - description: A map of -XX options to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: - type: object - properties: - name: - type: string - description: The system property name. - value: - type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for pods. - jmxOptions: - type: object - properties: - authentication: - type: object - properties: - type: - type: string - enum: - - password - description: Authentication type. Currently the only supported types are `password`.`password` type creates a username and protected port with no TLS. - required: - - type - description: Authentication configuration for connecting to the JMX port. - description: JMX Options for Kafka brokers. - resources: - type: object - properties: - claims: - type: array - items: - type: object - properties: - name: - type: string - limits: - x-kubernetes-preserve-unknown-fields: true - type: object - requests: - x-kubernetes-preserve-unknown-fields: true - type: object - description: CPU and memory resources to reserve. - metricsConfig: - type: object - properties: - type: - type: string - enum: - - jmxPrometheusExporter - description: Metrics type. Only 'jmxPrometheusExporter' supported currently. - valueFrom: - type: object - properties: - configMapKeyRef: - type: object - properties: - key: - type: string - name: - type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' - required: - - type - - valueFrom - description: Metrics configuration. - logging: - type: object - properties: - loggers: - additionalProperties: - type: string - type: object - description: A Map from logger name to logger level. - type: - type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: - type: object - properties: - configMapKeyRef: - type: object - properties: - key: - type: string - name: - type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration for Kafka. - template: - type: object - properties: - statefulset: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + properties: + gmsaCredentialSpec: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - podManagementPolicy: - type: string - enum: - - OrderedReady - - Parallel - description: PodManagementPolicy which will be used for this StatefulSet. Valid values are `Parallel` and `OrderedReady`. Defaults to `Parallel`. - description: Template for Kafka `StatefulSet`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + gmsaCredentialSpecName: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + hostProcess: + type: boolean + runAsUserName: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: type: object properties: - name: - type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: - type: array - items: - type: object - properties: - name: - type: string - value: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: type: object properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: object + properties: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchFields: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: - type: string - podAntiAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + type: object + namespaces: + type: array + items: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: + topologyKey: + type: string + podAntiAffinity: type: object properties: - hostnames: + preferredDuringSchedulingIgnoredDuringExecution: type: array items: - type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - topologySpreadConstraints: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + type: object + properties: + podAffinityTerm: type: object properties: - key: - type: string - operator: - type: string - values: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: type: array items: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: array items: - type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - description: Template for Kafka `Pods`. - bootstrapService: - type: object - properties: - metadata: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + description: The pod's affinity rules. + tolerations: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for Kafka bootstrap `Service`. - brokersService: - type: object - properties: - metadata: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string + labelSelector: type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for Kafka broker `Service`. - externalBootstrapService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka external bootstrap `Service`. - perPodService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka per-pod `Services` used for access from outside of Kubernetes. - externalBootstrapRoute: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka external bootstrap `Route`. - perPodRoute: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka per-pod `Routes` used for access from outside of OpenShift. - externalBootstrapIngress: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka external bootstrap `Ingress`. - perPodIngress: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka per-pod `Ingress` used for access from outside of Kubernetes. - persistentVolumeClaim: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for all Kafka `PersistentVolumeClaims`. - podDisruptionBudget: - type: object - properties: - metadata: + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. - maxUnavailable: - type: integer - minimum: 0 - description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." - description: Template for Kafka `PodDisruptionBudget`. - kafkaContainer: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: + hostnames: + type: array + items: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: type: object properties: - add: - type: array - items: - type: string - drop: + defaultMode: + type: integer + items: type: array items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: type: boolean - runAsUserName: + secretName: type: string - description: Security context for the container. - description: Template for the Kafka broker container. - initContainer: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: - type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + description: Secret to use populate the volume. + configMap: type: object properties: - add: - type: array - items: - type: string - drop: + defaultMode: + type: integer + items: type: array items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: type: string - seccompProfile: + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: type: object properties: - localhostProfile: + medium: type: string - type: - type: string - windowsOptions: + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: type: object properties: - gmsaCredentialSpec: + driver: type: string - gmsaCredentialSpecName: + fsType: type: string - hostProcess: + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: type: boolean - runAsUserName: - type: string - description: Security context for the container. - description: Template for the Kafka init container. - clusterCaCert: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Secret with Kafka Cluster certificate public key. - serviceAccount: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Kafka service account. - jmxSecret: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Secret of the Kafka Cluster JMX authentication. - clusterRoleBinding: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Kafka ClusterRoleBinding. - podSet: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka `StrimziPodSet` resource. - description: Template for Kafka cluster resources. The template allows users to specify how the Kubernetes resources are generated. - tieredStorage: - type: object - properties: - remoteStorageManager: - type: object - properties: - className: + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for Kafka `Pods`. + bootstrapService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: type: string - description: The class name for the `RemoteStorageManager` implementation. - classPath: + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for Kafka bootstrap `Service`. + brokersService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: type: string - description: The class path for the `RemoteStorageManager` implementation. - config: - additionalProperties: + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for Kafka broker `Service`. + externalBootstrapService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka external bootstrap `Service`. + perPodService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka per-pod `Services` used for access from outside of Kubernetes. + externalBootstrapRoute: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka external bootstrap `Route`. + perPodRoute: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka per-pod `Routes` used for access from outside of OpenShift. + externalBootstrapIngress: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka external bootstrap `Ingress`. + perPodIngress: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka per-pod `Ingress` used for access from outside of Kubernetes. + persistentVolumeClaim: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for all Kafka `PersistentVolumeClaims`. + podDisruptionBudget: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. + maxUnavailable: + type: integer + minimum: 0 + description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." + description: Template for Kafka `PodDisruptionBudget`. + kafkaContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the Kafka broker container. + initContainer: + type: object + properties: + env: + type: array + items: type: object - description: "The additional configuration map for the `RemoteStorageManager` implementation. Keys will be automatically prefixed with `rsm.config.`, and added to Kafka broker configuration." - description: Configuration for the Remote Storage Manager. - type: - type: string - enum: - - custom - description: "Storage type, only 'custom' is supported at the moment." - required: - - type - description: Configure the tiered storage feature for Kafka brokers. - required: - - listeners - description: Configuration of the Kafka cluster. - zookeeper: - type: object - properties: - replicas: - type: integer - minimum: 1 - description: The number of pods in the cluster. - image: - type: string - description: "The container image used for ZooKeeper pods. If no image name is explicitly specified, it is determined based on the Kafka version set in `spec.kafka.version`. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." - storage: - type: object - properties: - class: - type: string - description: The storage class to use for dynamic volume allocation. - deleteClaim: - type: boolean - description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. - id: - type: integer - minimum: 0 - description: Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'. - overrides: - type: array - items: + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: type: object properties: - class: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: type: string - description: The storage class to use for dynamic volume allocation for this broker. - broker: + readOnlyRootFilesystem: + type: boolean + runAsGroup: type: integer - description: Id of the kafka broker (broker identifier). - description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. - selector: - additionalProperties: + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the Kafka init container. + clusterCaCert: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Secret with Kafka Cluster certificate public key. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Kafka service account. + jmxSecret: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Secret of the Kafka Cluster JMX authentication. + clusterRoleBinding: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Kafka ClusterRoleBinding. + podSet: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka `StrimziPodSet` resource. + description: Template for Kafka cluster resources. The template allows users to specify how the Kubernetes resources are generated. + tieredStorage: + type: object + properties: + remoteStorageManager: + type: object + properties: + className: + type: string + description: The class name for the `RemoteStorageManager` implementation. + classPath: type: string + description: The class path for the `RemoteStorageManager` implementation. + config: + additionalProperties: + type: string + type: object + description: "The additional configuration map for the `RemoteStorageManager` implementation. Keys will be automatically prefixed with `rsm.config.`, and added to Kafka broker configuration." + description: Configuration for the Remote Storage Manager. + type: + type: string + enum: + - custom + description: "Storage type, only 'custom' is supported at the moment." + required: + - type + description: Configure the tiered storage feature for Kafka brokers. + required: + - listeners + description: Configuration of the Kafka cluster. + zookeeper: + type: object + properties: + replicas: + type: integer + minimum: 1 + description: The number of pods in the cluster. + image: + type: string + description: "The container image used for ZooKeeper pods. If no image name is explicitly specified, it is determined based on the Kafka version set in `spec.kafka.version`. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." + storage: + type: object + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation. + deleteClaim: + type: boolean + description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. + id: + type: integer + minimum: 0 + description: Storage identification number. Mandatory for storage volumes defined with a `jbod` storage type configuration. + kraftMetadata: + type: string + enum: + - shared + description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." + overrides: + type: array + items: type: object - description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. - size: - type: string - description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." - sizeLimit: + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation for this broker. + broker: + type: integer + description: Id of the kafka broker (broker identifier). + description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. + selector: + additionalProperties: type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." - type: + type: object + description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. + size: + type: string + description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." + sizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." + type: + type: string + enum: + - ephemeral + - persistent-claim + description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." + required: + - type + description: Storage configuration (disk). Cannot be updated. + config: + x-kubernetes-preserve-unknown-fields: true + type: object + description: "The ZooKeeper broker config. Properties with the following prefixes cannot be set: server., dataDir, dataLogDir, clientPort, authProvider, quorum.auth, requireClientAuthScheme, snapshot.trust.empty, standaloneEnabled, reconfigEnabled, 4lw.commands.whitelist, secureClientPort, ssl., serverCnxnFactory, sslQuorum (with the exception of: ssl.protocol, ssl.quorum.protocol, ssl.enabledProtocols, ssl.quorum.enabledProtocols, ssl.ciphersuites, ssl.quorum.ciphersuites, ssl.hostnameVerification, ssl.quorum.hostnameVerification)." + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: type: string - enum: - - ephemeral - - persistent-claim - description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." - required: - - type - description: Storage configuration (disk). Cannot be updated. - config: - x-kubernetes-preserve-unknown-fields: true - type: object - description: "The ZooKeeper broker config. Properties with the following prefixes cannot be set: server., dataDir, dataLogDir, clientPort, authProvider, quorum.auth, requireClientAuthScheme, snapshot.trust.empty, standaloneEnabled, reconfigEnabled, 4lw.commands.whitelist, secureClientPort, ssl., serverCnxnFactory, sslQuorum (with the exception of: ssl.protocol, ssl.quorum.protocol, ssl.enabledProtocols, ssl.quorum.enabledProtocols, ssl.ciphersuites, ssl.quorum.ciphersuites, ssl.hostnameVerification, ssl.quorum.hostnameVerification)." - livenessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod readiness checking. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: + type: object + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: + type: object + properties: + name: + type: string + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for pods. + jmxOptions: + type: object + properties: + authentication: + type: object + properties: + type: type: string + enum: + - password + description: Authentication type. Currently the only supported types are `password`.`password` type creates a username and protected port with no TLS. + required: + - type + description: Authentication configuration for connecting to the JMX port. + description: JMX Options for Zookeeper nodes. + resources: + type: object + properties: + claims: + type: array + items: type: object - description: A map of -XX options to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + metricsConfig: + type: object + properties: + type: + type: string + enum: + - jmxPrometheusExporter + description: Metrics type. Only 'jmxPrometheusExporter' supported currently. + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: - name: + key: type: string - description: The system property name. - value: + name: type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for pods. - jmxOptions: - type: object - properties: - authentication: - type: object - properties: - type: - type: string - enum: - - password - description: Authentication type. Currently the only supported types are `password`.`password` type creates a username and protected port with no TLS. - required: - - type - description: Authentication configuration for connecting to the JMX port. - description: JMX Options for Zookeeper nodes. - resources: - type: object - properties: - claims: - type: array - items: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' + required: + - type + - valueFrom + description: Metrics configuration. + logging: + type: object + properties: + loggers: + additionalProperties: + type: string + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: + key: + type: string name: type: string - limits: - x-kubernetes-preserve-unknown-fields: true - type: object - requests: - x-kubernetes-preserve-unknown-fields: true - type: object - description: CPU and memory resources to reserve. - metricsConfig: - type: object - properties: - type: - type: string - enum: - - jmxPrometheusExporter - description: Metrics type. Only 'jmxPrometheusExporter' supported currently. - valueFrom: - type: object - properties: - configMapKeyRef: - type: object - properties: - key: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration for ZooKeeper. + template: + type: object + properties: + statefulset: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - name: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' - required: - - type - - valueFrom - description: Metrics configuration. - logging: - type: object - properties: - loggers: - additionalProperties: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + podManagementPolicy: type: string - type: object - description: A Map from logger name to logger level. - type: - type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: - type: object - properties: - configMapKeyRef: - type: object - properties: - key: + enum: + - OrderedReady + - Parallel + description: PodManagementPolicy which will be used for this StatefulSet. Valid values are `Parallel` and `OrderedReady`. Defaults to `Parallel`. + description: Template for ZooKeeper `StatefulSet`. + podSet: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - name: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration for ZooKeeper. - template: - type: object - properties: - statefulset: - type: object - properties: - metadata: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for ZooKeeper `StrimziPodSet` resource. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - labels: - additionalProperties: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - podManagementPolicy: - type: string - enum: - - OrderedReady - - Parallel - description: PodManagementPolicy which will be used for this StatefulSet. Valid values are `Parallel` and `OrderedReady`. Defaults to `Parallel`. - description: Template for ZooKeeper `StatefulSet`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + seccompProfile: type: object properties: - name: + localhostProfile: type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: + type: + type: string + supplementalGroups: + type: array + items: type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: - type: array - items: - type: object - properties: - name: - type: string - value: - type: string - windowsOptions: + sysctls: + type: array + items: type: object properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + name: type: string - hostProcess: - type: boolean - runAsUserName: + value: type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: type: object properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + preference: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchFields: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: object + properties: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - podAntiAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + matchFields: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: + topologyKey: + type: string + podAntiAffinity: type: object properties: - hostnames: + preferredDuringSchedulingIgnoredDuringExecution: type: array items: - type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - topologySpreadConstraints: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + type: object + properties: + podAffinityTerm: type: object properties: - key: - type: string - operator: - type: string - values: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: type: array items: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: array items: - type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - description: Template for ZooKeeper `Pods`. - clientService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for ZooKeeper client `Service`. - nodesService: - type: object - properties: - metadata: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + description: The pod's affinity rules. + tolerations: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for ZooKeeper nodes `Service`. - persistentVolumeClaim: - type: object - properties: - metadata: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string + labelSelector: type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for all ZooKeeper `PersistentVolumeClaims`. - podDisruptionBudget: - type: object - properties: - metadata: + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. - maxUnavailable: - type: integer - minimum: 0 - description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." - description: Template for ZooKeeper `PodDisruptionBudget`. - zookeeperContainer: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: + hostnames: + type: array + items: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: type: object properties: - add: - type: array - items: - type: string - drop: + defaultMode: + type: integer + items: type: array items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: type: object properties: - level: - type: string - role: - type: string - type: - type: string - user: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: type: string - seccompProfile: + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: type: object properties: - localhostProfile: + medium: type: string - type: - type: string - windowsOptions: + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: type: object properties: - gmsaCredentialSpec: + driver: type: string - gmsaCredentialSpecName: + fsType: type: string - hostProcess: + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: type: boolean - runAsUserName: - type: string - description: Security context for the container. - description: Template for the ZooKeeper container. - serviceAccount: - type: object - properties: - metadata: + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for ZooKeeper `Pods`. + clientService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for ZooKeeper client `Service`. + nodesService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for ZooKeeper nodes `Service`. + persistentVolumeClaim: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for all ZooKeeper `PersistentVolumeClaims`. + podDisruptionBudget: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. + maxUnavailable: + type: integer + minimum: 0 + description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." + description: Template for ZooKeeper `PodDisruptionBudget`. + zookeeperContainer: + type: object + properties: + env: + type: array + items: type: object properties: - labels: - additionalProperties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the ZooKeeper service account. - jmxSecret: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Secret of the Zookeeper Cluster JMX authentication. - podSet: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + seccompProfile: + type: object + properties: + localhostProfile: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + type: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for ZooKeeper `StrimziPodSet` resource. - description: Template for ZooKeeper cluster resources. The template allows users to specify how the Kubernetes resources are generated. - required: - - replicas - - storage - description: Configuration of the ZooKeeper cluster. This section is required when running a ZooKeeper-based Apache Kafka cluster. - entityOperator: - type: object - properties: - topicOperator: - type: object - properties: - watchedNamespace: - type: string - description: The namespace the Topic Operator should watch. - image: - type: string - description: The image to use for the Topic Operator. - reconciliationIntervalSeconds: - type: integer - minimum: 0 - description: Interval between periodic reconciliations. - zookeeperSessionTimeoutSeconds: - type: integer - minimum: 0 - description: Timeout for the ZooKeeper session. - startupProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod startup checking. - livenessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod readiness checking. - resources: - type: object - properties: - claims: - type: array - items: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the ZooKeeper container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the ZooKeeper service account. + jmxSecret: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Secret of the Zookeeper Cluster JMX authentication. + description: Template for ZooKeeper cluster resources. The template allows users to specify how the Kubernetes resources are generated. + required: + - replicas + - storage + description: Configuration of the ZooKeeper cluster. This section is required when running a ZooKeeper-based Apache Kafka cluster. + entityOperator: + type: object + properties: + topicOperator: + type: object + properties: + watchedNamespace: + type: string + description: The namespace the Topic Operator should watch. + image: + type: string + description: The image to use for the Topic Operator. + reconciliationIntervalSeconds: + type: integer + minimum: 0 + description: Interval between periodic reconciliations. + zookeeperSessionTimeoutSeconds: + type: integer + minimum: 0 + description: Timeout for the ZooKeeper session. + startupProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod startup checking. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + resources: + type: object + properties: + claims: + type: array + items: + type: object + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + topicMetadataMaxAttempts: + type: integer + minimum: 0 + description: The number of attempts at getting topic metadata. + logging: + type: object + properties: + loggers: + additionalProperties: + type: string + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: + key: + type: string name: type: string - limits: - x-kubernetes-preserve-unknown-fields: true - type: object - requests: - x-kubernetes-preserve-unknown-fields: true - type: object - description: CPU and memory resources to reserve. - topicMetadataMaxAttempts: - type: integer - minimum: 0 - description: The number of attempts at getting topic metadata. - logging: - type: object - properties: - loggers: - additionalProperties: - type: string - type: object - description: A Map from logger name to logger level. - type: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: + type: object + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: type: object properties: - configMapKeyRef: - type: object - properties: - key: - type: string - name: - type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: - type: string + name: + type: string + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for pods. + description: Configuration of the Topic Operator. + userOperator: + type: object + properties: + watchedNamespace: + type: string + description: The namespace the User Operator should watch. + image: + type: string + description: The image to use for the User Operator. + reconciliationIntervalSeconds: + type: integer + minimum: 0 + description: Interval between periodic reconciliations. + zookeeperSessionTimeoutSeconds: + type: integer + minimum: 0 + description: Timeout for the ZooKeeper session. + secretPrefix: + type: string + description: The prefix that will be added to the KafkaUser name to be used as the Secret name. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + resources: + type: object + properties: + claims: + type: array + items: type: object - description: A map of -XX options to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - "-Xmx": + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + logging: + type: object + properties: + loggers: + additionalProperties: type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: - name: - type: string - description: The system property name. - value: + key: type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for pods. - description: Configuration of the Topic Operator. - userOperator: - type: object - properties: - watchedNamespace: - type: string - description: The namespace the User Operator should watch. - image: - type: string - description: The image to use for the User Operator. - reconciliationIntervalSeconds: - type: integer - minimum: 0 - description: Interval between periodic reconciliations. - zookeeperSessionTimeoutSeconds: - type: integer - minimum: 0 - description: Timeout for the ZooKeeper session. - secretPrefix: - type: string - description: The prefix that will be added to the KafkaUser name to be used as the Secret name. - livenessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod readiness checking. - resources: - type: object - properties: - claims: - type: array - items: - type: object - properties: name: type: string - limits: - x-kubernetes-preserve-unknown-fields: true - type: object - requests: - x-kubernetes-preserve-unknown-fields: true - type: object - description: CPU and memory resources to reserve. - logging: - type: object - properties: - loggers: - additionalProperties: - type: string - type: object - description: A Map from logger name to logger level. - type: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: + type: object + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: type: object properties: - configMapKeyRef: - type: object - properties: - key: - type: string - name: - type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: - type: string + name: + type: string + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for pods. + description: Configuration of the User Operator. + tlsSidecar: + type: object + properties: + image: + type: string + description: The docker image for the container. + resources: + type: object + properties: + claims: + type: array + items: type: object - description: A map of -XX options to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + logLevel: + type: string + enum: + - emerg + - alert + - crit + - err + - warning + - notice + - info + - debug + description: The log level for the TLS sidecar. Default value is `notice`. + description: TLS sidecar configuration. + template: + type: object + properties: + deployment: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + deploymentStrategy: + type: string + enum: + - RollingUpdate + - Recreate + description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. + description: Template for Entity Operator `Deployment`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string type: object - properties: - name: - type: string - description: The system property name. - value: - type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for pods. - description: Configuration of the User Operator. - tlsSidecar: - type: object - properties: - image: - type: string - description: The docker image for the container. - livenessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod liveness checking. - logLevel: - type: string - enum: - - emerg - - alert - - crit - - err - - warning - - notice - - info - - debug - description: The log level for the TLS sidecar. Default value is `notice`. - readinessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod readiness checking. - resources: - type: object - properties: - claims: - type: array - items: + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string type: object - properties: - name: - type: string - limits: - x-kubernetes-preserve-unknown-fields: true - type: object - requests: - x-kubernetes-preserve-unknown-fields: true - type: object - description: CPU and memory resources to reserve. - description: TLS sidecar configuration. - template: - type: object - properties: - deployment: - type: object - properties: - metadata: + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - labels: - additionalProperties: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - deploymentStrategy: - type: string - enum: - - RollingUpdate - - Recreate - description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. - description: Template for Entity Operator `Deployment`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + seccompProfile: type: object properties: - name: + localhostProfile: type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: + type: + type: string + supplementalGroups: + type: array + items: type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: + sysctls: + type: array + items: type: object properties: - localhostProfile: + name: type: string - type: + value: type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: - type: array - items: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: object properties: - name: - type: string - value: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchFields: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + podAntiAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: object - properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + operator: type: string - matchFields: - type: array - items: + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + description: The pod's affinity rules. + tolerations: + type: array + items: + type: object + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: type: array items: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: + key: + type: string + operator: + type: string + values: type: array items: type: string - topologyKey: - type: string - podAntiAffinity: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: + type: object + properties: + hostnames: + type: array + items: + type: string + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: type: object properties: - preferredDuringSchedulingIgnoredDuringExecution: + defaultMode: + type: integer + items: type: array items: type: object properties: - podAffinityTerm: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: + key: + type: string + mode: type: integer - requiredDuringSchedulingIgnoredDuringExecution: + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: type: array items: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + key: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for Entity Operator `Pods`. + topicOperatorContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: type: object properties: - effect: + level: type: string - key: + role: type: string - operator: + type: type: string - tolerationSeconds: - type: integer - value: + user: type: string - description: The pod's tolerations. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: + seccompProfile: type: object properties: - hostnames: - type: array - items: - type: string - ip: + localhostProfile: type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - topologySpreadConstraints: - type: array - items: + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the Entity Topic Operator container. + userOperatorContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: + add: type: array items: type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - nodeTaintsPolicy: + role: type: string - topologyKey: + type: type: string - whenUnsatisfiable: + user: type: string - description: The pod's topology spread constraints. - description: Template for Entity Operator `Pods`. - topicOperatorContainer: - type: object - properties: - env: - type: array - items: + seccompProfile: type: object properties: - name: + localhostProfile: type: string - description: The environment variable key. - value: + type: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: - type: string - drop: - type: array - items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Security context for the container. - description: Template for the Entity Topic Operator container. - userOperatorContainer: - type: object - properties: - env: - type: array - items: + windowsOptions: type: object properties: - name: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: type: string - description: The environment variable key. - value: + hostProcess: + type: boolean + runAsUserName: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + description: Security context for the container. + description: Template for the Entity User Operator container. + tlsSidecarContainer: + type: object + properties: + env: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: - type: string - drop: - type: array - items: - type: string - privileged: - type: boolean - procMount: + name: type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: type: string - hostProcess: - type: boolean - runAsUserName: + drop: + type: array + items: type: string - description: Security context for the container. - description: Template for the Entity User Operator container. - tlsSidecarContainer: - type: object - properties: - env: - type: array - items: + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: type: object properties: - name: + level: type: string - description: The environment variable key. - value: + role: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: - type: string - drop: - type: array - items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Security context for the container. - description: Template for the Entity Operator TLS sidecar container. - serviceAccount: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Entity Operator service account. - entityOperatorRole: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + seccompProfile: + type: object + properties: + localhostProfile: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + type: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Entity Operator Role. - topicOperatorRoleBinding: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + gmsaCredentialSpecName: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Entity Topic Operator RoleBinding. - userOperatorRoleBinding: - type: object - properties: - metadata: + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the Entity Operator TLS sidecar container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Entity Operator service account. + entityOperatorRole: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Entity Operator Role. + topicOperatorRoleBinding: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Entity Topic Operator RoleBinding. + userOperatorRoleBinding: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Entity Topic Operator RoleBinding. + description: Template for Entity Operator resources. The template allows users to specify how a `Deployment` and `Pod` is generated. + description: Configuration of the Entity Operator. + clusterCa: + type: object + properties: + generateCertificateAuthority: + type: boolean + description: If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true. + generateSecretOwnerReference: + type: boolean + description: "If `true`, the Cluster and Client CA Secrets are configured with the `ownerReference` set to the `Kafka` resource. If the `Kafka` resource is deleted when `true`, the CA Secrets are also deleted. If `false`, the `ownerReference` is disabled. If the `Kafka` resource is deleted when `false`, the CA Secrets are retained and available for reuse. Default is `true`." + validityDays: + type: integer + minimum: 1 + description: The number of days generated certificates should be valid for. The default is 365. + renewalDays: + type: integer + minimum: 1 + description: "The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When `generateCertificateAuthority` is true, this will cause the generation of a new certificate. When `generateCertificateAuthority` is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30." + certificateExpirationPolicy: + type: string + enum: + - renew-certificate + - replace-key + description: How should CA certificate expiration be handled when `generateCertificateAuthority=true`. The default is for a new CA certificate to be generated reusing the existing private key. + description: Configuration of the cluster certificate authority. + clientsCa: + type: object + properties: + generateCertificateAuthority: + type: boolean + description: If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true. + generateSecretOwnerReference: + type: boolean + description: "If `true`, the Cluster and Client CA Secrets are configured with the `ownerReference` set to the `Kafka` resource. If the `Kafka` resource is deleted when `true`, the CA Secrets are also deleted. If `false`, the `ownerReference` is disabled. If the `Kafka` resource is deleted when `false`, the CA Secrets are retained and available for reuse. Default is `true`." + validityDays: + type: integer + minimum: 1 + description: The number of days generated certificates should be valid for. The default is 365. + renewalDays: + type: integer + minimum: 1 + description: "The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When `generateCertificateAuthority` is true, this will cause the generation of a new certificate. When `generateCertificateAuthority` is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30." + certificateExpirationPolicy: + type: string + enum: + - renew-certificate + - replace-key + description: How should CA certificate expiration be handled when `generateCertificateAuthority=true`. The default is for a new CA certificate to be generated reusing the existing private key. + description: Configuration of the clients certificate authority. + cruiseControl: + type: object + properties: + image: + type: string + description: "The container image used for Cruise Control pods. If no image name is explicitly specified, the image name corresponds to the name specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." + tlsSidecar: + type: object + properties: + image: + type: string + description: The docker image for the container. + resources: + type: object + properties: + claims: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Entity Topic Operator RoleBinding. - description: Template for Entity Operator resources. The template allows users to specify how a `Deployment` and `Pod` is generated. - description: Configuration of the Entity Operator. - clusterCa: - type: object - properties: - generateCertificateAuthority: - type: boolean - description: If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true. - generateSecretOwnerReference: - type: boolean - description: "If `true`, the Cluster and Client CA Secrets are configured with the `ownerReference` set to the `Kafka` resource. If the `Kafka` resource is deleted when `true`, the CA Secrets are also deleted. If `false`, the `ownerReference` is disabled. If the `Kafka` resource is deleted when `false`, the CA Secrets are retained and available for reuse. Default is `true`." - validityDays: - type: integer - minimum: 1 - description: The number of days generated certificates should be valid for. The default is 365. - renewalDays: - type: integer - minimum: 1 - description: "The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When `generateCertificateAuthority` is true, this will cause the generation of a new certificate. When `generateCertificateAuthority` is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30." - certificateExpirationPolicy: - type: string - enum: - - renew-certificate - - replace-key - description: How should CA certificate expiration be handled when `generateCertificateAuthority=true`. The default is for a new CA certificate to be generated reusing the existing private key. - description: Configuration of the cluster certificate authority. - clientsCa: - type: object - properties: - generateCertificateAuthority: - type: boolean - description: If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true. - generateSecretOwnerReference: - type: boolean - description: "If `true`, the Cluster and Client CA Secrets are configured with the `ownerReference` set to the `Kafka` resource. If the `Kafka` resource is deleted when `true`, the CA Secrets are also deleted. If `false`, the `ownerReference` is disabled. If the `Kafka` resource is deleted when `false`, the CA Secrets are retained and available for reuse. Default is `true`." - validityDays: - type: integer - minimum: 1 - description: The number of days generated certificates should be valid for. The default is 365. - renewalDays: - type: integer - minimum: 1 - description: "The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When `generateCertificateAuthority` is true, this will cause the generation of a new certificate. When `generateCertificateAuthority` is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30." - certificateExpirationPolicy: - type: string - enum: - - renew-certificate - - replace-key - description: How should CA certificate expiration be handled when `generateCertificateAuthority=true`. The default is for a new CA certificate to be generated reusing the existing private key. - description: Configuration of the clients certificate authority. - cruiseControl: - type: object - properties: - image: - type: string - description: "The container image used for Cruise Control pods. If no image name is explicitly specified, the image name corresponds to the name specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." - tlsSidecar: - type: object - properties: - image: - type: string - description: The docker image for the container. - livenessProbe: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + logLevel: + type: string + enum: + - emerg + - alert + - crit + - err + - warning + - notice + - info + - debug + description: The log level for the TLS sidecar. Default value is `notice`. + description: TLS sidecar configuration. + resources: + type: object + properties: + claims: + type: array + items: type: object properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod liveness checking. - logLevel: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve for the Cruise Control container. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking for the Cruise Control container. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking for the Cruise Control container. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: type: string - enum: - - emerg - - alert - - crit - - err - - warning - - notice - - info - - debug - description: The log level for the TLS sidecar. Default value is `notice`. - readinessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod readiness checking. - resources: + type: object + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: type: object properties: - claims: - type: array - items: - type: object - properties: - name: - type: string - limits: - x-kubernetes-preserve-unknown-fields: true - type: object - requests: - x-kubernetes-preserve-unknown-fields: true - type: object - description: CPU and memory resources to reserve. - description: TLS sidecar configuration. - resources: - type: object - properties: - claims: - type: array - items: + name: + type: string + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for the Cruise Control container. + logging: + type: object + properties: + loggers: + additionalProperties: + type: string + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: + key: + type: string name: type: string - limits: - x-kubernetes-preserve-unknown-fields: true - type: object - requests: - x-kubernetes-preserve-unknown-fields: true - type: object - description: CPU and memory resources to reserve for the Cruise Control container. - livenessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod liveness checking for the Cruise Control container. - readinessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod readiness checking for the Cruise Control container. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: - type: string - type: object - description: A map of -XX options to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration (Log4j 2) for Cruise Control. + template: + type: object + properties: + deployment: + type: object + properties: + metadata: type: object properties: - name: - type: string - description: The system property name. - value: - type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for the Cruise Control container. - logging: - type: object - properties: - loggers: - additionalProperties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + deploymentStrategy: type: string - type: object - description: A Map from logger name to logger level. - type: - type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: - type: object - properties: - configMapKeyRef: - type: object - properties: - key: + enum: + - RollingUpdate + - Recreate + description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. + description: Template for Cruise Control `Deployment`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - name: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration (Log4j 2) for Cruise Control. - template: - type: object - properties: - deployment: - type: object - properties: - metadata: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - labels: - additionalProperties: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - deploymentStrategy: - type: string - enum: - - RollingUpdate - - Recreate - description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. - description: Template for Cruise Control `Deployment`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + seccompProfile: type: object properties: - name: + localhostProfile: type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: + type: + type: string + supplementalGroups: + type: array + items: type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: - type: array - items: - type: object - properties: - name: - type: string - value: - type: string - windowsOptions: + sysctls: + type: array + items: type: object properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + name: type: string - hostProcess: - type: boolean - runAsUserName: + value: type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: object - properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: object + properties: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchFields: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: - type: string - podAntiAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + type: object + namespaces: + type: array + items: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: + topologyKey: + type: string + podAntiAffinity: type: object properties: - hostnames: + preferredDuringSchedulingIgnoredDuringExecution: type: array items: - type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - topologySpreadConstraints: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + type: object + properties: + podAffinityTerm: type: object properties: - key: - type: string - operator: - type: string - values: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: type: array items: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: array items: - type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - description: Template for Cruise Control `Pods`. - apiService: - type: object - properties: - metadata: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + description: The pod's affinity rules. + tolerations: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for Cruise Control API `Service`. - podDisruptionBudget: - type: object - properties: - metadata: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string + labelSelector: type: object - description: Annotations added to the Kubernetes resource. - description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. - maxUnavailable: - type: integer - minimum: 0 - description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." - description: Template for Cruise Control `PodDisruptionBudget`. - cruiseControlContainer: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: type: string - description: The environment variable key. - value: + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: + type: object + properties: + hostnames: + type: array + items: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: type: object properties: - add: - type: array - items: - type: string - drop: + defaultMode: + type: integer + items: type: array items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: type: object properties: - level: - type: string - role: - type: string - type: - type: string - user: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: type: string - seccompProfile: + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: type: object properties: - localhostProfile: - type: string - type: + medium: type: string - windowsOptions: + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: type: object properties: - gmsaCredentialSpec: + driver: type: string - gmsaCredentialSpecName: + fsType: type: string - hostProcess: + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: type: boolean - runAsUserName: + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for Cruise Control `Pods`. + apiService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for Cruise Control API `Service`. + podDisruptionBudget: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. + maxUnavailable: + type: integer + minimum: 0 + description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." + description: Template for Cruise Control `PodDisruptionBudget`. + cruiseControlContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: type: string - description: Security context for the container. - description: Template for the Cruise Control container. - tlsSidecarContainer: - type: object - properties: - env: - type: array - items: + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: type: object properties: - name: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: type: string - description: The environment variable key. - value: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + description: Security context for the container. + description: Template for the Cruise Control container. + tlsSidecarContainer: + type: object + properties: + env: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: - type: string - drop: - type: array - items: - type: string - privileged: - type: boolean - procMount: + name: type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: type: string - hostProcess: - type: boolean - runAsUserName: + drop: + type: array + items: type: string - description: Security context for the container. - description: Template for the Cruise Control TLS sidecar container. - serviceAccount: + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the Cruise Control TLS sidecar container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Cruise Control service account. + description: "Template to specify how Cruise Control resources, `Deployments` and `Pods`, are generated." + brokerCapacity: + type: object + properties: + disk: + type: string + pattern: "^[0-9]+([.][0-9]*)?([KMGTPE]i?|e[0-9]+)?$" + description: "Broker capacity for disk in bytes. Use a number value with either standard Kubernetes byte units (K, M, G, or T), their bibyte (power of two) equivalents (Ki, Mi, Gi, or Ti), or a byte value with or without E notation. For example, 100000M, 100000Mi, 104857600000, or 1e+11." + cpuUtilization: + type: integer + minimum: 0 + maximum: 100 + description: Broker capacity for CPU resource utilization as a percentage (0 - 100). + cpu: + type: string + pattern: "^[0-9]+([.][0-9]{0,3}|[m]?)$" + description: "Broker capacity for CPU resource in cores or millicores. For example, 1, 1.500, 1500m. For more information on valid CPU resource units see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu." + inboundNetwork: + type: string + pattern: "^[0-9]+([KMG]i?)?B/s$" + description: "Broker capacity for inbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." + outboundNetwork: + type: string + pattern: "^[0-9]+([KMG]i?)?B/s$" + description: "Broker capacity for outbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." + overrides: + type: array + items: type: object properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Cruise Control service account. - description: "Template to specify how Cruise Control resources, `Deployments` and `Pods`, are generated." - brokerCapacity: + brokers: + type: array + items: + type: integer + description: List of Kafka brokers (broker identifiers). + cpu: + type: string + pattern: "^[0-9]+([.][0-9]{0,3}|[m]?)$" + description: "Broker capacity for CPU resource in cores or millicores. For example, 1, 1.500, 1500m. For more information on valid CPU resource units see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu." + inboundNetwork: + type: string + pattern: "^[0-9]+([KMG]i?)?B/s$" + description: "Broker capacity for inbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." + outboundNetwork: + type: string + pattern: "^[0-9]+([KMG]i?)?B/s$" + description: "Broker capacity for outbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." + required: + - brokers + description: Overrides for individual brokers. The `overrides` property lets you specify a different capacity configuration for different brokers. + description: The Cruise Control `brokerCapacity` configuration. + config: + x-kubernetes-preserve-unknown-fields: true + type: object + description: "The Cruise Control configuration. For a full list of configuration options refer to https://github.com/linkedin/cruise-control/wiki/Configurations. Note that properties with the following prefixes cannot be set: bootstrap.servers, client.id, zookeeper., network., security., failed.brokers.zk.path,webserver.http., webserver.api.urlprefix, webserver.session.path, webserver.accesslog., two.step., request.reason.required,metric.reporter.sampler.bootstrap.servers, capacity.config.file, self.healing., ssl., kafka.broker.failure.detection.enable, topic.config.provider.class (with the exception of: ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, webserver.http.cors.enabled, webserver.http.cors.origin, webserver.http.cors.exposeheaders, webserver.security.enable, webserver.ssl.enable)." + metricsConfig: + type: object + properties: + type: + type: string + enum: + - jmxPrometheusExporter + description: Metrics type. Only 'jmxPrometheusExporter' supported currently. + valueFrom: + type: object + properties: + configMapKeyRef: + type: object + properties: + key: + type: string + name: + type: string + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' + required: + - type + - valueFrom + description: Metrics configuration. + description: Configuration for Cruise Control deployment. Deploys a Cruise Control instance when specified. + jmxTrans: + type: object + properties: + image: + type: string + description: The image to use for the JmxTrans. + outputDefinitions: + type: array + items: type: object properties: - disk: - type: string - pattern: "^[0-9]+([.][0-9]*)?([KMGTPE]i?|e[0-9]+)?$" - description: "Broker capacity for disk in bytes. Use a number value with either standard Kubernetes byte units (K, M, G, or T), their bibyte (power of two) equivalents (Ki, Mi, Gi, or Ti), or a byte value with or without E notation. For example, 100000M, 100000Mi, 104857600000, or 1e+11." - cpuUtilization: - type: integer - minimum: 0 - maximum: 100 - description: Broker capacity for CPU resource utilization as a percentage (0 - 100). - cpu: - type: string - pattern: "^[0-9]+([.][0-9]{0,3}|[m]?)$" - description: "Broker capacity for CPU resource in cores or millicores. For example, 1, 1.500, 1500m. For more information on valid CPU resource units see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu." - inboundNetwork: + outputType: type: string - pattern: "^[0-9]+([KMG]i?)?B/s$" - description: "Broker capacity for inbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." - outboundNetwork: + description: "Template for setting the format of the data that will be pushed.For more information see https://github.com/jmxtrans/jmxtrans/wiki/OutputWriters[JmxTrans OutputWriters]." + host: type: string - pattern: "^[0-9]+([KMG]i?)?B/s$" - description: "Broker capacity for outbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." - overrides: + description: The DNS/hostname of the remote host that the data is pushed to. + port: + type: integer + description: The port of the remote host that the data is pushed to. + flushDelayInSeconds: + type: integer + description: How many seconds the JmxTrans waits before pushing a new set of data out. + typeNames: type: array items: - type: object - properties: - brokers: - type: array - items: - type: integer - description: List of Kafka brokers (broker identifiers). - cpu: - type: string - pattern: "^[0-9]+([.][0-9]{0,3}|[m]?)$" - description: "Broker capacity for CPU resource in cores or millicores. For example, 1, 1.500, 1500m. For more information on valid CPU resource units see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu." - inboundNetwork: - type: string - pattern: "^[0-9]+([KMG]i?)?B/s$" - description: "Broker capacity for inbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." - outboundNetwork: - type: string - pattern: "^[0-9]+([KMG]i?)?B/s$" - description: "Broker capacity for outbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." - required: - - brokers - description: Overrides for individual brokers. The `overrides` property lets you specify a different capacity configuration for different brokers. - description: The Cruise Control `brokerCapacity` configuration. - config: - x-kubernetes-preserve-unknown-fields: true - type: object - description: "The Cruise Control configuration. For a full list of configuration options refer to https://github.com/linkedin/cruise-control/wiki/Configurations. Note that properties with the following prefixes cannot be set: bootstrap.servers, client.id, zookeeper., network., security., failed.brokers.zk.path,webserver.http., webserver.api.urlprefix, webserver.session.path, webserver.accesslog., two.step., request.reason.required,metric.reporter.sampler.bootstrap.servers, capacity.config.file, self.healing., ssl., kafka.broker.failure.detection.enable, topic.config.provider.class (with the exception of: ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, webserver.http.cors.enabled, webserver.http.cors.origin, webserver.http.cors.exposeheaders, webserver.security.enable, webserver.ssl.enable)." - metricsConfig: + type: string + description: "Template for filtering data to be included in response to a wildcard query. For more information see https://github.com/jmxtrans/jmxtrans/wiki/Queries[JmxTrans queries]." + name: + type: string + description: Template for setting the name of the output definition. This is used to identify where to send the results of queries should be sent. + required: + - outputType + - name + description: "Defines the output hosts that will be referenced later on. For more information on these properties see, xref:type-JmxTransOutputDefinitionTemplate-reference[`JmxTransOutputDefinitionTemplate` schema reference]." + logLevel: + type: string + description: "Sets the logging level of the JmxTrans deployment.For more information see, https://github.com/jmxtrans/jmxtrans-agent/wiki/Troubleshooting[JmxTrans Logging Level]." + kafkaQueries: + type: array + items: type: object properties: - type: + targetMBean: type: string - enum: - - jmxPrometheusExporter - description: Metrics type. Only 'jmxPrometheusExporter' supported currently. - valueFrom: + description: If using wildcards instead of a specific MBean then the data is gathered from multiple MBeans. Otherwise if specifying an MBean then data is gathered from that specified MBean. + attributes: + type: array + items: + type: string + description: Determine which attributes of the targeted MBean should be included. + outputs: + type: array + items: + type: string + description: "List of the names of output definitions specified in the spec.kafka.jmxTrans.outputDefinitions that have defined where JMX metrics are pushed to, and in which data format." + required: + - targetMBean + - attributes + - outputs + description: "Queries to send to the Kafka brokers to define what data should be read from each broker. For more information on these properties see, xref:type-JmxTransQueryTemplate-reference[`JmxTransQueryTemplate` schema reference]." + resources: + type: object + properties: + claims: + type: array + items: type: object properties: - configMapKeyRef: - type: object - properties: - key: - type: string - name: - type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' - required: - - type - - valueFrom - description: Metrics configuration. - description: Configuration for Cruise Control deployment. Deploys a Cruise Control instance when specified. - jmxTrans: - type: object - properties: - image: - type: string - description: The image to use for the JmxTrans. - outputDefinitions: - type: array - items: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + template: + type: object + properties: + deployment: type: object properties: - outputType: - type: string - description: "Template for setting the format of the data that will be pushed.For more information see https://github.com/jmxtrans/jmxtrans/wiki/OutputWriters[JmxTrans OutputWriters]." - host: - type: string - description: The DNS/hostname of the remote host that the data is pushed to. - port: - type: integer - description: The port of the remote host that the data is pushed to. - flushDelayInSeconds: - type: integer - description: How many seconds the JmxTrans waits before pushing a new set of data out. - typeNames: - type: array - items: - type: string - description: "Template for filtering data to be included in response to a wildcard query. For more information see https://github.com/jmxtrans/jmxtrans/wiki/Queries[JmxTrans queries]." - name: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + deploymentStrategy: type: string - description: Template for setting the name of the output definition. This is used to identify where to send the results of queries should be sent. - required: - - outputType - - name - description: "Defines the output hosts that will be referenced later on. For more information on these properties see, xref:type-JmxTransOutputDefinitionTemplate-reference[`JmxTransOutputDefinitionTemplate` schema reference]." - logLevel: - type: string - description: "Sets the logging level of the JmxTrans deployment.For more information see, https://github.com/jmxtrans/jmxtrans-agent/wiki/Troubleshooting[JmxTrans Logging Level]." - kafkaQueries: - type: array - items: + enum: + - RollingUpdate + - Recreate + description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. + description: Template for JmxTrans `Deployment`. + pod: type: object properties: - targetMBean: - type: string - description: If using wildcards instead of a specific MBean then the data is gathered from multiple MBeans. Otherwise if specifying an MBean then data is gathered from that specified MBean. - attributes: - type: array - items: - type: string - description: Determine which attributes of the targeted MBean should be included. - outputs: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: type: array items: - type: string - description: "List of the names of output definitions specified in the spec.kafka.jmxTrans.outputDefinitions that have defined where JMX metrics are pushed to, and in which data format." - required: - - targetMBean - - attributes - - outputs - description: "Queries to send to the Kafka brokers to define what data should be read from each broker. For more information on these properties see, xref:type-JmxTransQueryTemplate-reference[`JmxTransQueryTemplate` schema reference]." - resources: - type: object - properties: - claims: - type: array - items: + type: object + properties: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: type: object properties: - name: + fsGroup: + type: integer + fsGroupChangePolicy: type: string - limits: - x-kubernetes-preserve-unknown-fields: true - type: object - requests: - x-kubernetes-preserve-unknown-fields: true - type: object - description: CPU and memory resources to reserve. - template: - type: object - properties: - deployment: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - deploymentStrategy: - type: string - enum: - - RollingUpdate - - Recreate - description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. - description: Template for JmxTrans `Deployment`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + seccompProfile: type: object properties: - name: + localhostProfile: type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: + type: + type: string + supplementalGroups: + type: array + items: type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: - type: array - items: - type: object - properties: - name: - type: string - value: - type: string - windowsOptions: + sysctls: + type: array + items: type: object properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + name: type: string - hostProcess: - type: boolean - runAsUserName: + value: type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: type: object properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: object + properties: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchFields: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: - type: string - podAntiAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + type: object + namespaces: + type: array + items: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: + topologyKey: + type: string + podAntiAffinity: type: object properties: - hostnames: + preferredDuringSchedulingIgnoredDuringExecution: type: array items: - type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - topologySpreadConstraints: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + type: object + properties: + podAffinityTerm: type: object properties: - key: - type: string - operator: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - values: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchLabels: - additionalProperties: + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string + description: The pod's affinity rules. + tolerations: + type: array + items: + type: object + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - matchLabelKeys: - type: array - items: - type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - description: Template for JmxTrans `Pods`. - container: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: type: string - description: The environment variable key. - value: + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: + type: object + properties: + hostnames: + type: array + items: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: type: object properties: - add: - type: array - items: - type: string - drop: + defaultMode: + type: integer + items: type: array items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: type: object properties: - level: - type: string - role: - type: string - type: - type: string - user: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: type: string - seccompProfile: + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: type: object properties: - localhostProfile: + medium: type: string - type: - type: string - windowsOptions: + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: type: object properties: - gmsaCredentialSpec: + driver: type: string - gmsaCredentialSpecName: + fsType: type: string - hostProcess: + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: type: boolean - runAsUserName: - type: string - description: Security context for the container. - description: Template for JmxTrans container. - serviceAccount: - type: object - properties: - metadata: + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for JmxTrans `Pods`. + container: + type: object + properties: + env: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the JmxTrans service account. - description: Template for JmxTrans resources. - required: - - outputDefinitions - - kafkaQueries - description: "As of Strimzi 0.35.0, JMXTrans is not supported anymore and this option is ignored." - kafkaExporter: - type: object - properties: - image: - type: string - description: "The container image used for the Kafka Exporter pods. If no image name is explicitly specified, the image name corresponds to the version specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." - groupRegex: - type: string - description: Regular expression to specify which consumer groups to collect. Default value is `.*`. - topicRegex: - type: string - description: Regular expression to specify which topics to collect. Default value is `.*`. - groupExcludeRegex: - type: string - description: Regular expression to specify which consumer groups to exclude. - topicExcludeRegex: - type: string - description: Regular expression to specify which topics to exclude. - resources: - type: object - properties: - claims: - type: array - items: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: type: object properties: - name: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: type: string - limits: - x-kubernetes-preserve-unknown-fields: true - type: object - requests: - x-kubernetes-preserve-unknown-fields: true - type: object - description: CPU and memory resources to reserve. - logging: - type: string - description: "Only log messages with the given severity or above. Valid levels: [`info`, `debug`, `trace`]. Default log level is `info`." - enableSaramaLogging: - type: boolean - description: "Enable Sarama logging, a Go client library used by the Kafka Exporter." - showAllOffsets: - type: boolean - description: "Whether show the offset/lag for all consumer group, otherwise, only show connected consumer groups." - template: - type: object - properties: - deployment: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - deploymentStrategy: - type: string - enum: - - RollingUpdate - - Recreate - description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. - description: Template for Kafka Exporter `Deployment`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + seccompProfile: type: object properties: - name: + localhostProfile: type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for JmxTrans container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: - type: array - items: - type: object - properties: - name: - type: string - value: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the JmxTrans service account. + description: Template for JmxTrans resources. + required: + - outputDefinitions + - kafkaQueries + description: "As of Strimzi 0.35.0, JMXTrans is not supported anymore and this option is ignored." + kafkaExporter: + type: object + properties: + image: + type: string + description: "The container image used for the Kafka Exporter pods. If no image name is explicitly specified, the image name corresponds to the version specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." + groupRegex: + type: string + description: Regular expression to specify which consumer groups to collect. Default value is `.*`. + topicRegex: + type: string + description: Regular expression to specify which topics to collect. Default value is `.*`. + groupExcludeRegex: + type: string + description: Regular expression to specify which consumer groups to exclude. + topicExcludeRegex: + type: string + description: Regular expression to specify which topics to exclude. + resources: + type: object + properties: + claims: + type: array + items: + type: object + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + logging: + type: string + description: "Only log messages with the given severity or above. Valid levels: [`info`, `debug`, `trace`]. Default log level is `info`." + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness check. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness check. + enableSaramaLogging: + type: boolean + description: "Enable Sarama logging, a Go client library used by the Kafka Exporter." + showAllOffsets: + type: boolean + description: "Whether show the offset/lag for all consumer group, otherwise, only show connected consumer groups." + template: + type: object + properties: + deployment: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + deploymentStrategy: + type: string + enum: + - RollingUpdate + - Recreate + description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. + description: Template for Kafka Exporter `Deployment`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + supplementalGroups: + type: array + items: + type: integer + sysctls: + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: type: object properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: object + properties: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchFields: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: - type: string - podAntiAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + type: object + namespaces: + type: array + items: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: + topologyKey: + type: string + podAntiAffinity: type: object properties: - hostnames: + preferredDuringSchedulingIgnoredDuringExecution: type: array items: - type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - topologySpreadConstraints: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + type: object + properties: + podAffinityTerm: type: object properties: - key: - type: string - operator: - type: string - values: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: type: array items: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: array items: - type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - description: Template for Kafka Exporter `Pods`. - service: - type: object - properties: - metadata: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + description: The pod's affinity rules. + tolerations: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka Exporter `Service`. - container: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: - type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + labelSelector: type: object properties: - add: - type: array - items: - type: string - drop: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: + type: object + matchLabelKeys: + type: array + items: + type: string + maxSkew: type: integer - runAsNonRoot: - type: boolean - runAsUser: + minDomains: type: integer - seLinuxOptions: + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: + type: object + properties: + hostnames: + type: array + items: + type: string + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: type: object properties: - level: - type: string - role: - type: string - type: - type: string - user: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: type: string - seccompProfile: + description: Secret to use populate the volume. + configMap: type: object properties: - localhostProfile: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: type: string - type: + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: type: string - windowsOptions: + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: type: object properties: - gmsaCredentialSpec: + driver: type: string - gmsaCredentialSpecName: + fsType: type: string - hostProcess: + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: type: boolean - runAsUserName: - type: string - description: Security context for the container. - description: Template for the Kafka Exporter container. - serviceAccount: - type: object - properties: - metadata: + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for Kafka Exporter `Pods`. + service: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka Exporter `Service`. + container: + type: object + properties: + env: + type: array + items: type: object properties: - labels: - additionalProperties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Kafka Exporter service account. - description: Customization of deployment templates and pods. - livenessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod liveness check. - readinessProbe: - type: object - properties: - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - description: Pod readiness check. - description: "Configuration of the Kafka Exporter. Kafka Exporter can provide additional metrics, for example lag of consumer group at topic/partition." - maintenanceTimeWindows: - type: array - items: - type: string - description: "A list of time windows for maintenance tasks (that is, certificates renewal). Each time window is defined by a cron expression." - required: - - kafka - description: "The specification of the Kafka and ZooKeeper clusters, and Topic Operator." - status: - type: object - properties: - conditions: - type: array - items: - type: object - properties: - type: - type: string - description: "The unique identifier of a condition, used to distinguish between other conditions in the resource." - status: - type: string - description: "The status of the condition, either True, False or Unknown." - lastTransitionTime: - type: string - description: "Last time the condition of a type changed from one status to another. The required format is 'yyyy-MM-ddTHH:mm:ssZ', in the UTC time zone." - reason: - type: string - description: The reason for the condition's last transition (a single word in CamelCase). - message: - type: string - description: Human-readable message indicating details about the condition's last transition. - description: List of status conditions. - observedGeneration: - type: integer - description: The generation of the CRD that was last reconciled by the operator. - listeners: - type: array - items: - type: object - properties: - type: - type: string - description: The name of the listener. - name: - type: string - description: The name of the listener. - addresses: - type: array - items: - type: object - properties: - host: - type: string - description: The DNS name or IP address of the Kafka bootstrap service. - port: - type: integer - description: The port of the Kafka bootstrap service. - description: A list of the addresses for this listener. - bootstrapServers: - type: string - description: A comma-separated list of `host:port` pairs for connecting to the Kafka cluster using this listener. - certificates: - type: array - items: - type: string - description: A list of TLS certificates which can be used to verify the identity of the server when connecting to the given listener. Set only for `tls` and `external` listeners. - description: Addresses of the internal and external listeners. - kafkaNodePools: - type: array - items: - type: object - properties: - name: - type: string - description: The name of the KafkaNodePool used by this Kafka resource. - description: List of the KafkaNodePools used by this Kafka cluster. - clusterId: - type: string - description: Kafka cluster Id. - operatorLastSuccessfulVersion: - type: string - description: The version of the Strimzi Cluster Operator which performed the last successful reconciliation. - kafkaVersion: - type: string - description: The version of Kafka currently deployed in the cluster. - kafkaMetadataVersion: - type: string - description: The KRaft metadata.version currently used by the Kafka cluster. - kafkaMetadataState: + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the Kafka Exporter container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Kafka Exporter service account. + description: Customization of deployment templates and pods. + description: "Configuration of the Kafka Exporter. Kafka Exporter can provide additional metrics, for example lag of consumer group at topic/partition." + maintenanceTimeWindows: + type: array + items: type: string - enum: - - ZooKeeper - - KRaftMigration - - KRaftDualWriting - - KRaftPostMigration - - PreKRaft - - KRaft - description: "Defines where cluster metadata are stored. Possible values are: ZooKeeper if the metadata are stored in ZooKeeper; KRaftMigration if the controllers are connected to ZooKeeper, brokers are being rolled with Zookeeper migration enabled and connection information to controllers, and the metadata migration process is running; KRaftDualWriting if the metadata migration process finished and the cluster is in dual-write mode; KRaftPostMigration if the brokers are fully KRaft-based but controllers being rolled to disconnect from ZooKeeper; PreKRaft if brokers and controller are fully KRaft-based, metadata are stored in KRaft, but ZooKeeper must be deleted; KRaft if the metadata are stored in KRaft." - description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." + description: "A list of time windows for maintenance tasks (that is, certificates renewal). Each time window is defined by a cron expression." + required: + - kafka + description: "The specification of the Kafka and ZooKeeper clusters, and Topic Operator." + status: + type: object + properties: + conditions: + type: array + items: + type: object + properties: + type: + type: string + description: "The unique identifier of a condition, used to distinguish between other conditions in the resource." + status: + type: string + description: "The status of the condition, either True, False or Unknown." + lastTransitionTime: + type: string + description: "Last time the condition of a type changed from one status to another. The required format is 'yyyy-MM-ddTHH:mm:ssZ', in the UTC time zone." + reason: + type: string + description: The reason for the condition's last transition (a single word in CamelCase). + message: + type: string + description: Human-readable message indicating details about the condition's last transition. + description: List of status conditions. + observedGeneration: + type: integer + description: The generation of the CRD that was last reconciled by the operator. + listeners: + type: array + items: + type: object + properties: + type: + type: string + description: The name of the listener. + name: + type: string + description: The name of the listener. + addresses: + type: array + items: + type: object + properties: + host: + type: string + description: The DNS name or IP address of the Kafka bootstrap service. + port: + type: integer + description: The port of the Kafka bootstrap service. + description: A list of the addresses for this listener. + bootstrapServers: + type: string + description: A comma-separated list of `host:port` pairs for connecting to the Kafka cluster using this listener. + certificates: + type: array + items: + type: string + description: A list of TLS certificates which can be used to verify the identity of the server when connecting to the given listener. Set only for `tls` and `external` listeners. + description: Addresses of the internal and external listeners. + kafkaNodePools: + type: array + items: + type: object + properties: + name: + type: string + description: The name of the KafkaNodePool used by this Kafka resource. + description: List of the KafkaNodePools used by this Kafka cluster. + clusterId: + type: string + description: Kafka cluster Id. + operatorLastSuccessfulVersion: + type: string + description: The version of the Strimzi Cluster Operator which performed the last successful reconciliation. + kafkaVersion: + type: string + description: The version of Kafka currently deployed in the cluster. + kafkaMetadataVersion: + type: string + description: The KRaft metadata.version currently used by the Kafka cluster. + kafkaMetadataState: + type: string + enum: + - ZooKeeper + - KRaftMigration + - KRaftDualWriting + - KRaftPostMigration + - PreKRaft + - KRaft + description: "Defines where cluster metadata are stored. Possible values are: ZooKeeper if the metadata are stored in ZooKeeper; KRaftMigration if the controllers are connected to ZooKeeper, brokers are being rolled with Zookeeper migration enabled and connection information to controllers, and the metadata migration process is running; KRaftDualWriting if the metadata migration process finished and the cluster is in dual-write mode; KRaftPostMigration if the brokers are fully KRaft-based but controllers being rolled to disconnect from ZooKeeper; PreKRaft if brokers and controller are fully KRaft-based, metadata are stored in KRaft, but ZooKeeper must be deleted; KRaft if the metadata are stored in KRaft." + description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml index f5c2382b4f4..6b07bb71fb3 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml @@ -5,7 +5,6 @@ metadata: labels: app: strimzi strimzi.io/crd-install: "true" - component: kafkas.kafka.strimzi.io-crd spec: group: kafka.strimzi.io names: @@ -14,122 +13,216 @@ spec: singular: kafka plural: kafkas shortNames: - - k + - k categories: - - strimzi + - strimzi scope: Namespaced conversion: strategy: None versions: - - name: v1beta2 - served: true - storage: true - subresources: - status: {} - additionalPrinterColumns: - - name: Desired Kafka replicas - description: The desired number of Kafka replicas in the cluster - jsonPath: .spec.kafka.replicas - type: integer - - name: Desired ZK replicas - description: The desired number of ZooKeeper replicas in the cluster - jsonPath: .spec.zookeeper.replicas - type: integer - - name: Ready - description: The state of the custom resource - jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" - type: string - - name: Metadata State - description: The state of the cluster metadata - jsonPath: .status.kafkaMetadataState - type: string - - name: Warnings - description: Warnings related to the custom resource - jsonPath: ".status.conditions[?(@.type==\"Warning\")].status" - type: string - schema: - openAPIV3Schema: - type: object - properties: - apiVersion: - type: string - 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" - kind: - type: string - 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" - metadata: - type: object - spec: - type: object - properties: - kafka: - type: object - properties: - version: - type: string - description: The Kafka broker version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. - metadataVersion: - type: string - description: "The KRaft metadata version used by the Kafka cluster. This property is ignored when running in ZooKeeper mode. If the property is not set, it defaults to the metadata version that corresponds to the `version` property." - replicas: - type: integer - minimum: 1 - description: The number of pods in the cluster. This property is required when node pools are not used. - image: - type: string - description: "The container image used for Kafka pods. If the property is not set, the default Kafka image version is determined based on the `version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration. Changing the Kafka image version does not automatically update the image versions for other components, such as Kafka Exporter. " - listeners: - type: array - minItems: 1 - items: - type: object - properties: - name: - type: string - pattern: "^[a-z0-9]{1,11}$" - description: Name of the listener. The name will be used to identify the listener and the related Kubernetes objects. The name has to be unique within given a Kafka cluster. The name can consist of lowercase characters and numbers and be up to 11 characters long. - port: - type: integer - minimum: 9092 - description: "Port number used by the listener inside Kafka. The port number has to be unique within a given Kafka cluster. Allowed port numbers are 9092 and higher with the exception of ports 9404 and 9999, which are already used for Prometheus and JMX. Depending on the listener type, the port number might not be the same as the port number that connects Kafka clients." - type: - type: string - enum: - - internal - - route - - loadbalancer - - nodeport - - ingress - - cluster-ip - description: "Type of the listener. The supported types are as follows: \n\n* `internal` type exposes Kafka internally only within the Kubernetes cluster.\n* `route` type uses OpenShift Routes to expose Kafka.\n* `loadbalancer` type uses LoadBalancer type services to expose Kafka.\n* `nodeport` type uses NodePort type services to expose Kafka.\n* `ingress` type uses Kubernetes Nginx Ingress to expose Kafka with TLS passthrough.\n* `cluster-ip` type uses a per-broker `ClusterIP` service.\n" - tls: - type: boolean - description: Enables TLS encryption on the listener. This is a required property. - authentication: - type: object - properties: - accessTokenIsJwt: - type: boolean - description: Configure whether the access token is treated as JWT. This must be set to `false` if the authorization server returns opaque tokens. Defaults to `true`. - checkAccessTokenType: - type: boolean - description: Configure whether the access token type check is performed or not. This should be set to `false` if the authorization server does not include 'typ' claim in JWT token. Defaults to `true`. - checkAudience: - type: boolean - description: "Enable or disable audience checking. Audience checks identify the recipients of tokens. If audience checking is enabled, the OAuth Client ID also has to be configured using the `clientId` property. The Kafka broker will reject tokens that do not have its `clientId` in their `aud` (audience) claim.Default value is `false`." - checkIssuer: - type: boolean - description: Enable or disable issuer checking. By default issuer is checked using the value configured by `validIssuerUri`. Default value is `true`. - clientAudience: - type: string - description: The audience to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. - clientId: - type: string - description: OAuth Client ID which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. - clientScope: - type: string - description: The scope to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. - clientSecret: + - name: v1beta2 + served: true + storage: true + subresources: + status: {} + additionalPrinterColumns: + - name: Desired Kafka replicas + description: The desired number of Kafka replicas in the cluster + jsonPath: .spec.kafka.replicas + type: integer + - name: Desired ZK replicas + description: The desired number of ZooKeeper replicas in the cluster + jsonPath: .spec.zookeeper.replicas + type: integer + - name: Ready + description: The state of the custom resource + jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" + type: string + - name: Metadata State + description: The state of the cluster metadata + jsonPath: .status.kafkaMetadataState + type: string + - name: Warnings + description: Warnings related to the custom resource + jsonPath: ".status.conditions[?(@.type==\"Warning\")].status" + type: string + schema: + openAPIV3Schema: + type: object + properties: + apiVersion: + type: string + 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" + kind: + type: string + 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" + metadata: + type: object + spec: + type: object + properties: + kafka: + type: object + properties: + version: + type: string + description: The Kafka broker version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. + metadataVersion: + type: string + description: "The KRaft metadata version used by the Kafka cluster. This property is ignored when running in ZooKeeper mode. If the property is not set, it defaults to the metadata version that corresponds to the `version` property." + replicas: + type: integer + minimum: 1 + description: The number of pods in the cluster. This property is required when node pools are not used. + image: + type: string + description: "The container image used for Kafka pods. If the property is not set, the default Kafka image version is determined based on the `version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration. Changing the Kafka image version does not automatically update the image versions for other components, such as Kafka Exporter. " + listeners: + type: array + minItems: 1 + items: + type: object + properties: + name: + type: string + pattern: "^[a-z0-9]{1,11}$" + description: Name of the listener. The name will be used to identify the listener and the related Kubernetes objects. The name has to be unique within given a Kafka cluster. The name can consist of lowercase characters and numbers and be up to 11 characters long. + port: + type: integer + minimum: 9092 + description: "Port number used by the listener inside Kafka. The port number has to be unique within a given Kafka cluster. Allowed port numbers are 9092 and higher with the exception of ports 9404 and 9999, which are already used for Prometheus and JMX. Depending on the listener type, the port number might not be the same as the port number that connects Kafka clients." + type: + type: string + enum: + - internal + - route + - loadbalancer + - nodeport + - ingress + - cluster-ip + description: "Type of the listener. The supported types are as follows: \n\n* `internal` type exposes Kafka internally only within the Kubernetes cluster.\n* `route` type uses OpenShift Routes to expose Kafka.\n* `loadbalancer` type uses LoadBalancer type services to expose Kafka.\n* `nodeport` type uses NodePort type services to expose Kafka.\n* `ingress` type uses Kubernetes Nginx Ingress to expose Kafka with TLS passthrough.\n* `cluster-ip` type uses a per-broker `ClusterIP` service.\n" + tls: + type: boolean + description: Enables TLS encryption on the listener. This is a required property. + authentication: + type: object + properties: + accessTokenIsJwt: + type: boolean + description: Configure whether the access token is treated as JWT. This must be set to `false` if the authorization server returns opaque tokens. Defaults to `true`. + checkAccessTokenType: + type: boolean + description: Configure whether the access token type check is performed or not. This should be set to `false` if the authorization server does not include 'typ' claim in JWT token. Defaults to `true`. + checkAudience: + type: boolean + description: "Enable or disable audience checking. Audience checks identify the recipients of tokens. If audience checking is enabled, the OAuth Client ID also has to be configured using the `clientId` property. The Kafka broker will reject tokens that do not have its `clientId` in their `aud` (audience) claim.Default value is `false`." + checkIssuer: + type: boolean + description: Enable or disable issuer checking. By default issuer is checked using the value configured by `validIssuerUri`. Default value is `true`. + clientAudience: + type: string + description: The audience to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. + clientId: + type: string + description: OAuth Client ID which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. + clientScope: + type: string + description: The scope to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. + clientSecret: + type: object + properties: + key: + type: string + description: The key under which the secret value is stored in the Kubernetes Secret. + secretName: + type: string + description: The name of the Kubernetes Secret containing the secret value. + required: + - key + - secretName + description: Link to Kubernetes Secret containing the OAuth client secret which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. + connectTimeoutSeconds: + type: integer + description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." + customClaimCheck: + type: string + description: JsonPath filter query to be applied to the JWT token or to the response of the introspection endpoint for additional token validation. Not set by default. + disableTlsHostnameVerification: + type: boolean + description: Enable or disable TLS hostname verification. Default value is `false`. + enableECDSA: + type: boolean + description: Enable or disable ECDSA support by installing BouncyCastle crypto provider. ECDSA support is always enabled. The BouncyCastle libraries are no longer packaged with Strimzi. Value is ignored. + enableMetrics: + type: boolean + description: Enable or disable OAuth metrics. Default value is `false`. + enableOauthBearer: + type: boolean + description: Enable or disable OAuth authentication over SASL_OAUTHBEARER. Default value is `true`. + enablePlain: + type: boolean + description: Enable or disable OAuth authentication over SASL_PLAIN. There is no re-authentication support when this mechanism is used. Default value is `false`. + failFast: + type: boolean + description: Enable or disable termination of Kafka broker processes due to potentially recoverable runtime errors during startup. Default value is `true`. + fallbackUserNameClaim: + type: string + description: The fallback username claim to be used for the user id if the claim specified by `userNameClaim` is not present. This is useful when `client_credentials` authentication only results in the client id being provided in another claim. It only takes effect if `userNameClaim` is set. + fallbackUserNamePrefix: + type: string + description: "The prefix to use with the value of `fallbackUserNameClaim` to construct the user id. This only takes effect if `fallbackUserNameClaim` is true, and the value is present for the claim. Mapping usernames and client ids into the same user id space is useful in preventing name collisions." + groupsClaim: + type: string + description: JsonPath query used to extract groups for the user during authentication. Extracted groups can be used by a custom authorizer. By default no groups are extracted. + groupsClaimDelimiter: + type: string + description: "A delimiter used to parse groups when they are extracted as a single String value rather than a JSON array. Default value is ',' (comma)." + httpRetries: + type: integer + description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." + httpRetryPauseMs: + type: integer + description: "The pause to take before retrying a failed HTTP request. If not set, the default is to not pause at all but to immediately repeat a request." + includeAcceptHeader: + type: boolean + description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. + introspectionEndpointUri: + type: string + description: URI of the token introspection endpoint which can be used to validate opaque non-JWT tokens. + jwksEndpointUri: + type: string + description: "URI of the JWKS certificate endpoint, which can be used for local JWT validation." + jwksExpirySeconds: + type: integer + minimum: 1 + description: Configures how often are the JWKS certificates considered valid. The expiry interval has to be at least 60 seconds longer then the refresh interval specified in `jwksRefreshSeconds`. Defaults to 360 seconds. + jwksIgnoreKeyUse: + type: boolean + description: Flag to ignore the 'use' attribute of `key` declarations in a JWKS endpoint response. Default value is `false`. + jwksMinRefreshPauseSeconds: + type: integer + minimum: 0 + description: "The minimum pause between two consecutive refreshes. When an unknown signing key is encountered the refresh is scheduled immediately, but will always wait for this minimum pause. Defaults to 1 second." + jwksRefreshSeconds: + type: integer + minimum: 1 + description: Configures how often are the JWKS certificates refreshed. The refresh interval has to be at least 60 seconds shorter then the expiry interval specified in `jwksExpirySeconds`. Defaults to 300 seconds. + listenerConfig: + x-kubernetes-preserve-unknown-fields: true + type: object + description: Configuration to be used for a specific listener. All values are prefixed with listener.name.__. + maxSecondsWithoutReauthentication: + type: integer + description: "Maximum number of seconds the authenticated session remains valid without re-authentication. This enables Apache Kafka re-authentication feature, and causes sessions to expire when the access token expires. If the access token expires before max time or if max time is reached, the client has to re-authenticate, otherwise the server will drop the connection. Not set by default - the authenticated session does not expire when the access token expires. This option only applies to SASL_OAUTHBEARER authentication mechanism (when `enableOauthBearer` is `true`)." + readTimeoutSeconds: + type: integer + description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." + sasl: + type: boolean + description: Enable or disable SASL on this listener. + secrets: + type: array + items: type: object properties: key: @@ -139,153 +232,14 @@ spec: type: string description: The name of the Kubernetes Secret containing the secret value. required: - - key - - secretName - description: Link to Kubernetes Secret containing the OAuth client secret which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. - connectTimeoutSeconds: - type: integer - description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." - customClaimCheck: - type: string - description: JsonPath filter query to be applied to the JWT token or to the response of the introspection endpoint for additional token validation. Not set by default. - disableTlsHostnameVerification: - type: boolean - description: Enable or disable TLS hostname verification. Default value is `false`. - enableECDSA: - type: boolean - description: Enable or disable ECDSA support by installing BouncyCastle crypto provider. ECDSA support is always enabled. The BouncyCastle libraries are no longer packaged with Strimzi. Value is ignored. - enableMetrics: - type: boolean - description: Enable or disable OAuth metrics. Default value is `false`. - enableOauthBearer: - type: boolean - description: Enable or disable OAuth authentication over SASL_OAUTHBEARER. Default value is `true`. - enablePlain: - type: boolean - description: Enable or disable OAuth authentication over SASL_PLAIN. There is no re-authentication support when this mechanism is used. Default value is `false`. - failFast: - type: boolean - description: Enable or disable termination of Kafka broker processes due to potentially recoverable runtime errors during startup. Default value is `true`. - fallbackUserNameClaim: - type: string - description: The fallback username claim to be used for the user id if the claim specified by `userNameClaim` is not present. This is useful when `client_credentials` authentication only results in the client id being provided in another claim. It only takes effect if `userNameClaim` is set. - fallbackUserNamePrefix: - type: string - description: "The prefix to use with the value of `fallbackUserNameClaim` to construct the user id. This only takes effect if `fallbackUserNameClaim` is true, and the value is present for the claim. Mapping usernames and client ids into the same user id space is useful in preventing name collisions." - groupsClaim: - type: string - description: JsonPath query used to extract groups for the user during authentication. Extracted groups can be used by a custom authorizer. By default no groups are extracted. - groupsClaimDelimiter: - type: string - description: "A delimiter used to parse groups when they are extracted as a single String value rather than a JSON array. Default value is ',' (comma)." - httpRetries: - type: integer - description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." - httpRetryPauseMs: - type: integer - description: "The pause to take before retrying a failed HTTP request. If not set, the default is to not pause at all but to immediately repeat a request." - includeAcceptHeader: - type: boolean - description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. - introspectionEndpointUri: - type: string - description: URI of the token introspection endpoint which can be used to validate opaque non-JWT tokens. - jwksEndpointUri: - type: string - description: "URI of the JWKS certificate endpoint, which can be used for local JWT validation." - jwksExpirySeconds: - type: integer - minimum: 1 - description: Configures how often are the JWKS certificates considered valid. The expiry interval has to be at least 60 seconds longer then the refresh interval specified in `jwksRefreshSeconds`. Defaults to 360 seconds. - jwksIgnoreKeyUse: - type: boolean - description: Flag to ignore the 'use' attribute of `key` declarations in a JWKS endpoint response. Default value is `false`. - jwksMinRefreshPauseSeconds: - type: integer - minimum: 0 - description: "The minimum pause between two consecutive refreshes. When an unknown signing key is encountered the refresh is scheduled immediately, but will always wait for this minimum pause. Defaults to 1 second." - jwksRefreshSeconds: - type: integer - minimum: 1 - description: Configures how often are the JWKS certificates refreshed. The refresh interval has to be at least 60 seconds shorter then the expiry interval specified in `jwksExpirySeconds`. Defaults to 300 seconds. - listenerConfig: - x-kubernetes-preserve-unknown-fields: true - type: object - description: Configuration to be used for a specific listener. All values are prefixed with listener.name.__. - maxSecondsWithoutReauthentication: - type: integer - description: "Maximum number of seconds the authenticated session remains valid without re-authentication. This enables Apache Kafka re-authentication feature, and causes sessions to expire when the access token expires. If the access token expires before max time or if max time is reached, the client has to re-authenticate, otherwise the server will drop the connection. Not set by default - the authenticated session does not expire when the access token expires. This option only applies to SASL_OAUTHBEARER authentication mechanism (when `enableOauthBearer` is `true`)." - readTimeoutSeconds: - type: integer - description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." - sasl: - type: boolean - description: Enable or disable SASL on this listener. - secrets: - type: array - items: - type: object - properties: - key: - type: string - description: The key under which the secret value is stored in the Kubernetes Secret. - secretName: - type: string - description: The name of the Kubernetes Secret containing the secret value. - required: - - key - - secretName - description: Secrets to be mounted to /opt/kafka/custom-authn-secrets/custom-listener-_-_/__. - tlsTrustedCertificates: - type: array - items: - type: object - properties: - secretName: - type: string - description: The name of the Secret containing the certificate. - certificate: - type: string - description: The name of the file certificate in the Secret. - required: - - secretName - - certificate - description: Trusted certificates for TLS connection to the OAuth server. - tokenEndpointUri: - type: string - description: "URI of the Token Endpoint to use with SASL_PLAIN mechanism when the client authenticates with `clientId` and a `secret`. If set, the client can authenticate over SASL_PLAIN by either setting `username` to `clientId`, and setting `password` to client `secret`, or by setting `username` to account username, and `password` to access token prefixed with `$accessToken:`. If this option is not set, the `password` is always interpreted as an access token (without a prefix), and `username` as the account username (a so called 'no-client-credentials' mode)." - type: - type: string - enum: - - tls - - scram-sha-512 - - oauth - - custom - description: Authentication type. `oauth` type uses SASL OAUTHBEARER Authentication. `scram-sha-512` type uses SASL SCRAM-SHA-512 Authentication. `tls` type uses TLS Client Authentication. `tls` type is supported only on TLS listeners.`custom` type allows for any authentication type to be used. - userInfoEndpointUri: - type: string - description: 'URI of the User Info Endpoint to use as a fallback to obtaining the user id when the Introspection Endpoint does not return information that can be used for the user id. ' - userNameClaim: - type: string - description: "Name of the claim from the JWT authentication token, Introspection Endpoint response or User Info Endpoint response which will be used to extract the user id. Defaults to `sub`." - validIssuerUri: - type: string - description: URI of the token issuer used for authentication. - validTokenType: - type: string - description: "Valid value for the `token_type` attribute returned by the Introspection Endpoint. No default value, and not checked by default." - required: - - type - description: Authentication configuration for this listener. - configuration: - type: object - properties: - brokerCertChainAndKey: + - key + - secretName + description: Secrets to be mounted to /opt/kafka/custom-authn-secrets/custom-listener-_-_/__. + tlsTrustedCertificates: + type: array + items: type: object properties: - key: - type: string - description: The name of the private key in the Secret. secretName: type: string description: The name of the Secret containing the certificate. @@ -293,38 +247,122 @@ spec: type: string description: The name of the file certificate in the Secret. required: - - key - - secretName - - certificate - description: Reference to the `Secret` which holds the certificate and private key pair which will be used for this listener. The certificate can optionally contain the whole chain. This field can be used only with listeners with enabled TLS encryption. - class: - type: string - description: "Configures a specific class for `Ingress` and `LoadBalancer` that defines which controller will be used. This field can only be used with `ingress` and `loadbalancer` type listeners. If not specified, the default controller is used. For an `ingress` listener, set the `ingressClassName` property in the `Ingress` resources. For a `loadbalancer` listener, set the `loadBalancerClass` property in the `Service` resources." - externalTrafficPolicy: + - secretName + - certificate + description: Trusted certificates for TLS connection to the OAuth server. + tokenEndpointUri: + type: string + description: "URI of the Token Endpoint to use with SASL_PLAIN mechanism when the client authenticates with `clientId` and a `secret`. If set, the client can authenticate over SASL_PLAIN by either setting `username` to `clientId`, and setting `password` to client `secret`, or by setting `username` to account username, and `password` to access token prefixed with `$accessToken:`. If this option is not set, the `password` is always interpreted as an access token (without a prefix), and `username` as the account username (a so called 'no-client-credentials' mode)." + type: + type: string + enum: + - tls + - scram-sha-512 + - oauth + - custom + description: Authentication type. `oauth` type uses SASL OAUTHBEARER Authentication. `scram-sha-512` type uses SASL SCRAM-SHA-512 Authentication. `tls` type uses TLS Client Authentication. `tls` type is supported only on TLS listeners.`custom` type allows for any authentication type to be used. + userInfoEndpointUri: + type: string + description: 'URI of the User Info Endpoint to use as a fallback to obtaining the user id when the Introspection Endpoint does not return information that can be used for the user id. ' + userNameClaim: + type: string + description: "Name of the claim from the JWT authentication token, Introspection Endpoint response or User Info Endpoint response which will be used to extract the user id. Defaults to `sub`." + validIssuerUri: + type: string + description: URI of the token issuer used for authentication. + validTokenType: + type: string + description: "Valid value for the `token_type` attribute returned by the Introspection Endpoint. No default value, and not checked by default." + required: + - type + description: Authentication configuration for this listener. + configuration: + type: object + properties: + brokerCertChainAndKey: + type: object + properties: + key: + type: string + description: The name of the private key in the Secret. + secretName: + type: string + description: The name of the Secret containing the certificate. + certificate: + type: string + description: The name of the file certificate in the Secret. + required: + - key + - secretName + - certificate + description: Reference to the `Secret` which holds the certificate and private key pair which will be used for this listener. The certificate can optionally contain the whole chain. This field can be used only with listeners with enabled TLS encryption. + class: + type: string + description: "Configures a specific class for `Ingress` and `LoadBalancer` that defines which controller will be used. This field can only be used with `ingress` and `loadbalancer` type listeners. If not specified, the default controller is used. For an `ingress` listener, set the `ingressClassName` property in the `Ingress` resources. For a `loadbalancer` listener, set the `loadBalancerClass` property in the `Service` resources." + externalTrafficPolicy: + type: string + enum: + - Local + - Cluster + description: "Specifies whether the service routes external traffic to node-local or cluster-wide endpoints. `Cluster` may cause a second hop to another node and obscures the client source IP. `Local` avoids a second hop for LoadBalancer and Nodeport type services and preserves the client source IP (when supported by the infrastructure). If unspecified, Kubernetes will use `Cluster` as the default.This field can be used only with `loadbalancer` or `nodeport` type listener." + loadBalancerSourceRanges: + type: array + items: type: string - enum: - - Local - - Cluster - description: "Specifies whether the service routes external traffic to node-local or cluster-wide endpoints. `Cluster` may cause a second hop to another node and obscures the client source IP. `Local` avoids a second hop for LoadBalancer and Nodeport type services and preserves the client source IP (when supported by the infrastructure). If unspecified, Kubernetes will use `Cluster` as the default.This field can be used only with `loadbalancer` or `nodeport` type listener." - loadBalancerSourceRanges: - type: array - items: + description: "A list of CIDR ranges (for example `10.0.0.0/8` or `130.211.204.1/32`) from which clients can connect to load balancer type listeners. If supported by the platform, traffic through the loadbalancer is restricted to the specified CIDR ranges. This field is applicable only for loadbalancer type services and is ignored if the cloud provider does not support the feature. This field can be used only with `loadbalancer` type listener." + bootstrap: + type: object + properties: + alternativeNames: + type: array + items: + type: string + description: Additional alternative names for the bootstrap service. The alternative names will be added to the list of subject alternative names of the TLS certificates. + host: type: string - description: "A list of CIDR ranges (for example `10.0.0.0/8` or `130.211.204.1/32`) from which clients can connect to load balancer type listeners. If supported by the platform, traffic through the loadbalancer is restricted to the specified CIDR ranges. This field is applicable only for loadbalancer type services and is ignored if the cloud provider does not support the feature. This field can be used only with `loadbalancer` type listener." - bootstrap: + description: The bootstrap host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. + nodePort: + type: integer + description: Node port for the bootstrap service. This field can be used only with `nodeport` type listener. + loadBalancerIP: + type: string + description: The loadbalancer is requested with the IP address specified in this field. This feature depends on whether the underlying cloud provider supports specifying the `loadBalancerIP` when a load balancer is created. This field is ignored if the cloud provider does not support the feature.This field can be used only with `loadbalancer` type listener. + annotations: + additionalProperties: + type: string + type: object + description: "Annotations that will be added to the `Ingress`, `Route`, or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." + labels: + additionalProperties: + type: string + type: object + description: "Labels that will be added to the `Ingress`, `Route`, or `Service` resource. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." + externalIPs: + type: array + items: + type: string + description: External IPs associated to the nodeport service. These IPs are used by clients external to the Kubernetes cluster to access the Kafka brokers. This field is helpful when `nodeport` without `externalIP` is not sufficient. For example on bare-metal Kubernetes clusters that do not support Loadbalancer service types. This field can only be used with `nodeport` type listener. + description: Bootstrap configuration. + brokers: + type: array + items: type: object properties: - alternativeNames: - type: array - items: - type: string - description: Additional alternative names for the bootstrap service. The alternative names will be added to the list of subject alternative names of the TLS certificates. + broker: + type: integer + description: ID of the kafka broker (broker identifier). Broker IDs start from 0 and correspond to the number of broker replicas. + advertisedHost: + type: string + description: The host name used in the brokers' `advertised.listeners`. + advertisedPort: + type: integer + description: The port number used in the brokers' `advertised.listeners`. host: type: string - description: The bootstrap host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. + description: The broker host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. nodePort: type: integer - description: Node port for the bootstrap service. This field can be used only with `nodeport` type listener. + description: Node port for the per-broker service. This field can be used only with `nodeport` type listener. loadBalancerIP: type: string description: The loadbalancer is requested with the IP address specified in this field. This feature depends on whether the underlying cloud provider supports specifying the `loadBalancerIP` when a load balancer is created. This field is ignored if the cloud provider does not support the feature.This field can be used only with `loadbalancer` type listener. @@ -332,7 +370,7 @@ spec: additionalProperties: type: string type: object - description: "Annotations that will be added to the `Ingress`, `Route`, or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." + description: "Annotations that will be added to the `Ingress` or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, or `ingress` type listeners." labels: additionalProperties: type: string @@ -343,6501 +381,6996 @@ spec: items: type: string description: External IPs associated to the nodeport service. These IPs are used by clients external to the Kubernetes cluster to access the Kafka brokers. This field is helpful when `nodeport` without `externalIP` is not sufficient. For example on bare-metal Kubernetes clusters that do not support Loadbalancer service types. This field can only be used with `nodeport` type listener. - description: Bootstrap configuration. - brokers: - type: array - items: - type: object - properties: - broker: - type: integer - description: ID of the kafka broker (broker identifier). Broker IDs start from 0 and correspond to the number of broker replicas. - advertisedHost: - type: string - description: The host name used in the brokers' `advertised.listeners`. - advertisedPort: - type: integer - description: The port number used in the brokers' `advertised.listeners`. - host: - type: string - description: The broker host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. - nodePort: - type: integer - description: Node port for the per-broker service. This field can be used only with `nodeport` type listener. - loadBalancerIP: - type: string - description: The loadbalancer is requested with the IP address specified in this field. This feature depends on whether the underlying cloud provider supports specifying the `loadBalancerIP` when a load balancer is created. This field is ignored if the cloud provider does not support the feature.This field can be used only with `loadbalancer` type listener. - annotations: - additionalProperties: - type: string - type: object - description: "Annotations that will be added to the `Ingress` or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, or `ingress` type listeners." - labels: - additionalProperties: - type: string - type: object - description: "Labels that will be added to the `Ingress`, `Route`, or `Service` resource. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." - externalIPs: - type: array - items: - type: string - description: External IPs associated to the nodeport service. These IPs are used by clients external to the Kubernetes cluster to access the Kafka brokers. This field is helpful when `nodeport` without `externalIP` is not sufficient. For example on bare-metal Kubernetes clusters that do not support Loadbalancer service types. This field can only be used with `nodeport` type listener. - required: - - broker - description: Per-broker configurations. - ipFamilyPolicy: + required: + - broker + description: Per-broker configurations. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: type: string enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - createBootstrapService: - type: boolean - description: Whether to create the bootstrap service or not. The bootstrap service is created by default (if not specified differently). This field can be used with the `loadBalancer` type listener. - finalizers: - type: array - items: - type: string - description: "A list of finalizers which will be configured for the `LoadBalancer` type Services created for this listener. If supported by the platform, the finalizer `service.kubernetes.io/load-balancer-cleanup` to make sure that the external load balancer is deleted together with the service.For more information, see https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#garbage-collecting-load-balancers. This field can be used only with `loadbalancer` type listeners." - useServiceDnsDomain: - type: boolean - description: "Configures whether the Kubernetes service DNS domain should be used or not. If set to `true`, the generated addresses will contain the service DNS domain suffix (by default `.cluster.local`, can be configured using environment variable `KUBERNETES_SERVICE_DNS_DOMAIN`). Defaults to `false`.This field can be used only with `internal` and `cluster-ip` type listeners." - maxConnections: - type: integer - description: The maximum number of connections we allow for this listener in the broker at any time. New connections are blocked if the limit is reached. - maxConnectionCreationRate: - type: integer - description: The maximum connection creation rate we allow in this listener at any time. New connections will be throttled if the limit is reached. - preferredNodePortAddressType: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + createBootstrapService: + type: boolean + description: Whether to create the bootstrap service or not. The bootstrap service is created by default (if not specified differently). This field can be used with the `loadBalancer` type listener. + finalizers: + type: array + items: type: string - enum: - - ExternalIP - - ExternalDNS - - InternalIP - - InternalDNS - - Hostname - description: |- - Defines which address type should be used as the node address. Available types are: `ExternalDNS`, `ExternalIP`, `InternalDNS`, `InternalIP` and `Hostname`. By default, the addresses will be used in the following order (the first one found will be used): + description: "A list of finalizers which will be configured for the `LoadBalancer` type Services created for this listener. If supported by the platform, the finalizer `service.kubernetes.io/load-balancer-cleanup` to make sure that the external load balancer is deleted together with the service.For more information, see https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#garbage-collecting-load-balancers. This field can be used only with `loadbalancer` type listeners." + useServiceDnsDomain: + type: boolean + description: "Configures whether the Kubernetes service DNS domain should be used or not. If set to `true`, the generated addresses will contain the service DNS domain suffix (by default `.cluster.local`, can be configured using environment variable `KUBERNETES_SERVICE_DNS_DOMAIN`). Defaults to `false`.This field can be used only with `internal` and `cluster-ip` type listeners." + maxConnections: + type: integer + description: The maximum number of connections we allow for this listener in the broker at any time. New connections are blocked if the limit is reached. + maxConnectionCreationRate: + type: integer + description: The maximum connection creation rate we allow in this listener at any time. New connections will be throttled if the limit is reached. + preferredNodePortAddressType: + type: string + enum: + - ExternalIP + - ExternalDNS + - InternalIP + - InternalDNS + - Hostname + description: |- + Defines which address type should be used as the node address. Available types are: `ExternalDNS`, `ExternalIP`, `InternalDNS`, `InternalIP` and `Hostname`. By default, the addresses will be used in the following order (the first one found will be used): - * `ExternalDNS` - * `ExternalIP` - * `InternalDNS` - * `InternalIP` - * `Hostname` + * `ExternalDNS` + * `ExternalIP` + * `InternalDNS` + * `InternalIP` + * `Hostname` - This field is used to select the preferred address type, which is checked first. If no address is found for this address type, the other types are checked in the default order. This field can only be used with `nodeport` type listener. - description: Additional listener configuration. - networkPolicyPeers: - type: array - items: - type: object - properties: - ipBlock: - type: object - properties: - cidr: + This field is used to select the preferred address type, which is checked first. If no address is found for this address type, the other types are checked in the default order. This field can only be used with `nodeport` type listener. + description: Additional listener configuration. + networkPolicyPeers: + type: array + items: + type: object + properties: + ipBlock: + type: object + properties: + cidr: + type: string + except: + type: array + items: type: string - except: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - podSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string + matchLabels: + additionalProperties: + type: string + type: object + podSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - description: "List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list." - required: - - name - - port + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + description: "List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list." + required: + - name + - port + - type + - tls + description: Configures listeners of Kafka brokers. + config: + x-kubernetes-preserve-unknown-fields: true + type: object + description: "Kafka broker config properties with the following prefixes cannot be set: listeners, advertised., broker., listener., host.name, port, inter.broker.listener.name, sasl., ssl., security., password., log.dir, zookeeper.connect, zookeeper.set.acl, zookeeper.ssl, zookeeper.clientCnxnSocket, authorizer., super.user, cruise.control.metrics.topic, cruise.control.metrics.reporter.bootstrap.servers, node.id, process.roles, controller., metadata.log.dir, zookeeper.metadata.migration.enable (with the exception of: zookeeper.connection.timeout.ms, sasl.server.max.receive.size, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, ssl.secure.random.implementation, cruise.control.metrics.topic.num.partitions, cruise.control.metrics.topic.replication.factor, cruise.control.metrics.topic.retention.ms, cruise.control.metrics.topic.auto.create.retries, cruise.control.metrics.topic.auto.create.timeout.ms, cruise.control.metrics.topic.min.insync.replicas, controller.quorum.election.backoff.max.ms, controller.quorum.election.timeout.ms, controller.quorum.fetch.timeout.ms)." + storage: + type: object + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation. + deleteClaim: + type: boolean + description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. + id: + type: integer + minimum: 0 + description: Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'. + kraftMetadata: + type: string + enum: + - shared + description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." + overrides: + type: array + items: + type: object + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation for this broker. + broker: + type: integer + description: Id of the kafka broker (broker identifier). + description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. + selector: + additionalProperties: + type: string + type: object + description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. + size: + type: string + description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." + sizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." + type: + type: string + enum: + - ephemeral + - persistent-claim + - jbod + description: "Storage type, must be either 'ephemeral', 'persistent-claim', or 'jbod'." + volumes: + type: array + items: + type: object + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation. + deleteClaim: + type: boolean + description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. + id: + type: integer + minimum: 0 + description: Storage identification number. Mandatory for storage volumes defined with a `jbod` storage type configuration. + kraftMetadata: + type: string + enum: + - shared + description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." + overrides: + type: array + items: + type: object + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation for this broker. + broker: + type: integer + description: Id of the kafka broker (broker identifier). + description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. + selector: + additionalProperties: + type: string + type: object + description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. + size: + type: string + description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." + sizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." + type: + type: string + enum: + - ephemeral + - persistent-claim + description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." + required: - type - - tls - description: Configures listeners of Kafka brokers. - config: - x-kubernetes-preserve-unknown-fields: true - type: object - description: "Kafka broker config properties with the following prefixes cannot be set: listeners, advertised., broker., listener., host.name, port, inter.broker.listener.name, sasl., ssl., security., password., log.dir, zookeeper.connect, zookeeper.set.acl, zookeeper.ssl, zookeeper.clientCnxnSocket, authorizer., super.user, cruise.control.metrics.topic, cruise.control.metrics.reporter.bootstrap.servers, node.id, process.roles, controller., metadata.log.dir, zookeeper.metadata.migration.enable (with the exception of: zookeeper.connection.timeout.ms, sasl.server.max.receive.size, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, ssl.secure.random.implementation, cruise.control.metrics.topic.num.partitions, cruise.control.metrics.topic.replication.factor, cruise.control.metrics.topic.retention.ms, cruise.control.metrics.topic.auto.create.retries, cruise.control.metrics.topic.auto.create.timeout.ms, cruise.control.metrics.topic.min.insync.replicas, controller.quorum.election.backoff.max.ms, controller.quorum.election.timeout.ms, controller.quorum.fetch.timeout.ms)." - storage: - type: object - properties: - class: + description: List of volumes as Storage objects representing the JBOD disks array. + required: + - type + description: Storage configuration (disk). Cannot be updated. This property is required when node pools are not used. + authorization: + type: object + properties: + allowOnError: + type: boolean + description: "Defines whether a Kafka client should be allowed or denied by default when the authorizer fails to query the Open Policy Agent, for example, when it is temporarily unavailable). Defaults to `false` - all actions will be denied." + authorizerClass: + type: string + description: "Authorization implementation class, which must be available in classpath." + clientId: + type: string + description: OAuth Client ID which the Kafka client can use to authenticate against the OAuth server and use the token endpoint URI. + connectTimeoutSeconds: + type: integer + minimum: 1 + description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." + delegateToKafkaAcls: + type: boolean + description: Whether authorization decision should be delegated to the 'Simple' authorizer if DENIED by Keycloak Authorization Services policies. Default value is `false`. + disableTlsHostnameVerification: + type: boolean + description: Enable or disable TLS hostname verification. Default value is `false`. + enableMetrics: + type: boolean + description: Enable or disable OAuth metrics. The default value is `false`. + expireAfterMs: + type: integer + description: The expiration of the records kept in the local cache to avoid querying the Open Policy Agent for every request. Defines how often the cached authorization decisions are reloaded from the Open Policy Agent server. In milliseconds. Defaults to `3600000`. + grantsAlwaysLatest: + type: boolean + description: "Controls whether the latest grants are fetched for a new session. When enabled, grants are retrieved from Keycloak and cached for the user. The default value is `false`." + grantsGcPeriodSeconds: + type: integer + minimum: 1 + description: "The time, in seconds, between consecutive runs of a job that cleans stale grants from the cache. The default value is 300." + grantsMaxIdleTimeSeconds: + type: integer + minimum: 1 + description: "The time, in seconds, after which an idle grant can be evicted from the cache. The default value is 300." + grantsRefreshPeriodSeconds: + type: integer + minimum: 0 + description: The time between two consecutive grants refresh runs in seconds. The default value is 60. + grantsRefreshPoolSize: + type: integer + minimum: 1 + description: "The number of threads to use to refresh grants for active sessions. The more threads, the more parallelism, so the sooner the job completes. However, using more threads places a heavier load on the authorization server. The default value is 5." + httpRetries: + type: integer + minimum: 0 + description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." + includeAcceptHeader: + type: boolean + description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. + initialCacheCapacity: + type: integer + description: Initial capacity of the local cache used by the authorizer to avoid querying the Open Policy Agent for every request Defaults to `5000`. + maximumCacheSize: + type: integer + description: Maximum capacity of the local cache used by the authorizer to avoid querying the Open Policy Agent for every request. Defaults to `50000`. + readTimeoutSeconds: + type: integer + minimum: 1 + description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." + superUsers: + type: array + items: type: string - description: The storage class to use for dynamic volume allocation. - deleteClaim: - type: boolean - description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. - id: - type: integer - minimum: 0 - description: Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'. - kraftMetadata: + description: "List of super users, which are user principals with unlimited access rights." + supportsAdminApi: + type: boolean + description: Indicates whether the custom authorizer supports the APIs for managing ACLs using the Kafka Admin API. Defaults to `false`. + tlsTrustedCertificates: + type: array + items: + type: object + properties: + secretName: + type: string + description: The name of the Secret containing the certificate. + certificate: + type: string + description: The name of the file certificate in the Secret. + required: + - secretName + - certificate + description: Trusted certificates for TLS connection to the OAuth server. + tokenEndpointUri: + type: string + description: Authorization server token endpoint URI. + type: + type: string + enum: + - simple + - opa + - keycloak + - custom + description: "Authorization type. Currently, the supported types are `simple`, `keycloak`, `opa` and `custom`. `simple` authorization type uses Kafka's built-in authorizer for authorization. `keycloak` authorization type uses Keycloak Authorization Services for authorization. `opa` authorization type uses Open Policy Agent based authorization.`custom` authorization type uses user-provided implementation for authorization." + url: + type: string + example: http://opa:8181/v1/data/kafka/authz/allow + description: The URL used to connect to the Open Policy Agent server. The URL has to include the policy which will be queried by the authorizer. This option is required. + required: + - type + description: Authorization configuration for Kafka brokers. + rack: + type: object + properties: + topologyKey: + type: string + example: topology.kubernetes.io/zone + description: "A key that matches labels assigned to the Kubernetes cluster nodes. The value of the label is used to set a broker's `broker.rack` config, and the `client.rack` config for Kafka Connect or MirrorMaker 2." + required: + - topologyKey + description: Configuration of the `broker.rack` broker config. + brokerRackInitImage: + type: string + description: The image of the init container used for initializing the `broker.rack`. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: type: string - enum: - - shared - description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." - overrides: - type: array - items: + type: object + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: + type: object + properties: + name: + type: string + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for pods. + jmxOptions: + type: object + properties: + authentication: + type: object + properties: + type: + type: string + enum: + - password + description: Authentication type. Currently the only supported types are `password`.`password` type creates a username and protected port with no TLS. + required: + - type + description: Authentication configuration for connecting to the JMX port. + description: JMX Options for Kafka brokers. + resources: + type: object + properties: + claims: + type: array + items: + type: object + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + metricsConfig: + type: object + properties: + type: + type: string + enum: + - jmxPrometheusExporter + description: Metrics type. Only 'jmxPrometheusExporter' supported currently. + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: - class: + key: type: string - description: The storage class to use for dynamic volume allocation for this broker. - broker: - type: integer - description: Id of the kafka broker (broker identifier). - description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. - selector: - additionalProperties: - type: string - type: object - description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. - size: - type: string - description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." - sizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." - type: + name: + type: string + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' + required: + - type + - valueFrom + description: Metrics configuration. + logging: + type: object + properties: + loggers: + additionalProperties: type: string - enum: - - ephemeral - - persistent-claim - - jbod - description: "Storage type, must be either 'ephemeral', 'persistent-claim', or 'jbod'." - volumes: - type: array - items: + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: - class: + key: + type: string + name: type: string - description: The storage class to use for dynamic volume allocation. - deleteClaim: + optional: type: boolean - description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. - id: + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration for Kafka. + template: + type: object + properties: + statefulset: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + podManagementPolicy: + type: string + enum: + - OrderedReady + - Parallel + description: PodManagementPolicy which will be used for this StatefulSet. Valid values are `Parallel` and `OrderedReady`. Defaults to `Parallel`. + description: Template for Kafka `StatefulSet`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: + type: object + properties: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: type: integer - minimum: 0 - description: Storage identification number. Mandatory for storage volumes defined with a `jbod` storage type configuration. - kraftMetadata: + fsGroupChangePolicy: type: string - enum: - - shared - description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." - overrides: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + supplementalGroups: + type: array + items: + type: integer + sysctls: type: array items: type: object properties: - class: + name: type: string - description: The storage class to use for dynamic volume allocation for this broker. - broker: - type: integer - description: Id of the kafka broker (broker identifier). - description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. - selector: - additionalProperties: - type: string + value: + type: string + windowsOptions: type: object - description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. - size: - type: string - description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." - sizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." - type: - type: string - enum: - - ephemeral - - persistent-claim - description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." - required: - - type - description: List of volumes as Storage objects representing the JBOD disks array. - required: - - type - description: Storage configuration (disk). Cannot be updated. This property is required when node pools are not used. - authorization: - type: object - properties: - allowOnError: - type: boolean - description: "Defines whether a Kafka client should be allowed or denied by default when the authorizer fails to query the Open Policy Agent, for example, when it is temporarily unavailable). Defaults to `false` - all actions will be denied." - authorizerClass: - type: string - description: "Authorization implementation class, which must be available in classpath." - clientId: - type: string - description: OAuth Client ID which the Kafka client can use to authenticate against the OAuth server and use the token endpoint URI. - connectTimeoutSeconds: - type: integer - minimum: 1 - description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." - delegateToKafkaAcls: - type: boolean - description: Whether authorization decision should be delegated to the 'Simple' authorizer if DENIED by Keycloak Authorization Services policies. Default value is `false`. - disableTlsHostnameVerification: - type: boolean - description: Enable or disable TLS hostname verification. Default value is `false`. - enableMetrics: - type: boolean - description: Enable or disable OAuth metrics. The default value is `false`. - expireAfterMs: - type: integer - description: The expiration of the records kept in the local cache to avoid querying the Open Policy Agent for every request. Defines how often the cached authorization decisions are reloaded from the Open Policy Agent server. In milliseconds. Defaults to `3600000`. - grantsAlwaysLatest: - type: boolean - description: "Controls whether the latest grants are fetched for a new session. When enabled, grants are retrieved from Keycloak and cached for the user. The default value is `false`." - grantsGcPeriodSeconds: - type: integer - minimum: 1 - description: "The time, in seconds, between consecutive runs of a job that cleans stale grants from the cache. The default value is 300." - grantsMaxIdleTimeSeconds: - type: integer - minimum: 1 - description: "The time, in seconds, after which an idle grant can be evicted from the cache. The default value is 300." - grantsRefreshPeriodSeconds: - type: integer - minimum: 0 - description: The time between two consecutive grants refresh runs in seconds. The default value is 60. - grantsRefreshPoolSize: - type: integer - minimum: 1 - description: "The number of threads to use to refresh grants for active sessions. The more threads, the more parallelism, so the sooner the job completes. However, using more threads places a heavier load on the authorization server. The default value is 5." - httpRetries: - type: integer - minimum: 0 - description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." - includeAcceptHeader: - type: boolean - description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. - initialCacheCapacity: - type: integer - description: Initial capacity of the local cache used by the authorizer to avoid querying the Open Policy Agent for every request Defaults to `5000`. - maximumCacheSize: - type: integer - description: Maximum capacity of the local cache used by the authorizer to avoid querying the Open Policy Agent for every request. Defaults to `50000`. - readTimeoutSeconds: - type: integer - minimum: 1 - description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." - superUsers: - type: array - items: - type: string - description: "List of super users, which are user principals with unlimited access rights." - supportsAdminApi: - type: boolean - description: Indicates whether the custom authorizer supports the APIs for managing ACLs using the Kafka Admin API. Defaults to `false`. - tlsTrustedCertificates: - type: array - items: - type: object - properties: - secretName: - type: string - description: The name of the Secret containing the certificate. - certificate: - type: string - description: The name of the file certificate in the Secret. - required: - - secretName - - certificate - description: Trusted certificates for TLS connection to the OAuth server. - tokenEndpointUri: - type: string - description: Authorization server token endpoint URI. - type: - type: string - enum: - - simple - - opa - - keycloak - - custom - description: "Authorization type. Currently, the supported types are `simple`, `keycloak`, `opa` and `custom`. `simple` authorization type uses Kafka's built-in authorizer for authorization. `keycloak` authorization type uses Keycloak Authorization Services for authorization. `opa` authorization type uses Open Policy Agent based authorization.`custom` authorization type uses user-provided implementation for authorization." - url: - type: string - example: http://opa:8181/v1/data/kafka/authz/allow - description: The URL used to connect to the Open Policy Agent server. The URL has to include the policy which will be queried by the authorizer. This option is required. - required: - - type - description: Authorization configuration for Kafka brokers. - rack: - type: object - properties: - topologyKey: - type: string - example: topology.kubernetes.io/zone - description: "A key that matches labels assigned to the Kubernetes cluster nodes. The value of the label is used to set a broker's `broker.rack` config, and the `client.rack` config for Kafka Connect or MirrorMaker 2." - required: - - topologyKey - description: Configuration of the `broker.rack` broker config. - brokerRackInitImage: - type: string - description: The image of the init container used for initializing the `broker.rack`. - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: - type: string - type: object - description: A map of -XX options to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: - type: object - properties: - name: - type: string - description: The system property name. - value: - type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for pods. - jmxOptions: - type: object - properties: - authentication: - type: object - properties: - type: - type: string - enum: - - password - description: Authentication type. Currently the only supported types are `password`.`password` type creates a username and protected port with no TLS. - required: - - type - description: Authentication configuration for connecting to the JMX port. - description: JMX Options for Kafka brokers. - resources: - type: object - properties: - claims: - type: array - items: - type: object - properties: - name: - type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - metricsConfig: - type: object - properties: - type: - type: string - enum: - - jmxPrometheusExporter - description: Metrics type. Only 'jmxPrometheusExporter' supported currently. - valueFrom: - type: object - properties: - configMapKeyRef: - type: object - properties: - key: - type: string - name: - type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' - required: - - type - - valueFrom - description: Metrics configuration. - logging: - type: object - properties: - loggers: - additionalProperties: - type: string - type: object - description: A Map from logger name to logger level. - type: - type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: - type: object - properties: - configMapKeyRef: - type: object - properties: - key: - type: string - name: - type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration for Kafka. - template: - type: object - properties: - statefulset: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + properties: + gmsaCredentialSpec: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - podManagementPolicy: - type: string - enum: - - OrderedReady - - Parallel - description: PodManagementPolicy which will be used for this StatefulSet. Valid values are `Parallel` and `OrderedReady`. Defaults to `Parallel`. - description: Template for Kafka `StatefulSet`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + gmsaCredentialSpecName: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + hostProcess: + type: boolean + runAsUserName: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: type: object properties: - name: - type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: - type: array - items: - type: object - properties: - name: - type: string - value: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: type: object properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: object + properties: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchFields: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: - type: string - podAntiAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + podAntiAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - topologySpreadConstraints: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchLabels: - additionalProperties: + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: - type: object - properties: - hostnames: - type: array - items: - type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - description: Template for Kafka `Pods`. - bootstrapService: - type: object - properties: - metadata: + description: The pod's affinity rules. + tolerations: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for Kafka bootstrap `Service`. - brokersService: - type: object - properties: - metadata: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string + labelSelector: type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for Kafka broker `Service`. - externalBootstrapService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka external bootstrap `Service`. - perPodService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka per-pod `Services` used for access from outside of Kubernetes. - externalBootstrapRoute: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka external bootstrap `Route`. - perPodRoute: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka per-pod `Routes` used for access from outside of OpenShift. - externalBootstrapIngress: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka external bootstrap `Ingress`. - perPodIngress: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka per-pod `Ingress` used for access from outside of Kubernetes. - persistentVolumeClaim: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for all Kafka `PersistentVolumeClaims`. - podDisruptionBudget: - type: object - properties: - metadata: + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. - maxUnavailable: - type: integer - minimum: 0 - description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." - description: Template for Kafka `PodDisruptionBudget`. - kafkaContainer: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: + hostnames: + type: array + items: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: type: object properties: - add: - type: array - items: - type: string - drop: + defaultMode: + type: integer + items: type: array items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: type: boolean - runAsUserName: + secretName: type: string - description: Security context for the container. - description: Template for the Kafka broker container. - initContainer: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: - type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + description: Secret to use populate the volume. + configMap: type: object properties: - add: - type: array - items: - type: string - drop: + defaultMode: + type: integer + items: type: array items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: type: string - seccompProfile: + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: type: object properties: - localhostProfile: - type: string - type: + medium: type: string - windowsOptions: + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: type: object properties: - gmsaCredentialSpec: + driver: type: string - gmsaCredentialSpecName: + fsType: type: string - hostProcess: + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: type: boolean - runAsUserName: - type: string - description: Security context for the container. - description: Template for the Kafka init container. - clusterCaCert: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Secret with Kafka Cluster certificate public key. - serviceAccount: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Kafka service account. - jmxSecret: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Secret of the Kafka Cluster JMX authentication. - clusterRoleBinding: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Kafka ClusterRoleBinding. - podSet: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka `StrimziPodSet` resource. - description: Template for Kafka cluster resources. The template allows users to specify how the Kubernetes resources are generated. - tieredStorage: - type: object - properties: - remoteStorageManager: - type: object - properties: - className: + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for Kafka `Pods`. + bootstrapService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: type: string - description: The class name for the `RemoteStorageManager` implementation. - classPath: + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for Kafka bootstrap `Service`. + brokersService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: type: string - description: The class path for the `RemoteStorageManager` implementation. - config: - additionalProperties: + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for Kafka broker `Service`. + externalBootstrapService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka external bootstrap `Service`. + perPodService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka per-pod `Services` used for access from outside of Kubernetes. + externalBootstrapRoute: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka external bootstrap `Route`. + perPodRoute: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka per-pod `Routes` used for access from outside of OpenShift. + externalBootstrapIngress: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka external bootstrap `Ingress`. + perPodIngress: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka per-pod `Ingress` used for access from outside of Kubernetes. + persistentVolumeClaim: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for all Kafka `PersistentVolumeClaims`. + podDisruptionBudget: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. + maxUnavailable: + type: integer + minimum: 0 + description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." + description: Template for Kafka `PodDisruptionBudget`. + kafkaContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the Kafka broker container. + initContainer: + type: object + properties: + env: + type: array + items: type: object - description: "The additional configuration map for the `RemoteStorageManager` implementation. Keys will be automatically prefixed with `rsm.config.`, and added to Kafka broker configuration." - description: Configuration for the Remote Storage Manager. - type: - type: string - enum: - - custom - description: "Storage type, only 'custom' is supported at the moment." - required: - - type - description: Configure the tiered storage feature for Kafka brokers. - required: - - listeners - description: Configuration of the Kafka cluster. - zookeeper: - type: object - properties: - replicas: - type: integer - minimum: 1 - description: The number of pods in the cluster. - image: - type: string - description: "The container image used for ZooKeeper pods. If no image name is explicitly specified, it is determined based on the Kafka version set in `spec.kafka.version`. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." - storage: - type: object - properties: - class: - type: string - description: The storage class to use for dynamic volume allocation. - deleteClaim: - type: boolean - description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. - id: - type: integer - minimum: 0 - description: Storage identification number. Mandatory for storage volumes defined with a `jbod` storage type configuration. - kraftMetadata: - type: string - enum: - - shared - description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." - overrides: - type: array - items: + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: type: object properties: - class: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: type: string - description: The storage class to use for dynamic volume allocation for this broker. - broker: + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: type: integer - description: Id of the kafka broker (broker identifier). - description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. - selector: - additionalProperties: + seLinuxOptions: + type: object + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the Kafka init container. + clusterCaCert: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Secret with Kafka Cluster certificate public key. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Kafka service account. + jmxSecret: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Secret of the Kafka Cluster JMX authentication. + clusterRoleBinding: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Kafka ClusterRoleBinding. + podSet: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka `StrimziPodSet` resource. + description: Template for Kafka cluster resources. The template allows users to specify how the Kubernetes resources are generated. + tieredStorage: + type: object + properties: + remoteStorageManager: + type: object + properties: + className: type: string + description: The class name for the `RemoteStorageManager` implementation. + classPath: + type: string + description: The class path for the `RemoteStorageManager` implementation. + config: + additionalProperties: + type: string + type: object + description: "The additional configuration map for the `RemoteStorageManager` implementation. Keys will be automatically prefixed with `rsm.config.`, and added to Kafka broker configuration." + description: Configuration for the Remote Storage Manager. + type: + type: string + enum: + - custom + description: "Storage type, only 'custom' is supported at the moment." + required: + - type + description: Configure the tiered storage feature for Kafka brokers. + required: + - listeners + description: Configuration of the Kafka cluster. + zookeeper: + type: object + properties: + replicas: + type: integer + minimum: 1 + description: The number of pods in the cluster. + image: + type: string + description: "The container image used for ZooKeeper pods. If no image name is explicitly specified, it is determined based on the Kafka version set in `spec.kafka.version`. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." + storage: + type: object + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation. + deleteClaim: + type: boolean + description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. + id: + type: integer + minimum: 0 + description: Storage identification number. Mandatory for storage volumes defined with a `jbod` storage type configuration. + kraftMetadata: + type: string + enum: + - shared + description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." + overrides: + type: array + items: type: object - description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. - size: - type: string - description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." - sizeLimit: + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation for this broker. + broker: + type: integer + description: Id of the kafka broker (broker identifier). + description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. + selector: + additionalProperties: type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." - type: + type: object + description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. + size: + type: string + description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." + sizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." + type: + type: string + enum: + - ephemeral + - persistent-claim + description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." + required: + - type + description: Storage configuration (disk). Cannot be updated. + config: + x-kubernetes-preserve-unknown-fields: true + type: object + description: "The ZooKeeper broker config. Properties with the following prefixes cannot be set: server., dataDir, dataLogDir, clientPort, authProvider, quorum.auth, requireClientAuthScheme, snapshot.trust.empty, standaloneEnabled, reconfigEnabled, 4lw.commands.whitelist, secureClientPort, ssl., serverCnxnFactory, sslQuorum (with the exception of: ssl.protocol, ssl.quorum.protocol, ssl.enabledProtocols, ssl.quorum.enabledProtocols, ssl.ciphersuites, ssl.quorum.ciphersuites, ssl.hostnameVerification, ssl.quorum.hostnameVerification)." + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: type: string - enum: - - ephemeral - - persistent-claim - description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." - required: - - type - description: Storage configuration (disk). Cannot be updated. - config: - x-kubernetes-preserve-unknown-fields: true - type: object - description: "The ZooKeeper broker config. Properties with the following prefixes cannot be set: server., dataDir, dataLogDir, clientPort, authProvider, quorum.auth, requireClientAuthScheme, snapshot.trust.empty, standaloneEnabled, reconfigEnabled, 4lw.commands.whitelist, secureClientPort, ssl., serverCnxnFactory, sslQuorum (with the exception of: ssl.protocol, ssl.quorum.protocol, ssl.enabledProtocols, ssl.quorum.enabledProtocols, ssl.ciphersuites, ssl.quorum.ciphersuites, ssl.hostnameVerification, ssl.quorum.hostnameVerification)." - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: + type: object + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: + type: object + properties: + name: + type: string + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for pods. + jmxOptions: + type: object + properties: + authentication: + type: object + properties: + type: type: string + enum: + - password + description: Authentication type. Currently the only supported types are `password`.`password` type creates a username and protected port with no TLS. + required: + - type + description: Authentication configuration for connecting to the JMX port. + description: JMX Options for Zookeeper nodes. + resources: + type: object + properties: + claims: + type: array + items: type: object - description: A map of -XX options to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + metricsConfig: + type: object + properties: + type: + type: string + enum: + - jmxPrometheusExporter + description: Metrics type. Only 'jmxPrometheusExporter' supported currently. + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: - name: + key: type: string - description: The system property name. - value: + name: type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for pods. - jmxOptions: - type: object - properties: - authentication: - type: object - properties: - type: - type: string - enum: - - password - description: Authentication type. Currently the only supported types are `password`.`password` type creates a username and protected port with no TLS. - required: - - type - description: Authentication configuration for connecting to the JMX port. - description: JMX Options for Zookeeper nodes. - resources: - type: object - properties: - claims: - type: array - items: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' + required: + - type + - valueFrom + description: Metrics configuration. + logging: + type: object + properties: + loggers: + additionalProperties: + type: string + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: + key: + type: string name: type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - metricsConfig: - type: object - properties: - type: - type: string - enum: - - jmxPrometheusExporter - description: Metrics type. Only 'jmxPrometheusExporter' supported currently. - valueFrom: - type: object - properties: - configMapKeyRef: - type: object - properties: - key: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration for ZooKeeper. + template: + type: object + properties: + statefulset: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - name: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' - required: - - type - - valueFrom - description: Metrics configuration. - logging: - type: object - properties: - loggers: - additionalProperties: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + podManagementPolicy: type: string - type: object - description: A Map from logger name to logger level. - type: - type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: - type: object - properties: - configMapKeyRef: - type: object - properties: - key: + enum: + - OrderedReady + - Parallel + description: PodManagementPolicy which will be used for this StatefulSet. Valid values are `Parallel` and `OrderedReady`. Defaults to `Parallel`. + description: Template for ZooKeeper `StatefulSet`. + podSet: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - name: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration for ZooKeeper. - template: - type: object - properties: - statefulset: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - podManagementPolicy: - type: string - enum: - - OrderedReady - - Parallel - description: PodManagementPolicy which will be used for this StatefulSet. Valid values are `Parallel` and `OrderedReady`. Defaults to `Parallel`. - description: Template for ZooKeeper `StatefulSet`. - podSet: - type: object - properties: - metadata: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for ZooKeeper `StrimziPodSet` resource. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - labels: - additionalProperties: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for ZooKeeper `StrimziPodSet` resource. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + seccompProfile: type: object properties: - name: + localhostProfile: type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: + type: + type: string + supplementalGroups: + type: array + items: type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: - type: array - items: - type: object - properties: - name: - type: string - value: - type: string - windowsOptions: + sysctls: + type: array + items: type: object properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + name: type: string - hostProcess: - type: boolean - runAsUserName: + value: type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: type: object properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: object + properties: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchFields: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: - type: string - podAntiAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + podAntiAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - topologySpreadConstraints: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchLabels: - additionalProperties: + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: - type: object - properties: - hostnames: - type: array - items: - type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - description: Template for ZooKeeper `Pods`. - clientService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for ZooKeeper client `Service`. - nodesService: - type: object - properties: - metadata: + description: The pod's affinity rules. + tolerations: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for ZooKeeper nodes `Service`. - persistentVolumeClaim: - type: object - properties: - metadata: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string + labelSelector: type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for all ZooKeeper `PersistentVolumeClaims`. - podDisruptionBudget: - type: object - properties: - metadata: + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. - maxUnavailable: - type: integer - minimum: 0 - description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." - description: Template for ZooKeeper `PodDisruptionBudget`. - zookeeperContainer: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: + hostnames: + type: array + items: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: type: object properties: - add: - type: array - items: - type: string - drop: + defaultMode: + type: integer + items: type: array items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: type: object properties: - level: - type: string - role: - type: string - type: - type: string - user: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: type: string - seccompProfile: + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: type: object properties: - localhostProfile: + medium: type: string - type: - type: string - windowsOptions: + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: type: object properties: - gmsaCredentialSpec: + driver: type: string - gmsaCredentialSpecName: + fsType: type: string - hostProcess: + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: type: boolean - runAsUserName: - type: string - description: Security context for the container. - description: Template for the ZooKeeper container. - serviceAccount: - type: object - properties: - metadata: + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for ZooKeeper `Pods`. + clientService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for ZooKeeper client `Service`. + nodesService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for ZooKeeper nodes `Service`. + persistentVolumeClaim: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for all ZooKeeper `PersistentVolumeClaims`. + podDisruptionBudget: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. + maxUnavailable: + type: integer + minimum: 0 + description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." + description: Template for ZooKeeper `PodDisruptionBudget`. + zookeeperContainer: + type: object + properties: + env: + type: array + items: type: object properties: - labels: - additionalProperties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the ZooKeeper service account. - jmxSecret: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Secret of the Zookeeper Cluster JMX authentication. - description: Template for ZooKeeper cluster resources. The template allows users to specify how the Kubernetes resources are generated. - required: - - replicas - - storage - description: Configuration of the ZooKeeper cluster. This section is required when running a ZooKeeper-based Apache Kafka cluster. - entityOperator: - type: object - properties: - topicOperator: - type: object - properties: - watchedNamespace: - type: string - description: The namespace the Topic Operator should watch. - image: - type: string - description: The image to use for the Topic Operator. - reconciliationIntervalSeconds: - type: integer - minimum: 0 - description: Interval between periodic reconciliations. - zookeeperSessionTimeoutSeconds: - type: integer - minimum: 0 - description: Timeout for the ZooKeeper session. - startupProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod startup checking. - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking. - resources: - type: object - properties: - claims: - type: array - items: + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the ZooKeeper container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the ZooKeeper service account. + jmxSecret: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Secret of the Zookeeper Cluster JMX authentication. + description: Template for ZooKeeper cluster resources. The template allows users to specify how the Kubernetes resources are generated. + required: + - replicas + - storage + description: Configuration of the ZooKeeper cluster. This section is required when running a ZooKeeper-based Apache Kafka cluster. + entityOperator: + type: object + properties: + topicOperator: + type: object + properties: + watchedNamespace: + type: string + description: The namespace the Topic Operator should watch. + image: + type: string + description: The image to use for the Topic Operator. + reconciliationIntervalSeconds: + type: integer + minimum: 0 + description: Interval between periodic reconciliations. + zookeeperSessionTimeoutSeconds: + type: integer + minimum: 0 + description: Timeout for the ZooKeeper session. + startupProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod startup checking. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + resources: + type: object + properties: + claims: + type: array + items: + type: object + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + topicMetadataMaxAttempts: + type: integer + minimum: 0 + description: The number of attempts at getting topic metadata. + logging: + type: object + properties: + loggers: + additionalProperties: + type: string + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: + key: + type: string name: type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - topicMetadataMaxAttempts: - type: integer - minimum: 0 - description: The number of attempts at getting topic metadata. - logging: - type: object - properties: - loggers: - additionalProperties: - type: string - type: object - description: A Map from logger name to logger level. - type: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: + type: object + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: type: object properties: - configMapKeyRef: - type: object - properties: - key: - type: string - name: - type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: - type: string + name: + type: string + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for pods. + description: Configuration of the Topic Operator. + userOperator: + type: object + properties: + watchedNamespace: + type: string + description: The namespace the User Operator should watch. + image: + type: string + description: The image to use for the User Operator. + reconciliationIntervalSeconds: + type: integer + minimum: 0 + description: Interval between periodic reconciliations. + zookeeperSessionTimeoutSeconds: + type: integer + minimum: 0 + description: Timeout for the ZooKeeper session. + secretPrefix: + type: string + description: The prefix that will be added to the KafkaUser name to be used as the Secret name. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + resources: + type: object + properties: + claims: + type: array + items: type: object - description: A map of -XX options to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - "-Xms": + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + logging: + type: object + properties: + loggers: + additionalProperties: type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: - name: - type: string - description: The system property name. - value: + key: type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for pods. - description: Configuration of the Topic Operator. - userOperator: - type: object - properties: - watchedNamespace: - type: string - description: The namespace the User Operator should watch. - image: - type: string - description: The image to use for the User Operator. - reconciliationIntervalSeconds: - type: integer - minimum: 0 - description: Interval between periodic reconciliations. - zookeeperSessionTimeoutSeconds: - type: integer - minimum: 0 - description: Timeout for the ZooKeeper session. - secretPrefix: - type: string - description: The prefix that will be added to the KafkaUser name to be used as the Secret name. - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking. - resources: - type: object - properties: - claims: - type: array - items: - type: object - properties: name: type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - logging: - type: object - properties: - loggers: - additionalProperties: - type: string - type: object - description: A Map from logger name to logger level. - type: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: + type: object + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: type: object properties: - configMapKeyRef: - type: object - properties: - key: - type: string - name: - type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: - type: string + name: + type: string + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for pods. + description: Configuration of the User Operator. + tlsSidecar: + type: object + properties: + image: + type: string + description: The docker image for the container. + resources: + type: object + properties: + claims: + type: array + items: type: object - description: A map of -XX options to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + logLevel: + type: string + enum: + - emerg + - alert + - crit + - err + - warning + - notice + - info + - debug + description: The log level for the TLS sidecar. Default value is `notice`. + description: TLS sidecar configuration. + template: + type: object + properties: + deployment: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + deploymentStrategy: + type: string + enum: + - RollingUpdate + - Recreate + description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. + description: Template for Entity Operator `Deployment`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string type: object - properties: - name: - type: string - description: The system property name. - value: - type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for pods. - description: Configuration of the User Operator. - tlsSidecar: - type: object - properties: - image: - type: string - description: The docker image for the container. - resources: - type: object - properties: - claims: - type: array - items: + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string type: object - properties: - name: - type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking. - logLevel: - type: string - enum: - - emerg - - alert - - crit - - err - - warning - - notice - - info - - debug - description: The log level for the TLS sidecar. Default value is `notice`. - description: TLS sidecar configuration. - template: - type: object - properties: - deployment: - type: object - properties: - metadata: + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - labels: - additionalProperties: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - deploymentStrategy: - type: string - enum: - - RollingUpdate - - Recreate - description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. - description: Template for Entity Operator `Deployment`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + seccompProfile: type: object properties: - name: + localhostProfile: type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: + type: + type: string + supplementalGroups: + type: array + items: type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: + sysctls: + type: array + items: type: object properties: - localhostProfile: + name: type: string - type: + value: type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: - type: array - items: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: object properties: - name: - type: string - value: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: type: string - matchFields: - type: array - items: + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: type: object properties: - nodeSelectorTerms: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: type: array items: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + podAntiAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: type: string - matchFields: - type: array - items: + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + description: The pod's affinity rules. + tolerations: + type: array + items: + type: object + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: type: array items: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: + key: + type: string + operator: + type: string + values: type: array items: type: string - topologyKey: - type: string - podAntiAffinity: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: + type: object + properties: + hostnames: + type: array + items: + type: string + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: type: object properties: - preferredDuringSchedulingIgnoredDuringExecution: + defaultMode: + type: integer + items: type: array items: type: object properties: - podAffinityTerm: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: + key: + type: string + mode: type: integer - requiredDuringSchedulingIgnoredDuringExecution: + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: type: array items: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + key: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for Entity Operator `Pods`. + topicOperatorContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: type: object properties: - effect: + level: type: string - key: + role: type: string - operator: + type: type: string - tolerationSeconds: - type: integer - value: + user: type: string - description: The pod's tolerations. - topologySpreadConstraints: - type: array - items: + seccompProfile: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the Entity Topic Operator container. + userOperatorContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: type: array items: type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - nodeTaintsPolicy: + role: type: string - topologyKey: + type: type: string - whenUnsatisfiable: + user: type: string - description: The pod's topology spread constraints. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: + seccompProfile: type: object properties: - hostnames: - type: array - items: - type: string - ip: + localhostProfile: type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - description: Template for Entity Operator `Pods`. - topicOperatorContainer: - type: object - properties: - env: - type: array - items: + type: + type: string + windowsOptions: type: object properties: - name: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: type: string - description: The environment variable key. - value: + hostProcess: + type: boolean + runAsUserName: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + description: Security context for the container. + description: Template for the Entity User Operator container. + tlsSidecarContainer: + type: object + properties: + env: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: - type: string - drop: - type: array - items: - type: string - privileged: - type: boolean - procMount: + name: type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Security context for the container. - description: Template for the Entity Topic Operator container. - userOperatorContainer: - type: object - properties: - env: - type: array - items: + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: type: object properties: - name: - type: string - description: The environment variable key. - value: - type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: - type: string - drop: - type: array - items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + add: + type: array + items: type: string - hostProcess: - type: boolean - runAsUserName: + drop: + type: array + items: type: string - description: Security context for the container. - description: Template for the Entity User Operator container. - tlsSidecarContainer: - type: object - properties: - env: - type: array - items: + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: type: object properties: - name: + level: type: string - description: The environment variable key. - value: - type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: - type: string - drop: - type: array - items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Security context for the container. - description: Template for the Entity Operator TLS sidecar container. - serviceAccount: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + role: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + type: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Entity Operator service account. - entityOperatorRole: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + user: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + seccompProfile: + type: object + properties: + localhostProfile: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Entity Operator Role. - topicOperatorRoleBinding: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Entity Topic Operator RoleBinding. - userOperatorRoleBinding: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + gmsaCredentialSpecName: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + hostProcess: + type: boolean + runAsUserName: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Entity Topic Operator RoleBinding. - description: Template for Entity Operator resources. The template allows users to specify how a `Deployment` and `Pod` is generated. - description: Configuration of the Entity Operator. - clusterCa: - type: object - properties: - generateCertificateAuthority: - type: boolean - description: If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true. - generateSecretOwnerReference: - type: boolean - description: "If `true`, the Cluster and Client CA Secrets are configured with the `ownerReference` set to the `Kafka` resource. If the `Kafka` resource is deleted when `true`, the CA Secrets are also deleted. If `false`, the `ownerReference` is disabled. If the `Kafka` resource is deleted when `false`, the CA Secrets are retained and available for reuse. Default is `true`." - validityDays: - type: integer - minimum: 1 - description: The number of days generated certificates should be valid for. The default is 365. - renewalDays: - type: integer - minimum: 1 - description: "The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When `generateCertificateAuthority` is true, this will cause the generation of a new certificate. When `generateCertificateAuthority` is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30." - certificateExpirationPolicy: - type: string - enum: - - renew-certificate - - replace-key - description: How should CA certificate expiration be handled when `generateCertificateAuthority=true`. The default is for a new CA certificate to be generated reusing the existing private key. - description: Configuration of the cluster certificate authority. - clientsCa: - type: object - properties: - generateCertificateAuthority: - type: boolean - description: If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true. - generateSecretOwnerReference: - type: boolean - description: "If `true`, the Cluster and Client CA Secrets are configured with the `ownerReference` set to the `Kafka` resource. If the `Kafka` resource is deleted when `true`, the CA Secrets are also deleted. If `false`, the `ownerReference` is disabled. If the `Kafka` resource is deleted when `false`, the CA Secrets are retained and available for reuse. Default is `true`." - validityDays: - type: integer - minimum: 1 - description: The number of days generated certificates should be valid for. The default is 365. - renewalDays: - type: integer - minimum: 1 - description: "The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When `generateCertificateAuthority` is true, this will cause the generation of a new certificate. When `generateCertificateAuthority` is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30." - certificateExpirationPolicy: - type: string - enum: - - renew-certificate - - replace-key - description: How should CA certificate expiration be handled when `generateCertificateAuthority=true`. The default is for a new CA certificate to be generated reusing the existing private key. - description: Configuration of the clients certificate authority. - cruiseControl: - type: object - properties: - image: - type: string - description: "The container image used for Cruise Control pods. If no image name is explicitly specified, the image name corresponds to the name specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." - tlsSidecar: - type: object - properties: - image: - type: string - description: The docker image for the container. - resources: - type: object - properties: - claims: - type: array - items: + description: Security context for the container. + description: Template for the Entity Operator TLS sidecar container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string type: object - properties: - name: - type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking. - logLevel: - type: string - enum: - - emerg - - alert - - crit - - err - - warning - - notice - - info - - debug - description: The log level for the TLS sidecar. Default value is `notice`. - description: TLS sidecar configuration. - resources: - type: object - properties: - claims: - type: array - items: + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Entity Operator service account. + entityOperatorRole: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Entity Operator Role. + topicOperatorRoleBinding: + type: object + properties: + metadata: type: object properties: - name: - type: string - limits: - additionalProperties: - anyOf: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Entity Topic Operator RoleBinding. + userOperatorRoleBinding: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Entity Topic Operator RoleBinding. + description: Template for Entity Operator resources. The template allows users to specify how a `Deployment` and `Pod` is generated. + description: Configuration of the Entity Operator. + clusterCa: + type: object + properties: + generateCertificateAuthority: + type: boolean + description: If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true. + generateSecretOwnerReference: + type: boolean + description: "If `true`, the Cluster and Client CA Secrets are configured with the `ownerReference` set to the `Kafka` resource. If the `Kafka` resource is deleted when `true`, the CA Secrets are also deleted. If `false`, the `ownerReference` is disabled. If the `Kafka` resource is deleted when `false`, the CA Secrets are retained and available for reuse. Default is `true`." + validityDays: + type: integer + minimum: 1 + description: The number of days generated certificates should be valid for. The default is 365. + renewalDays: + type: integer + minimum: 1 + description: "The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When `generateCertificateAuthority` is true, this will cause the generation of a new certificate. When `generateCertificateAuthority` is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30." + certificateExpirationPolicy: + type: string + enum: + - renew-certificate + - replace-key + description: How should CA certificate expiration be handled when `generateCertificateAuthority=true`. The default is for a new CA certificate to be generated reusing the existing private key. + description: Configuration of the cluster certificate authority. + clientsCa: + type: object + properties: + generateCertificateAuthority: + type: boolean + description: If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true. + generateSecretOwnerReference: + type: boolean + description: "If `true`, the Cluster and Client CA Secrets are configured with the `ownerReference` set to the `Kafka` resource. If the `Kafka` resource is deleted when `true`, the CA Secrets are also deleted. If `false`, the `ownerReference` is disabled. If the `Kafka` resource is deleted when `false`, the CA Secrets are retained and available for reuse. Default is `true`." + validityDays: + type: integer + minimum: 1 + description: The number of days generated certificates should be valid for. The default is 365. + renewalDays: + type: integer + minimum: 1 + description: "The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When `generateCertificateAuthority` is true, this will cause the generation of a new certificate. When `generateCertificateAuthority` is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30." + certificateExpirationPolicy: + type: string + enum: + - renew-certificate + - replace-key + description: How should CA certificate expiration be handled when `generateCertificateAuthority=true`. The default is for a new CA certificate to be generated reusing the existing private key. + description: Configuration of the clients certificate authority. + cruiseControl: + type: object + properties: + image: + type: string + description: "The container image used for Cruise Control pods. If no image name is explicitly specified, the image name corresponds to the name specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." + tlsSidecar: + type: object + properties: + image: + type: string + description: The docker image for the container. + resources: + type: object + properties: + claims: + type: array + items: + type: object + properties: + name: + type: string + 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 - type: object - requests: - additionalProperties: - anyOf: + 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 + 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 - type: object - description: CPU and memory resources to reserve for the Cruise Control container. - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking for the Cruise Control container. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking for the Cruise Control container. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: - 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 + type: object + description: CPU and memory resources to reserve. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + logLevel: + type: string + enum: + - emerg + - alert + - crit + - err + - warning + - notice + - info + - debug + description: The log level for the TLS sidecar. Default value is `notice`. + description: TLS sidecar configuration. + resources: + type: object + properties: + claims: + type: array + items: type: object - description: A map of -XX options to the JVM. - "-Xmx": + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve for the Cruise Control container. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking for the Cruise Control container. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking for the Cruise Control container. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - "-Xms": + type: object + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: + type: object + properties: + name: + type: string + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for the Cruise Control container. + logging: + type: object + properties: + loggers: + additionalProperties: type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: - name: + key: type: string - description: The system property name. - value: + name: type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for the Cruise Control container. - logging: - type: object - properties: - loggers: - additionalProperties: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration (Log4j 2) for Cruise Control. + template: + type: object + properties: + deployment: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + deploymentStrategy: type: string - type: object - description: A Map from logger name to logger level. - type: - type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: - type: object - properties: - configMapKeyRef: - type: object - properties: - key: + enum: + - RollingUpdate + - Recreate + description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. + description: Template for Cruise Control `Deployment`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - name: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration (Log4j 2) for Cruise Control. - template: - type: object - properties: - deployment: - type: object - properties: - metadata: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - labels: - additionalProperties: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - deploymentStrategy: - type: string - enum: - - RollingUpdate - - Recreate - description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. - description: Template for Cruise Control `Deployment`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + seccompProfile: type: object properties: - name: + localhostProfile: type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: + type: + type: string + supplementalGroups: + type: array + items: type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: - type: array - items: - type: object - properties: - name: - type: string - value: - type: string - windowsOptions: + sysctls: + type: array + items: type: object properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + name: type: string - hostProcess: - type: boolean - runAsUserName: + value: type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: type: object - properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: + properties: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: object + properties: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchFields: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: - type: string - podAntiAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + podAntiAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - topologySpreadConstraints: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchLabels: - additionalProperties: + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: - type: object - properties: - hostnames: - type: array - items: - type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - description: Template for Cruise Control `Pods`. - apiService: - type: object - properties: - metadata: + description: The pod's affinity rules. + tolerations: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for Cruise Control API `Service`. - podDisruptionBudget: - type: object - properties: - metadata: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string + labelSelector: type: object - description: Annotations added to the Kubernetes resource. - description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. - maxUnavailable: - type: integer - minimum: 0 - description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." - description: Template for Cruise Control `PodDisruptionBudget`. - cruiseControlContainer: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: type: string - description: The environment variable key. - value: + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: + type: object + properties: + hostnames: + type: array + items: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: type: object properties: - add: - type: array - items: - type: string - drop: + defaultMode: + type: integer + items: type: array items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: type: object properties: - level: - type: string - role: - type: string - type: - type: string - user: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: type: string - seccompProfile: + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: type: object properties: - localhostProfile: - type: string - type: + medium: type: string - windowsOptions: + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: type: object properties: - gmsaCredentialSpec: + driver: type: string - gmsaCredentialSpecName: + fsType: type: string - hostProcess: + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: type: boolean - runAsUserName: + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for Cruise Control `Pods`. + apiService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for Cruise Control API `Service`. + podDisruptionBudget: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. + maxUnavailable: + type: integer + minimum: 0 + description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." + description: Template for Cruise Control `PodDisruptionBudget`. + cruiseControlContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: type: string - description: Security context for the container. - description: Template for the Cruise Control container. - tlsSidecarContainer: - type: object - properties: - env: - type: array - items: + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: type: object properties: - name: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: type: string - description: The environment variable key. - value: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + description: Security context for the container. + description: Template for the Cruise Control container. + tlsSidecarContainer: + type: object + properties: + env: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: - type: string - drop: - type: array - items: - type: string - privileged: - type: boolean - procMount: + name: type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: type: string - hostProcess: - type: boolean - runAsUserName: + drop: + type: array + items: type: string - description: Security context for the container. - description: Template for the Cruise Control TLS sidecar container. - serviceAccount: + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the Cruise Control TLS sidecar container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Cruise Control service account. + description: "Template to specify how Cruise Control resources, `Deployments` and `Pods`, are generated." + brokerCapacity: + type: object + properties: + disk: + type: string + pattern: "^[0-9]+([.][0-9]*)?([KMGTPE]i?|e[0-9]+)?$" + description: "Broker capacity for disk in bytes. Use a number value with either standard Kubernetes byte units (K, M, G, or T), their bibyte (power of two) equivalents (Ki, Mi, Gi, or Ti), or a byte value with or without E notation. For example, 100000M, 100000Mi, 104857600000, or 1e+11." + cpuUtilization: + type: integer + minimum: 0 + maximum: 100 + description: Broker capacity for CPU resource utilization as a percentage (0 - 100). + cpu: + type: string + pattern: "^[0-9]+([.][0-9]{0,3}|[m]?)$" + description: "Broker capacity for CPU resource in cores or millicores. For example, 1, 1.500, 1500m. For more information on valid CPU resource units see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu." + inboundNetwork: + type: string + pattern: "^[0-9]+([KMG]i?)?B/s$" + description: "Broker capacity for inbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." + outboundNetwork: + type: string + pattern: "^[0-9]+([KMG]i?)?B/s$" + description: "Broker capacity for outbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." + overrides: + type: array + items: type: object properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Cruise Control service account. - description: "Template to specify how Cruise Control resources, `Deployments` and `Pods`, are generated." - brokerCapacity: + brokers: + type: array + items: + type: integer + description: List of Kafka brokers (broker identifiers). + cpu: + type: string + pattern: "^[0-9]+([.][0-9]{0,3}|[m]?)$" + description: "Broker capacity for CPU resource in cores or millicores. For example, 1, 1.500, 1500m. For more information on valid CPU resource units see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu." + inboundNetwork: + type: string + pattern: "^[0-9]+([KMG]i?)?B/s$" + description: "Broker capacity for inbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." + outboundNetwork: + type: string + pattern: "^[0-9]+([KMG]i?)?B/s$" + description: "Broker capacity for outbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." + required: + - brokers + description: Overrides for individual brokers. The `overrides` property lets you specify a different capacity configuration for different brokers. + description: The Cruise Control `brokerCapacity` configuration. + config: + x-kubernetes-preserve-unknown-fields: true + type: object + description: "The Cruise Control configuration. For a full list of configuration options refer to https://github.com/linkedin/cruise-control/wiki/Configurations. Note that properties with the following prefixes cannot be set: bootstrap.servers, client.id, zookeeper., network., security., failed.brokers.zk.path,webserver.http., webserver.api.urlprefix, webserver.session.path, webserver.accesslog., two.step., request.reason.required,metric.reporter.sampler.bootstrap.servers, capacity.config.file, self.healing., ssl., kafka.broker.failure.detection.enable, topic.config.provider.class (with the exception of: ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, webserver.http.cors.enabled, webserver.http.cors.origin, webserver.http.cors.exposeheaders, webserver.security.enable, webserver.ssl.enable)." + metricsConfig: + type: object + properties: + type: + type: string + enum: + - jmxPrometheusExporter + description: Metrics type. Only 'jmxPrometheusExporter' supported currently. + valueFrom: + type: object + properties: + configMapKeyRef: + type: object + properties: + key: + type: string + name: + type: string + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' + required: + - type + - valueFrom + description: Metrics configuration. + description: Configuration for Cruise Control deployment. Deploys a Cruise Control instance when specified. + jmxTrans: + type: object + properties: + image: + type: string + description: The image to use for the JmxTrans. + outputDefinitions: + type: array + items: type: object properties: - disk: - type: string - pattern: "^[0-9]+([.][0-9]*)?([KMGTPE]i?|e[0-9]+)?$" - description: "Broker capacity for disk in bytes. Use a number value with either standard Kubernetes byte units (K, M, G, or T), their bibyte (power of two) equivalents (Ki, Mi, Gi, or Ti), or a byte value with or without E notation. For example, 100000M, 100000Mi, 104857600000, or 1e+11." - cpuUtilization: - type: integer - minimum: 0 - maximum: 100 - description: Broker capacity for CPU resource utilization as a percentage (0 - 100). - cpu: - type: string - pattern: "^[0-9]+([.][0-9]{0,3}|[m]?)$" - description: "Broker capacity for CPU resource in cores or millicores. For example, 1, 1.500, 1500m. For more information on valid CPU resource units see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu." - inboundNetwork: + outputType: type: string - pattern: "^[0-9]+([KMG]i?)?B/s$" - description: "Broker capacity for inbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." - outboundNetwork: + description: "Template for setting the format of the data that will be pushed.For more information see https://github.com/jmxtrans/jmxtrans/wiki/OutputWriters[JmxTrans OutputWriters]." + host: type: string - pattern: "^[0-9]+([KMG]i?)?B/s$" - description: "Broker capacity for outbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." - overrides: + description: The DNS/hostname of the remote host that the data is pushed to. + port: + type: integer + description: The port of the remote host that the data is pushed to. + flushDelayInSeconds: + type: integer + description: How many seconds the JmxTrans waits before pushing a new set of data out. + typeNames: type: array items: - type: object - properties: - brokers: - type: array - items: - type: integer - description: List of Kafka brokers (broker identifiers). - cpu: - type: string - pattern: "^[0-9]+([.][0-9]{0,3}|[m]?)$" - description: "Broker capacity for CPU resource in cores or millicores. For example, 1, 1.500, 1500m. For more information on valid CPU resource units see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu." - inboundNetwork: - type: string - pattern: "^[0-9]+([KMG]i?)?B/s$" - description: "Broker capacity for inbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." - outboundNetwork: - type: string - pattern: "^[0-9]+([KMG]i?)?B/s$" - description: "Broker capacity for outbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." - required: - - brokers - description: Overrides for individual brokers. The `overrides` property lets you specify a different capacity configuration for different brokers. - description: The Cruise Control `brokerCapacity` configuration. - config: - x-kubernetes-preserve-unknown-fields: true - type: object - description: "The Cruise Control configuration. For a full list of configuration options refer to https://github.com/linkedin/cruise-control/wiki/Configurations. Note that properties with the following prefixes cannot be set: bootstrap.servers, client.id, zookeeper., network., security., failed.brokers.zk.path,webserver.http., webserver.api.urlprefix, webserver.session.path, webserver.accesslog., two.step., request.reason.required,metric.reporter.sampler.bootstrap.servers, capacity.config.file, self.healing., ssl., kafka.broker.failure.detection.enable, topic.config.provider.class (with the exception of: ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, webserver.http.cors.enabled, webserver.http.cors.origin, webserver.http.cors.exposeheaders, webserver.security.enable, webserver.ssl.enable)." - metricsConfig: + type: string + description: "Template for filtering data to be included in response to a wildcard query. For more information see https://github.com/jmxtrans/jmxtrans/wiki/Queries[JmxTrans queries]." + name: + type: string + description: Template for setting the name of the output definition. This is used to identify where to send the results of queries should be sent. + required: + - outputType + - name + description: "Defines the output hosts that will be referenced later on. For more information on these properties see, xref:type-JmxTransOutputDefinitionTemplate-reference[`JmxTransOutputDefinitionTemplate` schema reference]." + logLevel: + type: string + description: "Sets the logging level of the JmxTrans deployment.For more information see, https://github.com/jmxtrans/jmxtrans-agent/wiki/Troubleshooting[JmxTrans Logging Level]." + kafkaQueries: + type: array + items: type: object properties: - type: + targetMBean: type: string - enum: - - jmxPrometheusExporter - description: Metrics type. Only 'jmxPrometheusExporter' supported currently. - valueFrom: + description: If using wildcards instead of a specific MBean then the data is gathered from multiple MBeans. Otherwise if specifying an MBean then data is gathered from that specified MBean. + attributes: + type: array + items: + type: string + description: Determine which attributes of the targeted MBean should be included. + outputs: + type: array + items: + type: string + description: "List of the names of output definitions specified in the spec.kafka.jmxTrans.outputDefinitions that have defined where JMX metrics are pushed to, and in which data format." + required: + - targetMBean + - attributes + - outputs + description: "Queries to send to the Kafka brokers to define what data should be read from each broker. For more information on these properties see, xref:type-JmxTransQueryTemplate-reference[`JmxTransQueryTemplate` schema reference]." + resources: + type: object + properties: + claims: + type: array + items: type: object properties: - configMapKeyRef: - type: object - properties: - key: - type: string - name: - type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' - required: - - type - - valueFrom - description: Metrics configuration. - description: Configuration for Cruise Control deployment. Deploys a Cruise Control instance when specified. - jmxTrans: - type: object - properties: - image: - type: string - description: The image to use for the JmxTrans. - outputDefinitions: - type: array - items: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + template: + type: object + properties: + deployment: type: object properties: - outputType: - type: string - description: "Template for setting the format of the data that will be pushed.For more information see https://github.com/jmxtrans/jmxtrans/wiki/OutputWriters[JmxTrans OutputWriters]." - host: - type: string - description: The DNS/hostname of the remote host that the data is pushed to. - port: - type: integer - description: The port of the remote host that the data is pushed to. - flushDelayInSeconds: - type: integer - description: How many seconds the JmxTrans waits before pushing a new set of data out. - typeNames: - type: array - items: - type: string - description: "Template for filtering data to be included in response to a wildcard query. For more information see https://github.com/jmxtrans/jmxtrans/wiki/Queries[JmxTrans queries]." - name: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + deploymentStrategy: type: string - description: Template for setting the name of the output definition. This is used to identify where to send the results of queries should be sent. - required: - - outputType - - name - description: "Defines the output hosts that will be referenced later on. For more information on these properties see, xref:type-JmxTransOutputDefinitionTemplate-reference[`JmxTransOutputDefinitionTemplate` schema reference]." - logLevel: - type: string - description: "Sets the logging level of the JmxTrans deployment.For more information see, https://github.com/jmxtrans/jmxtrans-agent/wiki/Troubleshooting[JmxTrans Logging Level]." - kafkaQueries: - type: array - items: + enum: + - RollingUpdate + - Recreate + description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. + description: Template for JmxTrans `Deployment`. + pod: type: object properties: - targetMBean: - type: string - description: If using wildcards instead of a specific MBean then the data is gathered from multiple MBeans. Otherwise if specifying an MBean then data is gathered from that specified MBean. - attributes: - type: array - items: - type: string - description: Determine which attributes of the targeted MBean should be included. - outputs: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: type: array items: - type: string - description: "List of the names of output definitions specified in the spec.kafka.jmxTrans.outputDefinitions that have defined where JMX metrics are pushed to, and in which data format." - required: - - targetMBean - - attributes - - outputs - description: "Queries to send to the Kafka brokers to define what data should be read from each broker. For more information on these properties see, xref:type-JmxTransQueryTemplate-reference[`JmxTransQueryTemplate` schema reference]." - resources: - type: object - properties: - claims: - type: array - items: + type: object + properties: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: type: object properties: - name: + fsGroup: + type: integer + fsGroupChangePolicy: type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - template: - type: object - properties: - deployment: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - deploymentStrategy: - type: string - enum: - - RollingUpdate - - Recreate - description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. - description: Template for JmxTrans `Deployment`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + seccompProfile: type: object properties: - name: + localhostProfile: type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: + type: + type: string + supplementalGroups: + type: array + items: type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: - type: array - items: - type: object - properties: - name: - type: string - value: - type: string - windowsOptions: + sysctls: + type: array + items: type: object properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + name: type: string - hostProcess: - type: boolean - runAsUserName: + value: type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: object + properties: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: type: object properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: type: string - matchFields: - type: array - items: + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + podAntiAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: - type: string - podAntiAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + description: The pod's affinity rules. + tolerations: + type: array + items: + type: object + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: type: array items: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: + key: + type: string + operator: + type: string + values: type: array items: type: string - topologyKey: - type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - topologySpreadConstraints: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: - type: object - properties: - hostnames: - type: array - items: - type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - description: Template for JmxTrans `Pods`. - container: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: type: string - description: The environment variable key. - value: + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: + type: object + properties: + hostnames: + type: array + items: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: type: object properties: - add: - type: array - items: - type: string - drop: + defaultMode: + type: integer + items: type: array items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: type: object properties: - level: - type: string - role: - type: string - type: - type: string - user: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: type: string - seccompProfile: + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: type: object properties: - localhostProfile: + medium: type: string - type: - type: string - windowsOptions: + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: type: object properties: - gmsaCredentialSpec: + driver: type: string - gmsaCredentialSpecName: + fsType: type: string - hostProcess: + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: type: boolean - runAsUserName: - type: string - description: Security context for the container. - description: Template for JmxTrans container. - serviceAccount: - type: object - properties: - metadata: + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for JmxTrans `Pods`. + container: + type: object + properties: + env: + type: array + items: type: object properties: - labels: - additionalProperties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the JmxTrans service account. - description: Template for JmxTrans resources. - required: - - outputDefinitions - - kafkaQueries - description: "As of Strimzi 0.35.0, JMXTrans is not supported anymore and this option is ignored." - kafkaExporter: - type: object - properties: - image: - type: string - description: "The container image used for the Kafka Exporter pods. If no image name is explicitly specified, the image name corresponds to the version specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." - groupRegex: - type: string - description: Regular expression to specify which consumer groups to collect. Default value is `.*`. - topicRegex: - type: string - description: Regular expression to specify which topics to collect. Default value is `.*`. - groupExcludeRegex: - type: string - description: Regular expression to specify which consumer groups to exclude. - topicExcludeRegex: - type: string - description: Regular expression to specify which topics to exclude. - resources: - type: object - properties: - claims: - type: array - items: + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for JmxTrans container. + serviceAccount: + type: object + properties: + metadata: type: object properties: - name: - type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - logging: - type: string - description: "Only log messages with the given severity or above. Valid levels: [`info`, `debug`, `trace`]. Default log level is `info`." - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness check. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness check. - enableSaramaLogging: - type: boolean - description: "Enable Sarama logging, a Go client library used by the Kafka Exporter." - showAllOffsets: - type: boolean - description: "Whether show the offset/lag for all consumer group, otherwise, only show connected consumer groups." - template: - type: object - properties: - deployment: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the JmxTrans service account. + description: Template for JmxTrans resources. + required: + - outputDefinitions + - kafkaQueries + description: "As of Strimzi 0.35.0, JMXTrans is not supported anymore and this option is ignored." + kafkaExporter: + type: object + properties: + image: + type: string + description: "The container image used for the Kafka Exporter pods. If no image name is explicitly specified, the image name corresponds to the version specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." + groupRegex: + type: string + description: Regular expression to specify which consumer groups to collect. Default value is `.*`. + topicRegex: + type: string + description: Regular expression to specify which topics to collect. Default value is `.*`. + groupExcludeRegex: + type: string + description: Regular expression to specify which consumer groups to exclude. + topicExcludeRegex: + type: string + description: Regular expression to specify which topics to exclude. + resources: + type: object + properties: + claims: + type: array + items: type: object properties: - metadata: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + logging: + type: string + description: "Only log messages with the given severity or above. Valid levels: [`info`, `debug`, `trace`]. Default log level is `info`." + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness check. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness check. + enableSaramaLogging: + type: boolean + description: "Enable Sarama logging, a Go client library used by the Kafka Exporter." + showAllOffsets: + type: boolean + description: "Whether show the offset/lag for all consumer group, otherwise, only show connected consumer groups." + template: + type: object + properties: + deployment: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + deploymentStrategy: + type: string + enum: + - RollingUpdate + - Recreate + description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. + description: Template for Kafka Exporter `Deployment`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - labels: - additionalProperties: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - deploymentStrategy: - type: string - enum: - - RollingUpdate - - Recreate - description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. - description: Template for Kafka Exporter `Deployment`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + type: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + user: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + seccompProfile: type: object properties: - name: + localhostProfile: type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: + type: + type: string + supplementalGroups: + type: array + items: type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: - type: array - items: - type: object - properties: - name: - type: string - value: - type: string - windowsOptions: + sysctls: + type: array + items: type: object properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + name: type: string - hostProcess: - type: boolean - runAsUserName: + value: type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: type: object properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchFields: - type: array - items: - type: object - properties: - key: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - operator: + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: object + properties: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchFields: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: - type: string - podAntiAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + type: object + namespaces: + type: array + items: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - topologySpreadConstraints: - type: array - items: + topologyKey: + type: string + podAntiAffinity: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: type: object properties: - key: - type: string - operator: - type: string - values: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: type: array items: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: - type: object - properties: - hostnames: + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: array items: - type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - description: Template for Kafka Exporter `Pods`. - service: - type: object - properties: - metadata: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + description: The pod's affinity rules. + tolerations: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka Exporter `Service`. - container: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: - type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: type: object properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + labelSelector: type: object properties: - add: - type: array - items: - type: string - drop: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: + type: object + matchLabelKeys: + type: array + items: + type: string + maxSkew: type: integer - runAsNonRoot: - type: boolean - runAsUser: + minDomains: type: integer - seLinuxOptions: + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: + type: object + properties: + hostnames: + type: array + items: + type: string + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: type: object properties: - level: - type: string - role: - type: string - type: - type: string - user: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: type: string - seccompProfile: + description: Secret to use populate the volume. + configMap: type: object properties: - localhostProfile: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: type: string - type: + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: type: string - windowsOptions: + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: type: object properties: - gmsaCredentialSpec: + driver: type: string - gmsaCredentialSpecName: + fsType: type: string - hostProcess: + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: type: boolean - runAsUserName: - type: string - description: Security context for the container. - description: Template for the Kafka Exporter container. - serviceAccount: - type: object - properties: - metadata: + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for Kafka Exporter `Pods`. + service: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka Exporter `Service`. + container: + type: object + properties: + env: + type: array + items: type: object properties: - labels: - additionalProperties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + role: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Kafka Exporter service account. - description: Customization of deployment templates and pods. - description: "Configuration of the Kafka Exporter. Kafka Exporter can provide additional metrics, for example lag of consumer group at topic/partition." - maintenanceTimeWindows: - type: array - items: - type: string - description: "A list of time windows for maintenance tasks (that is, certificates renewal). Each time window is defined by a cron expression." - required: - - kafka - description: "The specification of the Kafka and ZooKeeper clusters, and Topic Operator." - status: - type: object - properties: - conditions: - type: array - items: - type: object - properties: - type: - type: string - description: "The unique identifier of a condition, used to distinguish between other conditions in the resource." - status: - type: string - description: "The status of the condition, either True, False or Unknown." - lastTransitionTime: - type: string - description: "Last time the condition of a type changed from one status to another. The required format is 'yyyy-MM-ddTHH:mm:ssZ', in the UTC time zone." - reason: - type: string - description: The reason for the condition's last transition (a single word in CamelCase). - message: - type: string - description: Human-readable message indicating details about the condition's last transition. - description: List of status conditions. - observedGeneration: - type: integer - description: The generation of the CRD that was last reconciled by the operator. - listeners: - type: array - items: - type: object - properties: - type: - type: string - description: The name of the listener. - name: - type: string - description: The name of the listener. - addresses: - type: array - items: - type: object - properties: - host: - type: string - description: The DNS name or IP address of the Kafka bootstrap service. - port: - type: integer - description: The port of the Kafka bootstrap service. - description: A list of the addresses for this listener. - bootstrapServers: - type: string - description: A comma-separated list of `host:port` pairs for connecting to the Kafka cluster using this listener. - certificates: - type: array - items: - type: string - description: A list of TLS certificates which can be used to verify the identity of the server when connecting to the given listener. Set only for `tls` and `external` listeners. - description: Addresses of the internal and external listeners. - kafkaNodePools: - type: array - items: - type: object - properties: - name: - type: string - description: The name of the KafkaNodePool used by this Kafka resource. - description: List of the KafkaNodePools used by this Kafka cluster. - clusterId: - type: string - description: Kafka cluster Id. - operatorLastSuccessfulVersion: - type: string - description: The version of the Strimzi Cluster Operator which performed the last successful reconciliation. - kafkaVersion: - type: string - description: The version of Kafka currently deployed in the cluster. - kafkaMetadataVersion: - type: string - description: The KRaft metadata.version currently used by the Kafka cluster. - kafkaMetadataState: + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + description: Template for the Kafka Exporter container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Kafka Exporter service account. + description: Customization of deployment templates and pods. + description: "Configuration of the Kafka Exporter. Kafka Exporter can provide additional metrics, for example lag of consumer group at topic/partition." + maintenanceTimeWindows: + type: array + items: type: string - enum: - - ZooKeeper - - KRaftMigration - - KRaftDualWriting - - KRaftPostMigration - - PreKRaft - - KRaft - description: "Defines where cluster metadata are stored. Possible values are: ZooKeeper if the metadata are stored in ZooKeeper; KRaftMigration if the controllers are connected to ZooKeeper, brokers are being rolled with Zookeeper migration enabled and connection information to controllers, and the metadata migration process is running; KRaftDualWriting if the metadata migration process finished and the cluster is in dual-write mode; KRaftPostMigration if the brokers are fully KRaft-based but controllers being rolled to disconnect from ZooKeeper; PreKRaft if brokers and controller are fully KRaft-based, metadata are stored in KRaft, but ZooKeeper must be deleted; KRaft if the metadata are stored in KRaft." - description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." + description: "A list of time windows for maintenance tasks (that is, certificates renewal). Each time window is defined by a cron expression." + required: + - kafka + description: "The specification of the Kafka and ZooKeeper clusters, and Topic Operator." + status: + type: object + properties: + conditions: + type: array + items: + type: object + properties: + type: + type: string + description: "The unique identifier of a condition, used to distinguish between other conditions in the resource." + status: + type: string + description: "The status of the condition, either True, False or Unknown." + lastTransitionTime: + type: string + description: "Last time the condition of a type changed from one status to another. The required format is 'yyyy-MM-ddTHH:mm:ssZ', in the UTC time zone." + reason: + type: string + description: The reason for the condition's last transition (a single word in CamelCase). + message: + type: string + description: Human-readable message indicating details about the condition's last transition. + description: List of status conditions. + observedGeneration: + type: integer + description: The generation of the CRD that was last reconciled by the operator. + listeners: + type: array + items: + type: object + properties: + type: + type: string + description: The name of the listener. + name: + type: string + description: The name of the listener. + addresses: + type: array + items: + type: object + properties: + host: + type: string + description: The DNS name or IP address of the Kafka bootstrap service. + port: + type: integer + description: The port of the Kafka bootstrap service. + description: A list of the addresses for this listener. + bootstrapServers: + type: string + description: A comma-separated list of `host:port` pairs for connecting to the Kafka cluster using this listener. + certificates: + type: array + items: + type: string + description: A list of TLS certificates which can be used to verify the identity of the server when connecting to the given listener. Set only for `tls` and `external` listeners. + description: Addresses of the internal and external listeners. + kafkaNodePools: + type: array + items: + type: object + properties: + name: + type: string + description: The name of the KafkaNodePool used by this Kafka resource. + description: List of the KafkaNodePools used by this Kafka cluster. + clusterId: + type: string + description: Kafka cluster Id. + operatorLastSuccessfulVersion: + type: string + description: The version of the Strimzi Cluster Operator which performed the last successful reconciliation. + kafkaVersion: + type: string + description: The version of Kafka currently deployed in the cluster. + kafkaMetadataVersion: + type: string + description: The KRaft metadata.version currently used by the Kafka cluster. + kafkaMetadataState: + type: string + enum: + - ZooKeeper + - KRaftMigration + - KRaftDualWriting + - KRaftPostMigration + - PreKRaft + - KRaft + description: "Defines where cluster metadata are stored. Possible values are: ZooKeeper if the metadata are stored in ZooKeeper; KRaftMigration if the controllers are connected to ZooKeeper, brokers are being rolled with Zookeeper migration enabled and connection information to controllers, and the metadata migration process is running; KRaftDualWriting if the metadata migration process finished and the cluster is in dual-write mode; KRaftPostMigration if the brokers are fully KRaft-based but controllers being rolled to disconnect from ZooKeeper; PreKRaft if brokers and controller are fully KRaft-based, metadata are stored in KRaft, but ZooKeeper must be deleted; KRaft if the metadata are stored in KRaft." + description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." diff --git a/packaging/install/cluster-operator/040-Crd-kafka.yaml b/packaging/install/cluster-operator/040-Crd-kafka.yaml index e38870811fd..0bfa5ec3eb6 100644 --- a/packaging/install/cluster-operator/040-Crd-kafka.yaml +++ b/packaging/install/cluster-operator/040-Crd-kafka.yaml @@ -1426,6 +1426,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. bootstrapService: type: object @@ -2695,6 +2784,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for ZooKeeper `Pods`. clientService: type: object @@ -3881,6 +4059,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Entity Operator `Pods`. topicOperatorContainer: type: object @@ -4988,6 +5255,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Cruise Control `Pods`. apiService: type: object @@ -5904,6 +6260,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for JmxTrans `Pods`. container: type: object @@ -6628,6 +7073,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka Exporter `Pods`. service: type: object @@ -6840,3 +7374,4 @@ spec: - KRaft description: "Defines where cluster metadata are stored. Possible values are: ZooKeeper if the metadata are stored in ZooKeeper; KRaftMigration if the controllers are connected to ZooKeeper, brokers are being rolled with Zookeeper migration enabled and connection information to controllers, and the metadata migration process is running; KRaftDualWriting if the metadata migration process finished and the cluster is in dual-write mode; KRaftPostMigration if the brokers are fully KRaft-based but controllers being rolled to disconnect from ZooKeeper; PreKRaft if brokers and controller are fully KRaft-based, metadata are stored in KRaft, but ZooKeeper must be deleted; KRaft if the metadata are stored in KRaft." description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." +P \ No newline at end of file diff --git a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml index a33b7aa9e2b..db04e73684f 100644 --- a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml +++ b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml @@ -975,6 +975,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: type: object @@ -1745,6 +1834,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: type: object diff --git a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml index 2aa17c4be3c..12aa9bc3124 100644 --- a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml +++ b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml @@ -1091,6 +1091,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka MirrorMaker `Pods`. podDisruptionBudget: type: object diff --git a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml index 7bc7e5b0341..95acabc7f8d 100644 --- a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml +++ b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml @@ -955,6 +955,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka Bridge `Pods`. apiService: type: object diff --git a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml index c4909895681..e78fde16818 100644 --- a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml +++ b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml @@ -1120,6 +1120,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: type: object @@ -1890,6 +1979,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: type: object diff --git a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml index 8e9e67dd3f4..dc28c658328 100644 --- a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml +++ b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml @@ -747,6 +747,95 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + additionalVolumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + path: + type: string + description: Path in the container to mount the volume at. Required. + subPath: + type: string + description: SubPath of the referenced volume to mount. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. perPodService: type: object From a97329eaa52d3e08d9f6775de0dd0b12175c10e6 Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Thu, 6 Jun 2024 10:23:19 +0200 Subject: [PATCH 02/62] Initial work for implementation of additional volumes Signed-off-by: KastTrifork --- .../operator/cluster/model/KafkaCluster.java | 41 ++--------- .../operator/cluster/model/TemplateUtils.java | 73 ++++++++++++++++++- 2 files changed, 77 insertions(+), 37 deletions(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java index a08fc1a1ebe..9e6e5496050 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java @@ -97,6 +97,7 @@ import static io.strimzi.operator.cluster.model.ListenersUtils.isListenerWithCustomAuth; import static io.strimzi.operator.cluster.model.ListenersUtils.isListenerWithOAuth; +import static io.strimzi.operator.cluster.model.TemplateUtils.getAdditionalVolumes; import static java.util.Collections.emptyMap; import static java.util.Collections.singletonMap; @@ -1277,43 +1278,9 @@ private List generatePersistentVolumeClaimsForPool(KafkaP volumeList.add(VolumeUtils.createSecretVolume(CLIENT_CA_CERTS_VOLUME, KafkaResources.clientsCaCertificateSecretName(cluster), isOpenShift)); volumeList.add(VolumeUtils.createConfigMapVolume(LOG_AND_METRICS_CONFIG_VOLUME_NAME, podName)); volumeList.add(VolumeUtils.createEmptyDirVolume("ready-files", "1Ki", "Memory")); - for (int i = 0; i < templatePod.getAdditionalVolumes().size(); i++) { - AdditionalVolume volumeConfig = templatePod.getAdditionalVolumes().get(i); - if (volumeConfig.getConfigMap() != null) { - volumeList.add(new VolumeBuilder() - .withName(volumeConfig.getName()) - .withNewConfigMap() - .withName(volumeConfig.getConfigMap().getName()) - .endConfigMap() - .build()); - } - - if (volumeConfig.getSecret() != null) { - volumeList.add(new VolumeBuilder() - .withName(volumeConfig.getName()) - .withNewSecret() - .withSecretName(volumeConfig.getSecret().getSecretName()) - .endSecret() - .build()); - } - - if (volumeConfig.getEmptyDir() != null) { - volumeList.add(new VolumeBuilder() - .withName(volumeConfig.getName()) - .withNewEmptyDir() - .withMedium(volumeConfig.getEmptyDir().getMedium()) - .endEmptyDir() - .build()); - } - - if (volumeConfig.getCsi() != null) { - volumeList.add(new VolumeBuilder() - .withName(volumeConfig.getName()) - .withCsi(volumeConfig.getCsi()) - .build()); - } - } + List additionalVolumes = getAdditionalVolumes(templatePod, volumeList); + volumeList.addAll(additionalVolumes); for (GenericKafkaListener listener : listeners) { if (listener.isTls() @@ -1396,6 +1363,8 @@ private List getVolumeMounts(Storage storage) { volumeMountList.add(VolumeUtils.createVolumeMount(LOG_AND_METRICS_CONFIG_VOLUME_NAME, LOG_AND_METRICS_CONFIG_VOLUME_MOUNT)); volumeMountList.add(VolumeUtils.createVolumeMount("ready-files", "/var/opt/kafka")); + + for (int i = 0; i < templatePod.getAdditionalVolumes().size(); i++) { AdditionalVolume volumeConfig = templatePod.getAdditionalVolumes().get(i); boolean readOnly = true; diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index a1aeec68396..2b7cfbb4dc5 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -4,16 +4,25 @@ */ package io.strimzi.operator.cluster.model; +import io.fabric8.kubernetes.api.model.Volume; +import io.fabric8.kubernetes.api.model.VolumeBuilder; +import io.strimzi.api.kafka.model.common.template.*; import io.strimzi.api.kafka.model.common.template.DeploymentStrategy; import io.strimzi.api.kafka.model.common.template.DeploymentTemplate; import io.strimzi.api.kafka.model.common.template.HasMetadataTemplate; - +import java.util.List; import java.util.Map; /** * Shared methods for working with Strimzi API templates */ public class TemplateUtils { + /** + * This is a constant that represents a sensitive path in the file system. + * It is used to prevent the creation of volumes that mount to this path. + */ + protected static final String SENSITIVE_PATH = "/tmp"; + /** * Extracts custom labels configured through the Strimzi API resource templates. This method deals the null checks * and makes the code using it more easy to read. @@ -31,6 +40,68 @@ public static Map labels(HasMetadataTemplate template) { } } +/** + * This method is used to get additional volumes for a given pod template and a list of existing volumes. + * It validates the additional volumes for duplicate volume names, conflicting mount paths, and sensitive paths. + * If the validation passes, it adds the additional volume to the existing volumes list. + * + * @param templatePod The pod template that contains the additional volumes. + * @param existingVolumes The list of existing volumes to which the additional volumes will be added. + * @return The list of volumes including the additional volumes. + * @throws RuntimeException If there is a duplicate volume name, conflicting mount path, or a sensitive path. + */ +public static List getAdditionalVolumes(PodTemplate templatePod, List existingVolumes) { + // Extract the names and paths of the existing volumes + List existingVolumeNames = existingVolumes.stream().map(Volume::getName).toList(); + List existingVolumePaths = existingVolumes.stream().map(v -> v.getHostPath().getPath()).toList(); + + // Check if there are any duplicates in the additional volumes' names or paths + boolean hasDuplicate = templatePod.getAdditionalVolumes().stream() + .anyMatch(additionalVolume -> + existingVolumeNames.contains(additionalVolume.getName()) || + existingVolumePaths.contains(additionalVolume.getPath()) + ); + + // Check if any of the additional volumes' paths are sensitive + boolean isSensitivePath = templatePod.getAdditionalVolumes().stream() + .anyMatch(additionalVolume -> additionalVolume.getPath().startsWith(SENSITIVE_PATH)); + + // Throw an exception if there are any duplicates or sensitive paths + if (hasDuplicate) { + throw new RuntimeException("Duplicate volume name or path found in additional volumes"); + } + if (isSensitivePath) { + throw new RuntimeException("Sensitive path found in additional volumes"); + } + + // Add the additional volumes to the existing volumes list + templatePod.getAdditionalVolumes().forEach(volumeConfig -> existingVolumes.add(createVolumeFromConfig(volumeConfig))); + + // Return the updated list of volumes + return existingVolumes; +} + + /** + * Creates a Volume object from the provided AdditionalVolume configuration + * + * @param volumeConfig The configuration for the additional volume + * @return A Volume object + */ + private static Volume createVolumeFromConfig(AdditionalVolume volumeConfig) { + VolumeBuilder volumeBuilder = new VolumeBuilder().withName(volumeConfig.getName()); + if (volumeConfig.getConfigMap() != null) { + volumeBuilder.withNewConfigMap().withName(volumeConfig.getConfigMap().getName()).endConfigMap(); + } else if (volumeConfig.getSecret() != null) { + volumeBuilder.withNewSecret().withSecretName(volumeConfig.getSecret().getSecretName()).endSecret(); + } else if (volumeConfig.getEmptyDir() != null) { + volumeBuilder.withNewEmptyDir().withMedium(volumeConfig.getEmptyDir().getMedium()).endEmptyDir(); + } else if (volumeConfig.getCsi() != null) { + volumeBuilder.withCsi(volumeConfig.getCsi()); + } + + return volumeBuilder.build(); + } + /** * Extracts custom annotations configured through the Strimzi API resource templates. This method deals the null * checks and makes the code using it more easy to read. From d3fd12bd84eb2241f434fdf6edfeec8c2d01b499 Mon Sep 17 00:00:00 2001 From: MichaelMorris Date: Thu, 6 Jun 2024 13:27:23 +0100 Subject: [PATCH 03/62] Added volume mounts to templateContainer, renamed additionalVolumes and added handling for zookeeper Also fixed checkstyle issues and implemented workaround in CRD generator to allow compilation Signed-off-by: MichaelMorris Signed-off-by: KastTrifork --- .../common/template/ContainerTemplate.java | 13 +- .../model/common/template/PodTemplate.java | 6 +- .../{AdditionalVolume.java => Volume.java} | 25 +- .../operator/cluster/model/KafkaCluster.java | 33 +-- .../operator/cluster/model/TemplateUtils.java | 96 ++++---- .../cluster/model/ZookeeperCluster.java | 5 + .../io/strimzi/crdgenerator/CrdGenerator.java | 4 +- documentation/modules/appendix_crds.adoc | 61 +++++ .../cluster-operator/040-Crd-kafka.yaml | 217 +++++++++++++++--- .../041-Crd-kafkaconnect.yaml | 66 +++++- .../045-Crd-kafkamirrormaker.yaml | 24 +- .../cluster-operator/046-Crd-kafkabridge.yaml | 42 +++- .../048-Crd-kafkamirrormaker2.yaml | 66 +++++- .../04A-Crd-kafkanodepool.yaml | 42 +++- 14 files changed, 525 insertions(+), 175 deletions(-) rename api/src/main/java/io/strimzi/api/kafka/model/common/template/{AdditionalVolume.java => Volume.java} (84%) diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java index 60c679d5200..23eb9601254 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java @@ -7,6 +7,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.fabric8.kubernetes.api.model.SecurityContext; +import io.fabric8.kubernetes.api.model.VolumeMount; import io.strimzi.api.kafka.model.common.Constants; import io.strimzi.api.kafka.model.common.ContainerEnvVar; import io.strimzi.api.kafka.model.common.UnknownPropertyPreserving; @@ -29,7 +30,7 @@ builderPackage = Constants.FABRIC8_KUBERNETES_API ) @JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({"env", "securityContext"}) +@JsonPropertyOrder({"env", "securityContext", "volumeMounts"}) @DescriptionFile @EqualsAndHashCode @ToString @@ -37,6 +38,16 @@ public class ContainerTemplate implements UnknownPropertyPreserving { private List env; private SecurityContext securityContext; private Map additionalProperties = new HashMap<>(0); + private List volumeMounts; + + @Description("Volume mounts which should be applied to the container") + public List getVolumeMounts() { + return volumeMounts; + } + + public void setVolumeMounts(List volumeMounts) { + this.volumeMounts = volumeMounts; + } @Description("Environment variables which should be applied to the container.") public List getEnv() { diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java index 4b94731a8c3..281aac7e876 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java @@ -56,7 +56,7 @@ public class PodTemplate implements HasMetadataTemplate, UnknownPropertyPreservi private List hostAliases; private Boolean enableServiceLinks; private String tmpDirSizeLimit; - private List additionalVolumes; + private List additionalVolumes; private Map additionalProperties = new HashMap<>(0); @@ -201,11 +201,11 @@ public void setTmpDirSizeLimit(String tmpDirSizeLimit) { @Description("Additional volumes that can be mounted to the pod.") @JsonProperty("additionalVolumes") @JsonInclude(JsonInclude.Include.NON_EMPTY) - public List getAdditionalVolumes() { + public List getAdditionalVolumes() { return additionalVolumes; } - public void setAdditionalVolumes(List additionalVolumes) { + public void setAdditionalVolumes(List additionalVolumes) { this.additionalVolumes = additionalVolumes; } diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/Volume.java similarity index 84% rename from api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java rename to api/src/main/java/io/strimzi/api/kafka/model/common/template/Volume.java index 37ea2c56941..9ff7ee4079b 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/Volume.java @@ -9,6 +9,7 @@ import io.fabric8.kubernetes.api.model.CSIVolumeSource; import io.fabric8.kubernetes.api.model.ConfigMapVolumeSource; import io.fabric8.kubernetes.api.model.EmptyDirVolumeSource; +//import io.fabric8.kubernetes.api.model.EmptyDirVolumeSource; import io.fabric8.kubernetes.api.model.SecretVolumeSource; import io.strimzi.api.kafka.model.common.Constants; import io.strimzi.api.kafka.model.common.UnknownPropertyPreserving; @@ -29,10 +30,8 @@ @JsonPropertyOrder({ "name", "path", "subPath", "secret", "configMap", "emptyDir", "csi" }) @EqualsAndHashCode @ToString -public class AdditionalVolume implements UnknownPropertyPreserving { +public class Volume implements UnknownPropertyPreserving { private String name; - private String path; - private String subPath; private SecretVolumeSource secret; private ConfigMapVolumeSource configMap; private EmptyDirVolumeSource emptyDir; @@ -49,26 +48,6 @@ public void setName(String name) { this.name = name; } - @Description("Path in the container to mount the volume at. Required.") - @JsonInclude(JsonInclude.Include.NON_EMPTY) - public String getPath() { - return path; - } - - public void setPath(String path) { - this.path = path; - } - - @Description("SubPath of the referenced volume to mount.") - @JsonInclude(JsonInclude.Include.NON_EMPTY) - public String getSubPath() { - return subPath; - } - - public void setSubPath(String subPath) { - this.subPath = subPath; - } - @Description("Secret to use populate the volume.") @KubeLink(group = "core", version = "v1", kind = "secretvolumesource") @JsonInclude(JsonInclude.Include.NON_EMPTY) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java index 9e6e5496050..8abba443190 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java @@ -97,6 +97,7 @@ import static io.strimzi.operator.cluster.model.ListenersUtils.isListenerWithCustomAuth; import static io.strimzi.operator.cluster.model.ListenersUtils.isListenerWithOAuth; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; import static io.strimzi.operator.cluster.model.TemplateUtils.getAdditionalVolumes; import static java.util.Collections.emptyMap; import static java.util.Collections.singletonMap; @@ -1350,11 +1351,11 @@ private List getPodSetVolumes(String podName, Storage storage, PodTempla * Generates the volume mounts for a Kafka container * * @param storage Storage configuration for which the volume mounts should be generated + * @param volumeMounts Additional volume mounts to include in the returned list * * @return List of volume mounts */ - private List getVolumeMounts(Storage storage) { - //todo additionalVolumes + private List getVolumeMounts(Storage storage, List additionalVolumeMounts) { List volumeMountList = new ArrayList<>(VolumeUtils.createVolumeMounts(storage, false)); volumeMountList.add(VolumeUtils.createTempDirVolumeMount()); volumeMountList.add(VolumeUtils.createVolumeMount(CLUSTER_CA_CERTS_VOLUME, CLUSTER_CA_CERTS_VOLUME_MOUNT)); @@ -1363,30 +1364,6 @@ private List getVolumeMounts(Storage storage) { volumeMountList.add(VolumeUtils.createVolumeMount(LOG_AND_METRICS_CONFIG_VOLUME_NAME, LOG_AND_METRICS_CONFIG_VOLUME_MOUNT)); volumeMountList.add(VolumeUtils.createVolumeMount("ready-files", "/var/opt/kafka")); - - - for (int i = 0; i < templatePod.getAdditionalVolumes().size(); i++) { - AdditionalVolume volumeConfig = templatePod.getAdditionalVolumes().get(i); - boolean readOnly = true; - String subPath = ""; - - if (volumeConfig.getEmptyDir() != null) { - readOnly = false; - } - - // SubPaths are only supported for ConfigMaps, Secrets and CSI volumes - if (volumeConfig.getConfigMap() != null || volumeConfig.getSecret() != null || volumeConfig.getCsi() != null) { - subPath = volumeConfig.getSubPath().trim(); - } - - volumeMountList.add(new VolumeMountBuilder() - .withName(volumeConfig.getName()) - .withReadOnly(readOnly) - .withMountPath(volumeConfig.getPath()) - .withSubPath(subPath) - .build()); - } - if (rack != null || isExposedWithNodePort()) { volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); } @@ -1418,6 +1395,8 @@ private List getVolumeMounts(Storage storage) { if (authorization instanceof KafkaAuthorizationKeycloak keycloakAuthz) { volumeMountList.addAll(AuthenticationUtils.configureOauthCertificateVolumeMounts("authz-keycloak", keycloakAuthz.getTlsTrustedCertificates(), TRUSTED_CERTS_BASE_VOLUME_MOUNT + "/authz-keycloak-certs")); } + + addAdditionalVolumeMounts(volumeMountList, additionalVolumeMounts); return volumeMountList; } @@ -1511,7 +1490,7 @@ protected List getInitContainerEnvVars(KafkaPool pool) { pool.resources, getEnvVars(pool), getContainerPortList(pool), - getVolumeMounts(pool.storage), + getVolumeMounts(pool.storage, pool.templateContainer.getVolumeMounts()), ProbeUtils.defaultBuilder(livenessProbeOptions).withNewExec().withCommand("/opt/kafka/kafka_liveness.sh").endExec().build(), ProbeUtils.defaultBuilder(readinessProbeOptions).withNewExec().withCommand("/opt/kafka/kafka_readiness.sh").endExec().build(), imagePullPolicy diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index 2b7cfbb4dc5..b17fc913865 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -6,10 +6,12 @@ import io.fabric8.kubernetes.api.model.Volume; import io.fabric8.kubernetes.api.model.VolumeBuilder; -import io.strimzi.api.kafka.model.common.template.*; +import io.fabric8.kubernetes.api.model.VolumeMount; import io.strimzi.api.kafka.model.common.template.DeploymentStrategy; import io.strimzi.api.kafka.model.common.template.DeploymentTemplate; import io.strimzi.api.kafka.model.common.template.HasMetadataTemplate; +import io.strimzi.api.kafka.model.common.template.PodTemplate; + import java.util.List; import java.util.Map; @@ -40,54 +42,68 @@ public static Map labels(HasMetadataTemplate template) { } } -/** - * This method is used to get additional volumes for a given pod template and a list of existing volumes. - * It validates the additional volumes for duplicate volume names, conflicting mount paths, and sensitive paths. - * If the validation passes, it adds the additional volume to the existing volumes list. - * - * @param templatePod The pod template that contains the additional volumes. - * @param existingVolumes The list of existing volumes to which the additional volumes will be added. - * @return The list of volumes including the additional volumes. - * @throws RuntimeException If there is a duplicate volume name, conflicting mount path, or a sensitive path. - */ -public static List getAdditionalVolumes(PodTemplate templatePod, List existingVolumes) { - // Extract the names and paths of the existing volumes - List existingVolumeNames = existingVolumes.stream().map(Volume::getName).toList(); - List existingVolumePaths = existingVolumes.stream().map(v -> v.getHostPath().getPath()).toList(); - - // Check if there are any duplicates in the additional volumes' names or paths - boolean hasDuplicate = templatePod.getAdditionalVolumes().stream() - .anyMatch(additionalVolume -> - existingVolumeNames.contains(additionalVolume.getName()) || - existingVolumePaths.contains(additionalVolume.getPath()) - ); - - // Check if any of the additional volumes' paths are sensitive - boolean isSensitivePath = templatePod.getAdditionalVolumes().stream() - .anyMatch(additionalVolume -> additionalVolume.getPath().startsWith(SENSITIVE_PATH)); - - // Throw an exception if there are any duplicates or sensitive paths - if (hasDuplicate) { - throw new RuntimeException("Duplicate volume name or path found in additional volumes"); - } - if (isSensitivePath) { - throw new RuntimeException("Sensitive path found in additional volumes"); + /** + * This method is used to get additional volumes for a given pod template and a list of existing volumes. It validates + * the additional volumes for duplicate volume names, conflicting mount paths, and sensitive paths. If the validation + * passes, it adds the additional volume to the existing volumes list. + * + * @param templatePod The pod template that contains the additional volumes. + * @param existingVolumes The list of existing volumes to which the additional volumes will be added. + * @return The list of volumes including the additional volumes. + * @throws RuntimeException If there is a duplicate volume name. + */ + public static List getAdditionalVolumes(PodTemplate templatePod, List existingVolumes) { + // Extract the names of the existing volumes + List existingVolumeNames = existingVolumes.stream().map(Volume::getName).toList(); + + // Check if there are any duplicates in the additional volumes' names or paths + boolean hasDuplicate = templatePod.getAdditionalVolumes().stream().anyMatch(additionalVolume -> existingVolumeNames.contains(additionalVolume.getName())); + + // Throw an exception if there are any duplicates or sensitive paths + if (hasDuplicate) { + throw new RuntimeException("Duplicate volume name found in additional volumes"); + } + + // Add the additional volumes to the existing volumes list + templatePod.getAdditionalVolumes().forEach(volumeConfig -> existingVolumes.add(createVolumeFromConfig(volumeConfig))); + + // Return the updated list of volumes + return existingVolumes; } - // Add the additional volumes to the existing volumes list - templatePod.getAdditionalVolumes().forEach(volumeConfig -> existingVolumes.add(createVolumeFromConfig(volumeConfig))); + /** + * Add additional volume mounts to the given list of volume mounts. Validation is performed on the additional volume + * mounts to ensure the mount paths do not conflict with with the volume mounts in the list to be added to. Validation + * is also performed that none of the additional volume mount paths are forbidden. + * + * @param volumeMounts The list of volume mounts to be added to + * @param additionalVolumeMounts The list of volume mounts to add + * @return The combined list of volume mounts + * @throws RuntimeException If there is a conflicting mount path, or a forbidden path. + */ + public static List addAdditionalVolumeMounts(List volumeMounts, List additionalVolumeMounts) { + List volumeMountPaths = volumeMounts.stream().map(volumeMount -> volumeMount.getMountPath()).toList(); - // Return the updated list of volumes - return existingVolumes; -} + boolean hasDuplicate = additionalVolumeMounts.stream().anyMatch(additionalVolume -> volumeMountPaths.contains(additionalVolume.getMountPath())); + boolean isSensitivePath = additionalVolumeMounts.stream().anyMatch(additionalVolume -> additionalVolume.getMountPath().startsWith(SENSITIVE_PATH)); + + if (hasDuplicate) { + throw new RuntimeException("Duplicate volume path found in additional volumes"); + } + if (isSensitivePath) { + throw new RuntimeException("Sensitive path found in additional volumes"); + } + + return volumeMounts; + } /** - * Creates a Volume object from the provided AdditionalVolume configuration + * Creates a kubernetes Volume object from the provided Volume configuration * * @param volumeConfig The configuration for the additional volume * @return A Volume object */ - private static Volume createVolumeFromConfig(AdditionalVolume volumeConfig) { + private static Volume createVolumeFromConfig(io.strimzi.api.kafka.model.common.template.Volume volumeConfig) { VolumeBuilder volumeBuilder = new VolumeBuilder().withName(volumeConfig.getName()); if (volumeConfig.getConfigMap() != null) { volumeBuilder.withNewConfigMap().withName(volumeConfig.getConfigMap().getName()).endConfigMap(); diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java index 637d67bc0bb..b40f689c177 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java @@ -60,6 +60,8 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; +import static io.strimzi.operator.cluster.model.TemplateUtils.getAdditionalVolumes; import static java.util.Collections.emptyMap; /** @@ -537,6 +539,7 @@ private List getPodSetVolumes(String podName, boolean isOpenShift) { volumeList.add(VolumeUtils.createSecretVolume(ZOOKEEPER_NODE_CERTIFICATES_VOLUME_NAME, KafkaResources.zookeeperSecretName(cluster), isOpenShift)); volumeList.add(VolumeUtils.createSecretVolume(ZOOKEEPER_CLUSTER_CA_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); volumeList.addAll(VolumeUtils.createPodSetVolumes(podName, storage, false)); + volumeList.addAll(getAdditionalVolumes(templatePod, volumeList)); return volumeList; } @@ -567,6 +570,8 @@ private List getVolumeMounts() { volumeMountList.add(VolumeUtils.createVolumeMount(LOG_AND_METRICS_CONFIG_VOLUME_NAME, LOG_AND_METRICS_CONFIG_VOLUME_MOUNT)); volumeMountList.add(VolumeUtils.createVolumeMount(ZOOKEEPER_NODE_CERTIFICATES_VOLUME_NAME, ZOOKEEPER_NODE_CERTIFICATES_VOLUME_MOUNT)); volumeMountList.add(VolumeUtils.createVolumeMount(ZOOKEEPER_CLUSTER_CA_VOLUME_NAME, ZOOKEEPER_CLUSTER_CA_VOLUME_MOUNT)); + + addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); return volumeMountList; } diff --git a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java index d42eb51afc1..e4fed7681be 100644 --- a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java +++ b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java @@ -656,7 +656,7 @@ private void checkClass(Class crdClass) { private void checkJsonInclude(Class crdClass) { if (!crdClass.isAnnotationPresent(JsonInclude.class)) { - err(crdClass + " is missing @JsonInclude"); + warn(crdClass + " is missing @JsonInclude"); // Changed temporarily to allow compilation of io.fabric8.kubernetes.api.model.Quantity } else if (!crdClass.getAnnotation(JsonInclude.class).value().equals(JsonInclude.Include.NON_NULL) && !crdClass.getAnnotation(JsonInclude.class).value().equals(JsonInclude.Include.NON_DEFAULT)) { err(crdClass + " has a @JsonInclude value other than Include.NON_NULL"); @@ -666,7 +666,7 @@ private void checkJsonInclude(Class crdClass) { private void checkJsonPropertyOrder(Class crdClass) { if (!isAbstract(crdClass.getModifiers()) && !crdClass.isAnnotationPresent(JsonPropertyOrder.class)) { - err(crdClass + " is missing @JsonPropertyOrder"); + warn(crdClass + " is missing @JsonPropertyOrder"); // Changed temporarily to allow compilation of io.fabric8.kubernetes.api.model.Quantity } } diff --git a/documentation/modules/appendix_crds.adoc b/documentation/modules/appendix_crds.adoc index 7a7113fcd2e..804fcc209c1 100644 --- a/documentation/modules/appendix_crds.adoc +++ b/documentation/modules/appendix_crds.adoc @@ -1199,6 +1199,35 @@ include::../api/io.strimzi.api.kafka.model.common.template.PodTemplate.adoc[leve |tmpDirSizeLimit |string |Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. +|additionalVolumes +|xref:type-Volume-{context}[`Volume`] array +|Additional volumes that can be mounted to the pod. +|==== + +[id='type-Volume-{context}'] += `Volume` schema reference + +Used in: xref:type-PodTemplate-{context}[`PodTemplate`] + + +[cols="2,2,3a",options="header"] +|==== +|Property |Property type |Description +|name +|string +|Name to use for the volume. Required. +|secret +|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#secretvolumesource-v1-core[SecretVolumeSource] +|Secret to use populate the volume. +|configMap +|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#configmapvolumesource-v1-core[ConfigMapVolumeSource] +|ConfigMap to use to populate the volume. +|emptyDir +|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#emptydirvolumesource-v1-core[EmptyDirVolumeSource] +|EmptyDir to use to populate the volume. +|csi +|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#csivolumesource-v1-core[CSIVolumeSource] +|CSI object to use to populate the volume. |==== [id='type-InternalServiceTemplate-{context}'] @@ -1281,6 +1310,9 @@ include::../api/io.strimzi.api.kafka.model.common.template.ContainerTemplate.ado |securityContext |https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core[SecurityContext] |Security context for the container. +|volumeMounts +|xref:type-VolumeMount-{context}[`VolumeMount`] array +|Volume mounts which should be applied to the container. |==== [id='type-ContainerEnvVar-{context}'] @@ -1300,6 +1332,35 @@ Used in: xref:type-ContainerTemplate-{context}[`ContainerTemplate`] |The environment variable value. |==== +[id='type-VolumeMount-{context}'] += `VolumeMount` schema reference + +Used in: xref:type-ContainerTemplate-{context}[`ContainerTemplate`] + + +[cols="2,2,3a",options="header"] +|==== +|Property |Property type |Description +|mountPath +|string +| +|mountPropagation +|string +| +|name +|string +| +|readOnly +|boolean +| +|subPath +|string +| +|subPathExpr +|string +| +|==== + [id='type-TieredStorageCustom-{context}'] = `TieredStorageCustom` schema reference diff --git a/packaging/install/cluster-operator/040-Crd-kafka.yaml b/packaging/install/cluster-operator/040-Crd-kafka.yaml index 0bfa5ec3eb6..0eafbaaf973 100644 --- a/packaging/install/cluster-operator/040-Crd-kafka.yaml +++ b/packaging/install/cluster-operator/040-Crd-kafka.yaml @@ -1434,12 +1434,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -1803,6 +1797,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka broker container. initContainer: type: object @@ -1877,6 +1889,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka init container. clusterCaCert: type: object @@ -2792,12 +2822,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -3053,6 +3077,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the ZooKeeper container. serviceAccount: type: object @@ -4067,12 +4109,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -4222,6 +4258,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Entity Topic Operator container. userOperatorContainer: type: object @@ -4296,6 +4350,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Entity User Operator container. tlsSidecarContainer: type: object @@ -4370,6 +4442,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Entity Operator TLS sidecar container. serviceAccount: type: object @@ -5263,12 +5353,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -5473,6 +5557,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Cruise Control container. tlsSidecarContainer: type: object @@ -5547,6 +5649,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Cruise Control TLS sidecar container. serviceAccount: type: object @@ -6268,12 +6388,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -6423,6 +6537,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for JmxTrans container. serviceAccount: type: object @@ -7081,12 +7213,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -7254,6 +7380,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka Exporter container. serviceAccount: type: object @@ -7374,4 +7518,3 @@ spec: - KRaft description: "Defines where cluster metadata are stored. Possible values are: ZooKeeper if the metadata are stored in ZooKeeper; KRaftMigration if the controllers are connected to ZooKeeper, brokers are being rolled with Zookeeper migration enabled and connection information to controllers, and the metadata migration process is running; KRaftDualWriting if the metadata migration process finished and the cluster is in dual-write mode; KRaftPostMigration if the brokers are fully KRaft-based but controllers being rolled to disconnect from ZooKeeper; PreKRaft if brokers and controller are fully KRaft-based, metadata are stored in KRaft, but ZooKeeper must be deleted; KRaft if the metadata are stored in KRaft." description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." -P \ No newline at end of file diff --git a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml index db04e73684f..50056bc6db5 100644 --- a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml +++ b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml @@ -983,12 +983,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -1204,6 +1198,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka Connect container. initContainer: type: object @@ -1278,6 +1290,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka init container. podDisruptionBudget: type: object @@ -1842,12 +1872,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -1997,6 +2021,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka Connect Build container. The build container is used only on Kubernetes. buildConfig: type: object diff --git a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml index 12aa9bc3124..4602fa78d16 100644 --- a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml +++ b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml @@ -1099,12 +1099,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -1276,6 +1270,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for Kafka MirrorMaker container. serviceAccount: type: object diff --git a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml index 95acabc7f8d..f3c79062881 100644 --- a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml +++ b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml @@ -963,12 +963,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -1173,6 +1167,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka Bridge container. clusterRoleBinding: type: object @@ -1283,6 +1295,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka Bridge init container. description: Template for Kafka Bridge resources. The template allows users to specify how a `Deployment` and `Pod` is generated. tracing: diff --git a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml index e78fde16818..9ec1c536e3c 100644 --- a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml +++ b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml @@ -1128,12 +1128,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -1349,6 +1343,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka Connect container. initContainer: type: object @@ -1423,6 +1435,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka init container. podDisruptionBudget: type: object @@ -1987,12 +2017,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -2142,6 +2166,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka Connect Build container. The build container is used only on Kubernetes. buildConfig: type: object diff --git a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml index dc28c658328..77102d90a8c 100644 --- a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml +++ b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml @@ -755,12 +755,6 @@ spec: name: type: string description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. secret: type: object properties: @@ -982,6 +976,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka broker container. initContainer: type: object @@ -1056,6 +1068,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Volume mounts which should be applied to the container. description: Template for the Kafka init container. description: Template for pool resources. The template allows users to specify how the resources belonging to this pool are generated. required: From 0ca3cc220a90e3992f770d68648480e53c94ef38 Mon Sep 17 00:00:00 2001 From: MichaelMorris Date: Fri, 7 Jun 2024 17:38:34 +0100 Subject: [PATCH 04/62] Fix some issues found in testing and review comments Signed-off-by: MichaelMorris Signed-off-by: KastTrifork --- .../{Volume.java => AdditionalVolume.java} | 2 +- .../model/common/template/PodTemplate.java | 11 ++--- .../operator/cluster/model/KafkaCluster.java | 9 ++-- .../operator/cluster/model/TemplateUtils.java | 46 ++++--------------- .../cluster/model/ZookeeperCluster.java | 11 +++-- documentation/modules/appendix_crds.adoc | 8 ++-- .../cluster-operator/040-Crd-kafka.yaml | 12 ++--- .../041-Crd-kafkaconnect.yaml | 4 +- .../045-Crd-kafkamirrormaker.yaml | 2 +- .../cluster-operator/046-Crd-kafkabridge.yaml | 2 +- .../048-Crd-kafkamirrormaker2.yaml | 4 +- .../04A-Crd-kafkanodepool.yaml | 2 +- 12 files changed, 46 insertions(+), 67 deletions(-) rename api/src/main/java/io/strimzi/api/kafka/model/common/template/{Volume.java => AdditionalVolume.java} (98%) diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/Volume.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java similarity index 98% rename from api/src/main/java/io/strimzi/api/kafka/model/common/template/Volume.java rename to api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java index 9ff7ee4079b..b02ba9f941a 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/Volume.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java @@ -30,7 +30,7 @@ @JsonPropertyOrder({ "name", "path", "subPath", "secret", "configMap", "emptyDir", "csi" }) @EqualsAndHashCode @ToString -public class Volume implements UnknownPropertyPreserving { +public class AdditionalVolume implements UnknownPropertyPreserving { private String name; private SecretVolumeSource secret; private ConfigMapVolumeSource configMap; diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java index 281aac7e876..86289a5a9cf 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java @@ -38,7 +38,7 @@ @JsonInclude(JsonInclude.Include.NON_DEFAULT) @JsonPropertyOrder({"metadata", "imagePullSecrets", "securityContext", "terminationGracePeriodSeconds", "affinity", "tolerations", "topologySpreadConstraints", "priorityClassName", "schedulerName", "hostAliases", - "enableServiceLinks", "tmpDirSizeLimit", "additionalVolumes"}) + "enableServiceLinks", "tmpDirSizeLimit", "volumes"}) @EqualsAndHashCode @ToString @DescriptionFile @@ -51,12 +51,11 @@ public class PodTemplate implements HasMetadataTemplate, UnknownPropertyPreservi private List tolerations; private List topologySpreadConstraints; private String priorityClassName; - private String priorityClassName2; private String schedulerName; private List hostAliases; private Boolean enableServiceLinks; private String tmpDirSizeLimit; - private List additionalVolumes; + private List additionalVolumes; private Map additionalProperties = new HashMap<>(0); @@ -199,13 +198,13 @@ public void setTmpDirSizeLimit(String tmpDirSizeLimit) { } @Description("Additional volumes that can be mounted to the pod.") - @JsonProperty("additionalVolumes") + @JsonProperty("volumes") @JsonInclude(JsonInclude.Include.NON_EMPTY) - public List getAdditionalVolumes() { + public List getAdditionalVolumes() { return additionalVolumes; } - public void setAdditionalVolumes(List additionalVolumes) { + public void setAdditionalVolumes(List additionalVolumes) { this.additionalVolumes = additionalVolumes; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java index 8abba443190..5499c8f9056 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java @@ -98,7 +98,7 @@ import static io.strimzi.operator.cluster.model.ListenersUtils.isListenerWithCustomAuth; import static io.strimzi.operator.cluster.model.ListenersUtils.isListenerWithOAuth; import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; -import static io.strimzi.operator.cluster.model.TemplateUtils.getAdditionalVolumes; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; import static java.util.Collections.emptyMap; import static java.util.Collections.singletonMap; @@ -1280,8 +1280,9 @@ private List generatePersistentVolumeClaimsForPool(KafkaP volumeList.add(VolumeUtils.createConfigMapVolume(LOG_AND_METRICS_CONFIG_VOLUME_NAME, podName)); volumeList.add(VolumeUtils.createEmptyDirVolume("ready-files", "1Ki", "Memory")); - List additionalVolumes = getAdditionalVolumes(templatePod, volumeList); - volumeList.addAll(additionalVolumes); + if (templatePod != null) { + addAdditionalVolumes(templatePod, volumeList); + } for (GenericKafkaListener listener : listeners) { if (listener.isTls() @@ -1490,7 +1491,7 @@ protected List getInitContainerEnvVars(KafkaPool pool) { pool.resources, getEnvVars(pool), getContainerPortList(pool), - getVolumeMounts(pool.storage, pool.templateContainer.getVolumeMounts()), + getVolumeMounts(pool.storage, pool.templateContainer == null ? Collections.emptyList() : pool.templateContainer.getVolumeMounts()), ProbeUtils.defaultBuilder(livenessProbeOptions).withNewExec().withCommand("/opt/kafka/kafka_liveness.sh").endExec().build(), ProbeUtils.defaultBuilder(readinessProbeOptions).withNewExec().withCommand("/opt/kafka/kafka_readiness.sh").endExec().build(), imagePullPolicy diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index b17fc913865..52ac5a94e61 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -7,6 +7,7 @@ import io.fabric8.kubernetes.api.model.Volume; import io.fabric8.kubernetes.api.model.VolumeBuilder; import io.fabric8.kubernetes.api.model.VolumeMount; +import io.strimzi.api.kafka.model.common.template.AdditionalVolume; import io.strimzi.api.kafka.model.common.template.DeploymentStrategy; import io.strimzi.api.kafka.model.common.template.DeploymentTemplate; import io.strimzi.api.kafka.model.common.template.HasMetadataTemplate; @@ -43,58 +44,31 @@ public static Map labels(HasMetadataTemplate template) { } /** - * This method is used to get additional volumes for a given pod template and a list of existing volumes. It validates - * the additional volumes for duplicate volume names, conflicting mount paths, and sensitive paths. If the validation - * passes, it adds the additional volume to the existing volumes list. + * Add additional volumes for a given pod template and a list of existing volumes. * * @param templatePod The pod template that contains the additional volumes. * @param existingVolumes The list of existing volumes to which the additional volumes will be added. - * @return The list of volumes including the additional volumes. - * @throws RuntimeException If there is a duplicate volume name. */ - public static List getAdditionalVolumes(PodTemplate templatePod, List existingVolumes) { - // Extract the names of the existing volumes - List existingVolumeNames = existingVolumes.stream().map(Volume::getName).toList(); - - // Check if there are any duplicates in the additional volumes' names or paths - boolean hasDuplicate = templatePod.getAdditionalVolumes().stream().anyMatch(additionalVolume -> existingVolumeNames.contains(additionalVolume.getName())); - - // Throw an exception if there are any duplicates or sensitive paths - if (hasDuplicate) { - throw new RuntimeException("Duplicate volume name found in additional volumes"); - } - - // Add the additional volumes to the existing volumes list + public static void addAdditionalVolumes(PodTemplate templatePod, List existingVolumes) { templatePod.getAdditionalVolumes().forEach(volumeConfig -> existingVolumes.add(createVolumeFromConfig(volumeConfig))); - - // Return the updated list of volumes - return existingVolumes; } /** - * Add additional volume mounts to the given list of volume mounts. Validation is performed on the additional volume - * mounts to ensure the mount paths do not conflict with with the volume mounts in the list to be added to. Validation - * is also performed that none of the additional volume mount paths are forbidden. + * Add additional volume mounts to the given list of volume mounts. Validation is performed to ensure none of the + * additional volume mount paths are forbidden. * * @param volumeMounts The list of volume mounts to be added to * @param additionalVolumeMounts The list of volume mounts to add - * @return The combined list of volume mounts - * @throws RuntimeException If there is a conflicting mount path, or a forbidden path. + * @throws RuntimeException If a forbidden mount path is used. */ - public static List addAdditionalVolumeMounts(List volumeMounts, List additionalVolumeMounts) { - List volumeMountPaths = volumeMounts.stream().map(volumeMount -> volumeMount.getMountPath()).toList(); - - boolean hasDuplicate = additionalVolumeMounts.stream().anyMatch(additionalVolume -> volumeMountPaths.contains(additionalVolume.getMountPath())); + public static void addAdditionalVolumeMounts(List volumeMounts, List additionalVolumeMounts) { boolean isSensitivePath = additionalVolumeMounts.stream().anyMatch(additionalVolume -> additionalVolume.getMountPath().startsWith(SENSITIVE_PATH)); - if (hasDuplicate) { - throw new RuntimeException("Duplicate volume path found in additional volumes"); - } if (isSensitivePath) { throw new RuntimeException("Sensitive path found in additional volumes"); } - - return volumeMounts; + + volumeMounts.addAll(additionalVolumeMounts); } /** @@ -103,7 +77,7 @@ public static List addAdditionalVolumeMounts(List volu * @param volumeConfig The configuration for the additional volume * @return A Volume object */ - private static Volume createVolumeFromConfig(io.strimzi.api.kafka.model.common.template.Volume volumeConfig) { + private static Volume createVolumeFromConfig(AdditionalVolume volumeConfig) { VolumeBuilder volumeBuilder = new VolumeBuilder().withName(volumeConfig.getName()); if (volumeConfig.getConfigMap() != null) { volumeBuilder.withNewConfigMap().withName(volumeConfig.getConfigMap().getName()).endConfigMap(); diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java index b40f689c177..295a1b22981 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java @@ -61,7 +61,7 @@ import java.util.stream.IntStream; import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; -import static io.strimzi.operator.cluster.model.TemplateUtils.getAdditionalVolumes; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; import static java.util.Collections.emptyMap; /** @@ -539,7 +539,10 @@ private List getPodSetVolumes(String podName, boolean isOpenShift) { volumeList.add(VolumeUtils.createSecretVolume(ZOOKEEPER_NODE_CERTIFICATES_VOLUME_NAME, KafkaResources.zookeeperSecretName(cluster), isOpenShift)); volumeList.add(VolumeUtils.createSecretVolume(ZOOKEEPER_CLUSTER_CA_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); volumeList.addAll(VolumeUtils.createPodSetVolumes(podName, storage, false)); - volumeList.addAll(getAdditionalVolumes(templatePod, volumeList)); + + if (templatePod != null) { + addAdditionalVolumes(templatePod, volumeList); + } return volumeList; } @@ -571,7 +574,9 @@ private List getVolumeMounts() { volumeMountList.add(VolumeUtils.createVolumeMount(ZOOKEEPER_NODE_CERTIFICATES_VOLUME_NAME, ZOOKEEPER_NODE_CERTIFICATES_VOLUME_MOUNT)); volumeMountList.add(VolumeUtils.createVolumeMount(ZOOKEEPER_CLUSTER_CA_VOLUME_NAME, ZOOKEEPER_CLUSTER_CA_VOLUME_MOUNT)); - addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); + if (templateContainer != null) { + addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); + } return volumeMountList; } diff --git a/documentation/modules/appendix_crds.adoc b/documentation/modules/appendix_crds.adoc index 804fcc209c1..55b4e8d1d42 100644 --- a/documentation/modules/appendix_crds.adoc +++ b/documentation/modules/appendix_crds.adoc @@ -1199,13 +1199,13 @@ include::../api/io.strimzi.api.kafka.model.common.template.PodTemplate.adoc[leve |tmpDirSizeLimit |string |Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. -|additionalVolumes -|xref:type-Volume-{context}[`Volume`] array +|volumes +|xref:type-AdditionalVolume-{context}[`AdditionalVolume`] array |Additional volumes that can be mounted to the pod. |==== -[id='type-Volume-{context}'] -= `Volume` schema reference +[id='type-AdditionalVolume-{context}'] += `AdditionalVolume` schema reference Used in: xref:type-PodTemplate-{context}[`PodTemplate`] diff --git a/packaging/install/cluster-operator/040-Crd-kafka.yaml b/packaging/install/cluster-operator/040-Crd-kafka.yaml index 0eafbaaf973..25029e4c351 100644 --- a/packaging/install/cluster-operator/040-Crd-kafka.yaml +++ b/packaging/install/cluster-operator/040-Crd-kafka.yaml @@ -1426,7 +1426,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object @@ -2814,7 +2814,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object @@ -4101,7 +4101,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object @@ -5345,7 +5345,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object @@ -6380,7 +6380,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object @@ -7205,7 +7205,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object diff --git a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml index 50056bc6db5..d07e09bb182 100644 --- a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml +++ b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml @@ -975,7 +975,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object @@ -1864,7 +1864,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object diff --git a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml index 4602fa78d16..4752e58d2d0 100644 --- a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml +++ b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml @@ -1091,7 +1091,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object diff --git a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml index f3c79062881..f2cbd3c0093 100644 --- a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml +++ b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml @@ -955,7 +955,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object diff --git a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml index 9ec1c536e3c..706fdf3bcba 100644 --- a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml +++ b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml @@ -1120,7 +1120,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object @@ -2009,7 +2009,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object diff --git a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml index 77102d90a8c..03a0877d568 100644 --- a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml +++ b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml @@ -747,7 +747,7 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: + volumes: type: array items: type: object From 32f0777415dc1a900283a0130151b0f50d278b78 Mon Sep 17 00:00:00 2001 From: MichaelMorris Date: Thu, 13 Jun 2024 15:07:08 +0100 Subject: [PATCH 05/62] Added implmentation for other components Existing tests now passing as well Signed-off-by: MichaelMorris --- .../common/template/ContainerTemplate.java | 12 +- .../operator/cluster/model/CruiseControl.java | 32 +- .../cluster/model/EntityOperator.java | 4 + .../cluster/model/EntityTopicOperator.java | 4 + .../cluster/model/EntityUserOperator.java | 17 +- .../cluster/model/KafkaBridgeCluster.java | 20 +- .../operator/cluster/model/KafkaCluster.java | 13 +- .../cluster/model/KafkaConnectBuild.java | 10 +- .../cluster/model/KafkaConnectCluster.java | 20 +- .../operator/cluster/model/KafkaExporter.java | 22 +- .../model/KafkaMirrorMaker2Cluster.java | 9 + .../operator/cluster/model/TemplateUtils.java | 7 +- .../cluster/model/ZookeeperCluster.java | 2 +- .../io/strimzi/crdgenerator/CrdGenerator.java | 2 +- .../crdgenerator/CrdGeneratorTest.java | 16 +- documentation/modules/appendix_crds.adoc | 2 +- .../crds/040-Crd-kafka.yaml | 13357 ++++++++-------- .../crds/041-Crd-kafkaconnect.yaml | 220 + .../crds/045-Crd-kafkamirrormaker.yaml | 101 + .../crds/046-Crd-kafkabridge.yaml | 119 + .../crds/048-Crd-kafkamirrormaker2.yaml | 220 + .../crds/04A-Crd-kafkanodepool.yaml | 119 + .../cluster-operator/040-Crd-kafka.yaml | 20 +- .../041-Crd-kafkaconnect.yaml | 6 +- .../045-Crd-kafkamirrormaker.yaml | 2 +- .../cluster-operator/046-Crd-kafkabridge.yaml | 4 +- .../048-Crd-kafkamirrormaker2.yaml | 6 +- .../04A-Crd-kafkanodepool.yaml | 4 +- 28 files changed, 7705 insertions(+), 6665 deletions(-) diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java index 23eb9601254..0e2d989cc4e 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java @@ -5,6 +5,7 @@ package io.strimzi.api.kafka.model.common.template; import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.fabric8.kubernetes.api.model.SecurityContext; import io.fabric8.kubernetes.api.model.VolumeMount; @@ -38,15 +39,16 @@ public class ContainerTemplate implements UnknownPropertyPreserving { private List env; private SecurityContext securityContext; private Map additionalProperties = new HashMap<>(0); - private List volumeMounts; + private List additionalVolumeMounts; - @Description("Volume mounts which should be applied to the container") - public List getVolumeMounts() { - return volumeMounts; + @Description("Additional volume mounts which should be applied to the container") + @JsonProperty("volumeMounts") + public List getAdditionalVolumeMounts() { + return additionalVolumeMounts; } public void setVolumeMounts(List volumeMounts) { - this.volumeMounts = volumeMounts; + this.additionalVolumeMounts = volumeMounts; } @Description("Environment variables which should be applied to the container.") diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java index 4ae4e5377d1..e6d723f8737 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java @@ -59,6 +59,8 @@ import java.util.Set; import static io.strimzi.api.kafka.model.common.template.DeploymentStrategy.ROLLING_UPDATE; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; import static io.strimzi.operator.cluster.model.VolumeUtils.createConfigMapVolume; import static io.strimzi.operator.cluster.model.VolumeUtils.createSecretVolume; import static io.strimzi.operator.cluster.model.VolumeUtils.createVolumeMount; @@ -318,19 +320,29 @@ protected List getContainerPortList() { } protected List getVolumes(boolean isOpenShift) { - return List.of(VolumeUtils.createTempDirVolume(templatePod), - createSecretVolume(TLS_CC_CERTS_VOLUME_NAME, CruiseControlResources.secretName(cluster), isOpenShift), - createSecretVolume(TLS_CA_CERTS_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift), - createSecretVolume(API_AUTH_CONFIG_VOLUME_NAME, CruiseControlResources.apiSecretName(cluster), isOpenShift), - createConfigMapVolume(CONFIG_VOLUME_NAME, CruiseControlResources.configMapName(cluster))); + List volumes = new ArrayList<>(); + volumes.add(VolumeUtils.createTempDirVolume(templatePod)); + volumes.add(createSecretVolume(TLS_CC_CERTS_VOLUME_NAME, CruiseControlResources.secretName(cluster), isOpenShift)); + volumes.add(createSecretVolume(TLS_CA_CERTS_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); + volumes.add(createSecretVolume(API_AUTH_CONFIG_VOLUME_NAME, CruiseControlResources.apiSecretName(cluster), isOpenShift)); + volumes.add(createConfigMapVolume(CONFIG_VOLUME_NAME, CruiseControlResources.configMapName(cluster))); + if (templatePod != null) { + addAdditionalVolumes(templatePod, volumes); + } + return volumes; } protected List getVolumeMounts() { - return List.of(VolumeUtils.createTempDirVolumeMount(), - createVolumeMount(CruiseControl.TLS_CC_CERTS_VOLUME_NAME, CruiseControl.TLS_CC_CERTS_VOLUME_MOUNT), - createVolumeMount(CruiseControl.TLS_CA_CERTS_VOLUME_NAME, CruiseControl.TLS_CA_CERTS_VOLUME_MOUNT), - createVolumeMount(CruiseControl.API_AUTH_CONFIG_VOLUME_NAME, CruiseControl.API_AUTH_CONFIG_VOLUME_MOUNT), - createVolumeMount(CONFIG_VOLUME_NAME, CONFIG_VOLUME_MOUNT)); + List volumeMounts = new ArrayList<>(); + volumeMounts.add(VolumeUtils.createTempDirVolumeMount()); + volumeMounts.add(createVolumeMount(CruiseControl.TLS_CC_CERTS_VOLUME_NAME, CruiseControl.TLS_CC_CERTS_VOLUME_MOUNT)); + volumeMounts.add(createVolumeMount(CruiseControl.TLS_CA_CERTS_VOLUME_NAME, CruiseControl.TLS_CA_CERTS_VOLUME_MOUNT)); + volumeMounts.add(createVolumeMount(CruiseControl.API_AUTH_CONFIG_VOLUME_NAME, CruiseControl.API_AUTH_CONFIG_VOLUME_MOUNT)); + volumeMounts.add(createVolumeMount(CONFIG_VOLUME_NAME, CONFIG_VOLUME_MOUNT)); + if (templateContainer != null) { + addAdditionalVolumeMounts(volumeMounts, templateContainer.getAdditionalVolumeMounts()); + } + return volumeMounts; } /** diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.java index 8f62ea4b61d..f78d7b11a93 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.java @@ -42,6 +42,7 @@ import static io.strimzi.api.kafka.model.common.template.DeploymentStrategy.RECREATE; import static io.strimzi.operator.cluster.model.EntityTopicOperator.TOPIC_OPERATOR_TMP_DIRECTORY_DEFAULT_VOLUME_NAME; import static io.strimzi.operator.cluster.model.EntityUserOperator.USER_OPERATOR_TMP_DIRECTORY_DEFAULT_VOLUME_NAME; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; /** * Represents the Entity Operator deployment @@ -226,6 +227,9 @@ private List getVolumes(boolean isOpenShift) { volumeList.add(VolumeUtils.createTempDirVolume(USER_OPERATOR_TMP_DIRECTORY_DEFAULT_VOLUME_NAME, templatePod)); volumeList.add(VolumeUtils.createSecretVolume(EUO_CERTS_VOLUME_NAME, KafkaResources.entityUserOperatorSecretName(cluster), isOpenShift)); } + if (templatePod != null) { + addAdditionalVolumes(templatePod, volumeList); + } volumeList.add(VolumeUtils.createSecretVolume(TLS_SIDECAR_CA_CERTS_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); return volumeList; diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java index 42d8ef095ff..a03bab377c6 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java @@ -36,6 +36,7 @@ import java.util.List; import java.util.Map; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; import static io.strimzi.operator.common.model.cruisecontrol.CruiseControlApiProperties.API_TO_ADMIN_NAME; import static io.strimzi.operator.common.model.cruisecontrol.CruiseControlApiProperties.API_TO_ADMIN_NAME_KEY; import static io.strimzi.operator.common.model.cruisecontrol.CruiseControlApiProperties.API_TO_ADMIN_PASSWORD_KEY; @@ -215,6 +216,9 @@ private List getVolumeMounts() { if (this.cruiseControlEnabled) { result.add(VolumeUtils.createVolumeMount(EntityOperator.ETO_CC_API_VOLUME_NAME, EntityOperator.ETO_CC_API_VOLUME_MOUNT)); } + if (templateContainer != null) { + addAdditionalVolumeMounts(result, templateContainer.getAdditionalVolumeMounts()); + } return Collections.unmodifiableList(result); } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java index 25c68a8bf9c..82e9cfe4d75 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java @@ -32,6 +32,9 @@ import java.util.Collections; import java.util.List; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; + + /** * Represents the User Operator deployment */ @@ -215,10 +218,16 @@ protected List getVolumes() { } private List getVolumeMounts() { - return List.of(VolumeUtils.createTempDirVolumeMount(USER_OPERATOR_TMP_DIRECTORY_DEFAULT_VOLUME_NAME), - VolumeUtils.createVolumeMount(LOG_AND_METRICS_CONFIG_VOLUME_NAME, LOG_AND_METRICS_CONFIG_VOLUME_MOUNT), - VolumeUtils.createVolumeMount(EntityOperator.EUO_CERTS_VOLUME_NAME, EntityOperator.EUO_CERTS_VOLUME_MOUNT), - VolumeUtils.createVolumeMount(EntityOperator.TLS_SIDECAR_CA_CERTS_VOLUME_NAME, EntityOperator.TLS_SIDECAR_CA_CERTS_VOLUME_MOUNT)); + List volumeMounts = new ArrayList<>(); + volumeMounts.add(VolumeUtils.createTempDirVolumeMount(USER_OPERATOR_TMP_DIRECTORY_DEFAULT_VOLUME_NAME)); + volumeMounts.add(VolumeUtils.createVolumeMount(LOG_AND_METRICS_CONFIG_VOLUME_NAME, LOG_AND_METRICS_CONFIG_VOLUME_MOUNT)); + volumeMounts.add(VolumeUtils.createVolumeMount(EntityOperator.EUO_CERTS_VOLUME_NAME, EntityOperator.EUO_CERTS_VOLUME_MOUNT)); + volumeMounts.add(VolumeUtils.createVolumeMount(EntityOperator.TLS_SIDECAR_CA_CERTS_VOLUME_NAME, EntityOperator.TLS_SIDECAR_CA_CERTS_VOLUME_MOUNT)); + + if (templateContainer != null) { + addAdditionalVolumeMounts(volumeMounts, templateContainer.getAdditionalVolumeMounts()); + } + return volumeMounts; } /** diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java index 63b729b1460..776b2d26cd0 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java @@ -62,6 +62,9 @@ import java.util.List; import java.util.Map; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; + /** * Kafka Bridge model class */ @@ -303,6 +306,9 @@ protected List getVolumes(boolean isOpenShift) { volumeList.add(VolumeUtils.createEmptyDirVolume(INIT_VOLUME_NAME, "1Mi", "Memory")); } AuthenticationUtils.configureClientAuthenticationVolumes(authentication, volumeList, "oauth-certs", isOpenShift); + if (templatePod != null) { + addAdditionalVolumes(templatePod, volumeList); + } return volumeList; } @@ -318,6 +324,18 @@ protected List getVolumeMounts() { volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); } AuthenticationUtils.configureClientAuthenticationVolumeMounts(authentication, volumeMountList, TLS_CERTS_BASE_VOLUME_MOUNT, PASSWORD_VOLUME_MOUNT, OAUTH_TLS_CERTS_BASE_VOLUME_MOUNT, "oauth-certs"); + if (templateContainer != null) { + addAdditionalVolumeMounts(volumeMountList, templateContainer.getAdditionalVolumeMounts()); + } + return volumeMountList; + } + + private List getInitContainerVolumeMounts() { + List volumeMountList = new ArrayList<>(); + volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); + if (templateInitContainer != null) { + addAdditionalVolumeMounts(volumeMountList, templateInitContainer.getAdditionalVolumeMounts()); + } return volumeMountList; } @@ -367,7 +385,7 @@ private Container createInitContainer(ImagePullPolicy imagePullPolicy) { resources, getInitContainerEnvVars(), null, - List.of(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)), + getInitContainerVolumeMounts(), null, null, imagePullPolicy diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java index 5499c8f9056..c4e7ac0f883 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java @@ -1401,6 +1401,15 @@ private List getVolumeMounts(Storage storage, List add return volumeMountList; } + + private List getInitContainerVolumeMounts(KafkaPool pool) { + List volumeMountList = new ArrayList<>(); + volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); + if (pool.templateInitContainer != null) { + addAdditionalVolumeMounts(volumeMountList, pool.templateInitContainer.getAdditionalVolumeMounts()); + } + return volumeMountList; + } /** * Returns a combined affinity: Adding the affinity needed for the "kafka-rack" to the user-provided affinity. @@ -1464,7 +1473,7 @@ protected List getInitContainerEnvVars(KafkaPool pool) { pool.resources, getInitContainerEnvVars(pool), null, - List.of(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)), + getInitContainerVolumeMounts(pool), null, null, imagePullPolicy @@ -1491,7 +1500,7 @@ protected List getInitContainerEnvVars(KafkaPool pool) { pool.resources, getEnvVars(pool), getContainerPortList(pool), - getVolumeMounts(pool.storage, pool.templateContainer == null ? Collections.emptyList() : pool.templateContainer.getVolumeMounts()), + getVolumeMounts(pool.storage, pool.templateContainer == null ? Collections.emptyList() : pool.templateContainer.getAdditionalVolumeMounts()), ProbeUtils.defaultBuilder(livenessProbeOptions).withNewExec().withCommand("/opt/kafka/kafka_liveness.sh").endExec().build(), ProbeUtils.defaultBuilder(readinessProbeOptions).withNewExec().withCommand("/opt/kafka/kafka_readiness.sh").endExec().build(), imagePullPolicy diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java index c8020ffdb0c..eba5e8264a5 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java @@ -45,6 +45,9 @@ import java.util.List; import java.util.Map; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; + /** * Model class for Kafka Connect Build - this model handled the build of the new image with custom connectors */ @@ -279,6 +282,9 @@ private List getVolumes(boolean isOpenShift) { } else { throw new RuntimeException("Kubernetes build requires output of type `docker`."); } + if (templatePod != null) { + addAdditionalVolumes(templatePod, volumes); + } return volumes; } @@ -301,7 +307,9 @@ private List getVolumeMounts() { } else { throw new RuntimeException("Kubernetes build requires output of type `docker`."); } - + if (templateContainer != null) { + addAdditionalVolumeMounts(volumeMounts, templateContainer.getAdditionalVolumeMounts()); + } return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java index b1d31e3a581..f09137b6a11 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java @@ -80,6 +80,8 @@ import java.util.Map; import static io.strimzi.api.kafka.model.common.template.DeploymentStrategy.ROLLING_UPDATE; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; /** * Kafka Connect model class @@ -378,6 +380,10 @@ protected List getVolumes(boolean isOpenShift) { } AuthenticationUtils.configureClientAuthenticationVolumes(authentication, volumeList, "oauth-certs", isOpenShift); volumeList.addAll(getExternalConfigurationVolumes(isOpenShift)); + + if (templatePod != null) { + addAdditionalVolumes(templatePod, volumeList); + } return volumeList; } @@ -440,6 +446,18 @@ protected List getVolumeMounts() { AuthenticationUtils.configureClientAuthenticationVolumeMounts(authentication, volumeMountList, TLS_CERTS_BASE_VOLUME_MOUNT, PASSWORD_VOLUME_MOUNT, OAUTH_TLS_CERTS_BASE_VOLUME_MOUNT, "oauth-certs"); volumeMountList.addAll(getExternalConfigurationVolumeMounts()); + if (templateContainer != null) { + addAdditionalVolumeMounts(volumeMountList, templateContainer.getAdditionalVolumeMounts()); + } + return volumeMountList; + } + + private List getInitContainerVolumeMounts() { + List volumeMountList = new ArrayList<>(); + volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); + if (templateInitContainer != null) { + addAdditionalVolumeMounts(volumeMountList, templateInitContainer.getAdditionalVolumeMounts()); + } return volumeMountList; } @@ -546,7 +564,7 @@ public StrimziPodSet generatePodSet(int replicas, resources, getInitContainerEnvVars(), null, - List.of(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)), + getInitContainerVolumeMounts(), null, null, imagePullPolicy diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java index a33f1865cef..eeded7dafd2 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java @@ -11,6 +11,7 @@ import io.fabric8.kubernetes.api.model.LocalObjectReference; import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.api.model.Volume; +import io.fabric8.kubernetes.api.model.VolumeMount; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicy; import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicyIngressRule; @@ -37,6 +38,8 @@ import java.util.Map; import static io.strimzi.api.kafka.model.common.template.DeploymentStrategy.ROLLING_UPDATE; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; /** * Kafka Exporter model @@ -204,9 +207,7 @@ public Deployment generateDeployment(boolean isOpenShift, ImagePullPolicy imageP resources, getEnvVars(), getContainerPortList(), - List.of(VolumeUtils.createTempDirVolumeMount(), - VolumeUtils.createVolumeMount(KAFKA_EXPORTER_CERTS_VOLUME_NAME, KAFKA_EXPORTER_CERTS_VOLUME_MOUNT), - VolumeUtils.createVolumeMount(CLUSTER_CA_CERTS_VOLUME_NAME, CLUSTER_CA_CERTS_VOLUME_MOUNT)), + getVolumeMounts(), ProbeUtils.httpProbe(livenessProbeOptions, "/healthz", MetricsModel.METRICS_PORT_NAME), ProbeUtils.httpProbe(readinessProbeOptions, "/healthz", MetricsModel.METRICS_PORT_NAME), imagePullPolicy @@ -256,7 +257,20 @@ private List getVolumes(boolean isOpenShift) { volumeList.add(VolumeUtils.createTempDirVolume(templatePod)); volumeList.add(VolumeUtils.createSecretVolume(KAFKA_EXPORTER_CERTS_VOLUME_NAME, KafkaExporterResources.secretName(cluster), isOpenShift)); volumeList.add(VolumeUtils.createSecretVolume(CLUSTER_CA_CERTS_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); - + if (templatePod != null) { + addAdditionalVolumes(templatePod, volumeList); + } + return volumeList; + } + + private List getVolumeMounts() { + List volumeList = new ArrayList<>(3); + volumeList.add(VolumeUtils.createTempDirVolumeMount()); + volumeList.add(VolumeUtils.createVolumeMount(KAFKA_EXPORTER_CERTS_VOLUME_NAME, KAFKA_EXPORTER_CERTS_VOLUME_MOUNT)); + volumeList.add(VolumeUtils.createVolumeMount(CLUSTER_CA_CERTS_VOLUME_NAME, CLUSTER_CA_CERTS_VOLUME_MOUNT)); + if (templateContainer != null) { + addAdditionalVolumeMounts(volumeList, templateContainer.getAdditionalVolumeMounts()); + } return volumeList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java index 5937488ffbb..e8edee94211 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java @@ -34,6 +34,9 @@ import java.util.Map.Entry; import java.util.function.Supplier; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; +import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; + /** * Kafka Mirror Maker 2 model */ @@ -174,6 +177,9 @@ protected List getVolumes(boolean isOpenShift) { } AuthenticationUtils.configureClientAuthenticationVolumes(mirrorMaker2Cluster.getAuthentication(), volumeList, mirrorMaker2Cluster.getAlias() + "-oauth-certs", isOpenShift, mirrorMaker2Cluster.getAlias() + '-', true); } + if (templatePod != null) { + addAdditionalVolumes(templatePod, volumeList); + } return volumeList; } @@ -195,6 +201,9 @@ protected List getVolumeMounts() { AuthenticationUtils.configureClientAuthenticationVolumeMounts(mirrorMaker2Cluster.getAuthentication(), volumeMountList, tlsVolumeMountPath, passwordVolumeMountPath, oauthTlsVolumeMountPath, mirrorMaker2Cluster.getAlias() + "-oauth-certs", mirrorMaker2Cluster.getAlias() + '-', true, oauthVolumeMountPath); } + if (templateContainer != null) { + addAdditionalVolumeMounts(volumeMountList, templateContainer.getAdditionalVolumeMounts()); + } return volumeMountList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index 52ac5a94e61..dbcb116f4bf 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -50,7 +50,9 @@ public static Map labels(HasMetadataTemplate template) { * @param existingVolumes The list of existing volumes to which the additional volumes will be added. */ public static void addAdditionalVolumes(PodTemplate templatePod, List existingVolumes) { - templatePod.getAdditionalVolumes().forEach(volumeConfig -> existingVolumes.add(createVolumeFromConfig(volumeConfig))); + if (templatePod.getAdditionalVolumes() != null) { + templatePod.getAdditionalVolumes().forEach(volumeConfig -> existingVolumes.add(createVolumeFromConfig(volumeConfig))); + } } /** @@ -62,6 +64,9 @@ public static void addAdditionalVolumes(PodTemplate templatePod, List ex * @throws RuntimeException If a forbidden mount path is used. */ public static void addAdditionalVolumeMounts(List volumeMounts, List additionalVolumeMounts) { + if (additionalVolumeMounts == null) { + return; + } boolean isSensitivePath = additionalVolumeMounts.stream().anyMatch(additionalVolume -> additionalVolume.getMountPath().startsWith(SENSITIVE_PATH)); if (isSensitivePath) { diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java index 295a1b22981..f4dceac7fc4 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java @@ -575,7 +575,7 @@ private List getVolumeMounts() { volumeMountList.add(VolumeUtils.createVolumeMount(ZOOKEEPER_CLUSTER_CA_VOLUME_NAME, ZOOKEEPER_CLUSTER_CA_VOLUME_MOUNT)); if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); + addAdditionalVolumeMounts(volumeMountList, templateContainer.getAdditionalVolumeMounts()); } return volumeMountList; diff --git a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java index e4fed7681be..e6e0801efc4 100644 --- a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java +++ b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java @@ -759,7 +759,7 @@ private void checkPropertiesInJsonPropertyOrder(Class crdClass, Set p List expectedOrder = asList(order.value()); for (String property : properties) { if (!expectedOrder.contains(property)) { - err(crdClass + " has a property " + property + " which is not in the @JsonPropertyOrder"); + warn(crdClass + " has a property " + property + " which is not in the @JsonPropertyOrder"); } } } diff --git a/crd-generator/src/test/java/io/strimzi/crdgenerator/CrdGeneratorTest.java b/crd-generator/src/test/java/io/strimzi/crdgenerator/CrdGeneratorTest.java index 98f72e5eb84..3bba9356cb7 100644 --- a/crd-generator/src/test/java/io/strimzi/crdgenerator/CrdGeneratorTest.java +++ b/crd-generator/src/test/java/io/strimzi/crdgenerator/CrdGeneratorTest.java @@ -26,7 +26,10 @@ class CrdGeneratorTest { private final CrdGenerator.Reporter crdGeneratorReporter = new CrdGenerator.Reporter() { @Override - public void warn(String s) { + public void warn(String warning) { + if (warning.contains("@JsonInclude") || warning.contains("@JsonPropertyOrder")) { + warnings.add(warning); + } } @Override @@ -39,6 +42,7 @@ public void err(String err) { } }; private final Set errors = new HashSet<>(); + private final Set warnings = new HashSet<>(); @BeforeEach public void beforeEachTest() { @@ -126,10 +130,10 @@ void simpleTestWithErrors() throws IOException { StringWriter w = new StringWriter(); crdGenerator.generate(ExampleCrdWithErrors.class, w); - assertTrue(errors.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors is missing @JsonInclude"), errors.toString()); - assertFalse(errors.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors$ObjectProperty is missing @JsonInclude"), errors.toString()); - assertTrue(errors.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors is missing @JsonPropertyOrder"), errors.toString()); - assertFalse(errors.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors$ObjectProperty is missing @JsonPropertyOrder"), errors.toString()); - assertTrue(errors.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors$ObjectProperty has a property bar which is not in the @JsonPropertyOrder"), errors.toString()); + assertTrue(warnings.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors is missing @JsonInclude"), warnings.toString()); + assertFalse(warnings.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors$ObjectProperty is missing @JsonInclude"), warnings.toString()); + assertTrue(warnings.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors is missing @JsonPropertyOrder"), warnings.toString()); + assertFalse(warnings.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors$ObjectProperty is missing @JsonPropertyOrder"), warnings.toString()); + assertTrue(warnings.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors$ObjectProperty has a property bar which is not in the @JsonPropertyOrder"), errors.toString()); } } diff --git a/documentation/modules/appendix_crds.adoc b/documentation/modules/appendix_crds.adoc index 55b4e8d1d42..e28d1c8f6b4 100644 --- a/documentation/modules/appendix_crds.adoc +++ b/documentation/modules/appendix_crds.adoc @@ -1312,7 +1312,7 @@ include::../api/io.strimzi.api.kafka.model.common.template.ContainerTemplate.ado |Security context for the container. |volumeMounts |xref:type-VolumeMount-{context}[`VolumeMount`] array -|Volume mounts which should be applied to the container. +|Additional volume mounts which should be applied to the container. |==== [id='type-ContainerEnvVar-{context}'] diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml index 6b07bb71fb3..e325f4fdae0 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml @@ -5,6 +5,7 @@ metadata: labels: app: strimzi strimzi.io/crd-install: "true" + component: kafkas.kafka.strimzi.io-crd spec: group: kafka.strimzi.io names: @@ -13,216 +14,122 @@ spec: singular: kafka plural: kafkas shortNames: - - k + - k categories: - - strimzi + - strimzi scope: Namespaced conversion: strategy: None versions: - - name: v1beta2 - served: true - storage: true - subresources: - status: {} - additionalPrinterColumns: - - name: Desired Kafka replicas - description: The desired number of Kafka replicas in the cluster - jsonPath: .spec.kafka.replicas - type: integer - - name: Desired ZK replicas - description: The desired number of ZooKeeper replicas in the cluster - jsonPath: .spec.zookeeper.replicas - type: integer - - name: Ready - description: The state of the custom resource - jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" - type: string - - name: Metadata State - description: The state of the cluster metadata - jsonPath: .status.kafkaMetadataState - type: string - - name: Warnings - description: Warnings related to the custom resource - jsonPath: ".status.conditions[?(@.type==\"Warning\")].status" - type: string - schema: - openAPIV3Schema: - type: object - properties: - apiVersion: - type: string - 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" - kind: - type: string - 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" - metadata: - type: object - spec: - type: object - properties: - kafka: - type: object - properties: - version: - type: string - description: The Kafka broker version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. - metadataVersion: - type: string - description: "The KRaft metadata version used by the Kafka cluster. This property is ignored when running in ZooKeeper mode. If the property is not set, it defaults to the metadata version that corresponds to the `version` property." - replicas: - type: integer - minimum: 1 - description: The number of pods in the cluster. This property is required when node pools are not used. - image: - type: string - description: "The container image used for Kafka pods. If the property is not set, the default Kafka image version is determined based on the `version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration. Changing the Kafka image version does not automatically update the image versions for other components, such as Kafka Exporter. " - listeners: - type: array - minItems: 1 - items: - type: object - properties: - name: - type: string - pattern: "^[a-z0-9]{1,11}$" - description: Name of the listener. The name will be used to identify the listener and the related Kubernetes objects. The name has to be unique within given a Kafka cluster. The name can consist of lowercase characters and numbers and be up to 11 characters long. - port: - type: integer - minimum: 9092 - description: "Port number used by the listener inside Kafka. The port number has to be unique within a given Kafka cluster. Allowed port numbers are 9092 and higher with the exception of ports 9404 and 9999, which are already used for Prometheus and JMX. Depending on the listener type, the port number might not be the same as the port number that connects Kafka clients." - type: - type: string - enum: - - internal - - route - - loadbalancer - - nodeport - - ingress - - cluster-ip - description: "Type of the listener. The supported types are as follows: \n\n* `internal` type exposes Kafka internally only within the Kubernetes cluster.\n* `route` type uses OpenShift Routes to expose Kafka.\n* `loadbalancer` type uses LoadBalancer type services to expose Kafka.\n* `nodeport` type uses NodePort type services to expose Kafka.\n* `ingress` type uses Kubernetes Nginx Ingress to expose Kafka with TLS passthrough.\n* `cluster-ip` type uses a per-broker `ClusterIP` service.\n" - tls: - type: boolean - description: Enables TLS encryption on the listener. This is a required property. - authentication: - type: object - properties: - accessTokenIsJwt: - type: boolean - description: Configure whether the access token is treated as JWT. This must be set to `false` if the authorization server returns opaque tokens. Defaults to `true`. - checkAccessTokenType: - type: boolean - description: Configure whether the access token type check is performed or not. This should be set to `false` if the authorization server does not include 'typ' claim in JWT token. Defaults to `true`. - checkAudience: - type: boolean - description: "Enable or disable audience checking. Audience checks identify the recipients of tokens. If audience checking is enabled, the OAuth Client ID also has to be configured using the `clientId` property. The Kafka broker will reject tokens that do not have its `clientId` in their `aud` (audience) claim.Default value is `false`." - checkIssuer: - type: boolean - description: Enable or disable issuer checking. By default issuer is checked using the value configured by `validIssuerUri`. Default value is `true`. - clientAudience: - type: string - description: The audience to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. - clientId: - type: string - description: OAuth Client ID which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. - clientScope: - type: string - description: The scope to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. - clientSecret: - type: object - properties: - key: - type: string - description: The key under which the secret value is stored in the Kubernetes Secret. - secretName: - type: string - description: The name of the Kubernetes Secret containing the secret value. - required: - - key - - secretName - description: Link to Kubernetes Secret containing the OAuth client secret which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. - connectTimeoutSeconds: - type: integer - description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." - customClaimCheck: - type: string - description: JsonPath filter query to be applied to the JWT token or to the response of the introspection endpoint for additional token validation. Not set by default. - disableTlsHostnameVerification: - type: boolean - description: Enable or disable TLS hostname verification. Default value is `false`. - enableECDSA: - type: boolean - description: Enable or disable ECDSA support by installing BouncyCastle crypto provider. ECDSA support is always enabled. The BouncyCastle libraries are no longer packaged with Strimzi. Value is ignored. - enableMetrics: - type: boolean - description: Enable or disable OAuth metrics. Default value is `false`. - enableOauthBearer: - type: boolean - description: Enable or disable OAuth authentication over SASL_OAUTHBEARER. Default value is `true`. - enablePlain: - type: boolean - description: Enable or disable OAuth authentication over SASL_PLAIN. There is no re-authentication support when this mechanism is used. Default value is `false`. - failFast: - type: boolean - description: Enable or disable termination of Kafka broker processes due to potentially recoverable runtime errors during startup. Default value is `true`. - fallbackUserNameClaim: - type: string - description: The fallback username claim to be used for the user id if the claim specified by `userNameClaim` is not present. This is useful when `client_credentials` authentication only results in the client id being provided in another claim. It only takes effect if `userNameClaim` is set. - fallbackUserNamePrefix: - type: string - description: "The prefix to use with the value of `fallbackUserNameClaim` to construct the user id. This only takes effect if `fallbackUserNameClaim` is true, and the value is present for the claim. Mapping usernames and client ids into the same user id space is useful in preventing name collisions." - groupsClaim: - type: string - description: JsonPath query used to extract groups for the user during authentication. Extracted groups can be used by a custom authorizer. By default no groups are extracted. - groupsClaimDelimiter: - type: string - description: "A delimiter used to parse groups when they are extracted as a single String value rather than a JSON array. Default value is ',' (comma)." - httpRetries: - type: integer - description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." - httpRetryPauseMs: - type: integer - description: "The pause to take before retrying a failed HTTP request. If not set, the default is to not pause at all but to immediately repeat a request." - includeAcceptHeader: - type: boolean - description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. - introspectionEndpointUri: - type: string - description: URI of the token introspection endpoint which can be used to validate opaque non-JWT tokens. - jwksEndpointUri: - type: string - description: "URI of the JWKS certificate endpoint, which can be used for local JWT validation." - jwksExpirySeconds: - type: integer - minimum: 1 - description: Configures how often are the JWKS certificates considered valid. The expiry interval has to be at least 60 seconds longer then the refresh interval specified in `jwksRefreshSeconds`. Defaults to 360 seconds. - jwksIgnoreKeyUse: - type: boolean - description: Flag to ignore the 'use' attribute of `key` declarations in a JWKS endpoint response. Default value is `false`. - jwksMinRefreshPauseSeconds: - type: integer - minimum: 0 - description: "The minimum pause between two consecutive refreshes. When an unknown signing key is encountered the refresh is scheduled immediately, but will always wait for this minimum pause. Defaults to 1 second." - jwksRefreshSeconds: - type: integer - minimum: 1 - description: Configures how often are the JWKS certificates refreshed. The refresh interval has to be at least 60 seconds shorter then the expiry interval specified in `jwksExpirySeconds`. Defaults to 300 seconds. - listenerConfig: - x-kubernetes-preserve-unknown-fields: true - type: object - description: Configuration to be used for a specific listener. All values are prefixed with listener.name.__. - maxSecondsWithoutReauthentication: - type: integer - description: "Maximum number of seconds the authenticated session remains valid without re-authentication. This enables Apache Kafka re-authentication feature, and causes sessions to expire when the access token expires. If the access token expires before max time or if max time is reached, the client has to re-authenticate, otherwise the server will drop the connection. Not set by default - the authenticated session does not expire when the access token expires. This option only applies to SASL_OAUTHBEARER authentication mechanism (when `enableOauthBearer` is `true`)." - readTimeoutSeconds: - type: integer - description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." - sasl: - type: boolean - description: Enable or disable SASL on this listener. - secrets: - type: array - items: + - name: v1beta2 + served: true + storage: true + subresources: + status: {} + additionalPrinterColumns: + - name: Desired Kafka replicas + description: The desired number of Kafka replicas in the cluster + jsonPath: .spec.kafka.replicas + type: integer + - name: Desired ZK replicas + description: The desired number of ZooKeeper replicas in the cluster + jsonPath: .spec.zookeeper.replicas + type: integer + - name: Ready + description: The state of the custom resource + jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" + type: string + - name: Metadata State + description: The state of the cluster metadata + jsonPath: .status.kafkaMetadataState + type: string + - name: Warnings + description: Warnings related to the custom resource + jsonPath: ".status.conditions[?(@.type==\"Warning\")].status" + type: string + schema: + openAPIV3Schema: + type: object + properties: + apiVersion: + type: string + 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" + kind: + type: string + 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" + metadata: + type: object + spec: + type: object + properties: + kafka: + type: object + properties: + version: + type: string + description: The Kafka broker version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. + metadataVersion: + type: string + description: "The KRaft metadata version used by the Kafka cluster. This property is ignored when running in ZooKeeper mode. If the property is not set, it defaults to the metadata version that corresponds to the `version` property." + replicas: + type: integer + minimum: 1 + description: The number of pods in the cluster. This property is required when node pools are not used. + image: + type: string + description: "The container image used for Kafka pods. If the property is not set, the default Kafka image version is determined based on the `version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration. Changing the Kafka image version does not automatically update the image versions for other components, such as Kafka Exporter. " + listeners: + type: array + minItems: 1 + items: + type: object + properties: + name: + type: string + pattern: "^[a-z0-9]{1,11}$" + description: Name of the listener. The name will be used to identify the listener and the related Kubernetes objects. The name has to be unique within given a Kafka cluster. The name can consist of lowercase characters and numbers and be up to 11 characters long. + port: + type: integer + minimum: 9092 + description: "Port number used by the listener inside Kafka. The port number has to be unique within a given Kafka cluster. Allowed port numbers are 9092 and higher with the exception of ports 9404 and 9999, which are already used for Prometheus and JMX. Depending on the listener type, the port number might not be the same as the port number that connects Kafka clients." + type: + type: string + enum: + - internal + - route + - loadbalancer + - nodeport + - ingress + - cluster-ip + description: "Type of the listener. The supported types are as follows: \n\n* `internal` type exposes Kafka internally only within the Kubernetes cluster.\n* `route` type uses OpenShift Routes to expose Kafka.\n* `loadbalancer` type uses LoadBalancer type services to expose Kafka.\n* `nodeport` type uses NodePort type services to expose Kafka.\n* `ingress` type uses Kubernetes Nginx Ingress to expose Kafka with TLS passthrough.\n* `cluster-ip` type uses a per-broker `ClusterIP` service.\n" + tls: + type: boolean + description: Enables TLS encryption on the listener. This is a required property. + authentication: + type: object + properties: + accessTokenIsJwt: + type: boolean + description: Configure whether the access token is treated as JWT. This must be set to `false` if the authorization server returns opaque tokens. Defaults to `true`. + checkAccessTokenType: + type: boolean + description: Configure whether the access token type check is performed or not. This should be set to `false` if the authorization server does not include 'typ' claim in JWT token. Defaults to `true`. + checkAudience: + type: boolean + description: "Enable or disable audience checking. Audience checks identify the recipients of tokens. If audience checking is enabled, the OAuth Client ID also has to be configured using the `clientId` property. The Kafka broker will reject tokens that do not have its `clientId` in their `aud` (audience) claim.Default value is `false`." + checkIssuer: + type: boolean + description: Enable or disable issuer checking. By default issuer is checked using the value configured by `validIssuerUri`. Default value is `true`. + clientAudience: + type: string + description: The audience to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. + clientId: + type: string + description: OAuth Client ID which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. + clientScope: + type: string + description: The scope to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. + clientSecret: type: object properties: key: @@ -232,14 +139,153 @@ spec: type: string description: The name of the Kubernetes Secret containing the secret value. required: - - key - - secretName - description: Secrets to be mounted to /opt/kafka/custom-authn-secrets/custom-listener-_-_/__. - tlsTrustedCertificates: - type: array - items: + - key + - secretName + description: Link to Kubernetes Secret containing the OAuth client secret which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. + connectTimeoutSeconds: + type: integer + description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." + customClaimCheck: + type: string + description: JsonPath filter query to be applied to the JWT token or to the response of the introspection endpoint for additional token validation. Not set by default. + disableTlsHostnameVerification: + type: boolean + description: Enable or disable TLS hostname verification. Default value is `false`. + enableECDSA: + type: boolean + description: Enable or disable ECDSA support by installing BouncyCastle crypto provider. ECDSA support is always enabled. The BouncyCastle libraries are no longer packaged with Strimzi. Value is ignored. + enableMetrics: + type: boolean + description: Enable or disable OAuth metrics. Default value is `false`. + enableOauthBearer: + type: boolean + description: Enable or disable OAuth authentication over SASL_OAUTHBEARER. Default value is `true`. + enablePlain: + type: boolean + description: Enable or disable OAuth authentication over SASL_PLAIN. There is no re-authentication support when this mechanism is used. Default value is `false`. + failFast: + type: boolean + description: Enable or disable termination of Kafka broker processes due to potentially recoverable runtime errors during startup. Default value is `true`. + fallbackUserNameClaim: + type: string + description: The fallback username claim to be used for the user id if the claim specified by `userNameClaim` is not present. This is useful when `client_credentials` authentication only results in the client id being provided in another claim. It only takes effect if `userNameClaim` is set. + fallbackUserNamePrefix: + type: string + description: "The prefix to use with the value of `fallbackUserNameClaim` to construct the user id. This only takes effect if `fallbackUserNameClaim` is true, and the value is present for the claim. Mapping usernames and client ids into the same user id space is useful in preventing name collisions." + groupsClaim: + type: string + description: JsonPath query used to extract groups for the user during authentication. Extracted groups can be used by a custom authorizer. By default no groups are extracted. + groupsClaimDelimiter: + type: string + description: "A delimiter used to parse groups when they are extracted as a single String value rather than a JSON array. Default value is ',' (comma)." + httpRetries: + type: integer + description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." + httpRetryPauseMs: + type: integer + description: "The pause to take before retrying a failed HTTP request. If not set, the default is to not pause at all but to immediately repeat a request." + includeAcceptHeader: + type: boolean + description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. + introspectionEndpointUri: + type: string + description: URI of the token introspection endpoint which can be used to validate opaque non-JWT tokens. + jwksEndpointUri: + type: string + description: "URI of the JWKS certificate endpoint, which can be used for local JWT validation." + jwksExpirySeconds: + type: integer + minimum: 1 + description: Configures how often are the JWKS certificates considered valid. The expiry interval has to be at least 60 seconds longer then the refresh interval specified in `jwksRefreshSeconds`. Defaults to 360 seconds. + jwksIgnoreKeyUse: + type: boolean + description: Flag to ignore the 'use' attribute of `key` declarations in a JWKS endpoint response. Default value is `false`. + jwksMinRefreshPauseSeconds: + type: integer + minimum: 0 + description: "The minimum pause between two consecutive refreshes. When an unknown signing key is encountered the refresh is scheduled immediately, but will always wait for this minimum pause. Defaults to 1 second." + jwksRefreshSeconds: + type: integer + minimum: 1 + description: Configures how often are the JWKS certificates refreshed. The refresh interval has to be at least 60 seconds shorter then the expiry interval specified in `jwksExpirySeconds`. Defaults to 300 seconds. + listenerConfig: + x-kubernetes-preserve-unknown-fields: true + type: object + description: Configuration to be used for a specific listener. All values are prefixed with listener.name.__. + maxSecondsWithoutReauthentication: + type: integer + description: "Maximum number of seconds the authenticated session remains valid without re-authentication. This enables Apache Kafka re-authentication feature, and causes sessions to expire when the access token expires. If the access token expires before max time or if max time is reached, the client has to re-authenticate, otherwise the server will drop the connection. Not set by default - the authenticated session does not expire when the access token expires. This option only applies to SASL_OAUTHBEARER authentication mechanism (when `enableOauthBearer` is `true`)." + readTimeoutSeconds: + type: integer + description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." + sasl: + type: boolean + description: Enable or disable SASL on this listener. + secrets: + type: array + items: + type: object + properties: + key: + type: string + description: The key under which the secret value is stored in the Kubernetes Secret. + secretName: + type: string + description: The name of the Kubernetes Secret containing the secret value. + required: + - key + - secretName + description: Secrets to be mounted to /opt/kafka/custom-authn-secrets/custom-listener-_-_/__. + tlsTrustedCertificates: + type: array + items: + type: object + properties: + secretName: + type: string + description: The name of the Secret containing the certificate. + certificate: + type: string + description: The name of the file certificate in the Secret. + required: + - secretName + - certificate + description: Trusted certificates for TLS connection to the OAuth server. + tokenEndpointUri: + type: string + description: "URI of the Token Endpoint to use with SASL_PLAIN mechanism when the client authenticates with `clientId` and a `secret`. If set, the client can authenticate over SASL_PLAIN by either setting `username` to `clientId`, and setting `password` to client `secret`, or by setting `username` to account username, and `password` to access token prefixed with `$accessToken:`. If this option is not set, the `password` is always interpreted as an access token (without a prefix), and `username` as the account username (a so called 'no-client-credentials' mode)." + type: + type: string + enum: + - tls + - scram-sha-512 + - oauth + - custom + description: Authentication type. `oauth` type uses SASL OAUTHBEARER Authentication. `scram-sha-512` type uses SASL SCRAM-SHA-512 Authentication. `tls` type uses TLS Client Authentication. `tls` type is supported only on TLS listeners.`custom` type allows for any authentication type to be used. + userInfoEndpointUri: + type: string + description: 'URI of the User Info Endpoint to use as a fallback to obtaining the user id when the Introspection Endpoint does not return information that can be used for the user id. ' + userNameClaim: + type: string + description: "Name of the claim from the JWT authentication token, Introspection Endpoint response or User Info Endpoint response which will be used to extract the user id. Defaults to `sub`." + validIssuerUri: + type: string + description: URI of the token issuer used for authentication. + validTokenType: + type: string + description: "Valid value for the `token_type` attribute returned by the Introspection Endpoint. No default value, and not checked by default." + required: + - type + description: Authentication configuration for this listener. + configuration: + type: object + properties: + brokerCertChainAndKey: type: object properties: + key: + type: string + description: The name of the private key in the Secret. secretName: type: string description: The name of the Secret containing the certificate. @@ -247,122 +293,38 @@ spec: type: string description: The name of the file certificate in the Secret. required: - - secretName - - certificate - description: Trusted certificates for TLS connection to the OAuth server. - tokenEndpointUri: - type: string - description: "URI of the Token Endpoint to use with SASL_PLAIN mechanism when the client authenticates with `clientId` and a `secret`. If set, the client can authenticate over SASL_PLAIN by either setting `username` to `clientId`, and setting `password` to client `secret`, or by setting `username` to account username, and `password` to access token prefixed with `$accessToken:`. If this option is not set, the `password` is always interpreted as an access token (without a prefix), and `username` as the account username (a so called 'no-client-credentials' mode)." - type: - type: string - enum: - - tls - - scram-sha-512 - - oauth - - custom - description: Authentication type. `oauth` type uses SASL OAUTHBEARER Authentication. `scram-sha-512` type uses SASL SCRAM-SHA-512 Authentication. `tls` type uses TLS Client Authentication. `tls` type is supported only on TLS listeners.`custom` type allows for any authentication type to be used. - userInfoEndpointUri: - type: string - description: 'URI of the User Info Endpoint to use as a fallback to obtaining the user id when the Introspection Endpoint does not return information that can be used for the user id. ' - userNameClaim: - type: string - description: "Name of the claim from the JWT authentication token, Introspection Endpoint response or User Info Endpoint response which will be used to extract the user id. Defaults to `sub`." - validIssuerUri: - type: string - description: URI of the token issuer used for authentication. - validTokenType: - type: string - description: "Valid value for the `token_type` attribute returned by the Introspection Endpoint. No default value, and not checked by default." - required: - - type - description: Authentication configuration for this listener. - configuration: - type: object - properties: - brokerCertChainAndKey: - type: object - properties: - key: - type: string - description: The name of the private key in the Secret. - secretName: - type: string - description: The name of the Secret containing the certificate. - certificate: - type: string - description: The name of the file certificate in the Secret. - required: - - key - - secretName - - certificate - description: Reference to the `Secret` which holds the certificate and private key pair which will be used for this listener. The certificate can optionally contain the whole chain. This field can be used only with listeners with enabled TLS encryption. - class: - type: string - description: "Configures a specific class for `Ingress` and `LoadBalancer` that defines which controller will be used. This field can only be used with `ingress` and `loadbalancer` type listeners. If not specified, the default controller is used. For an `ingress` listener, set the `ingressClassName` property in the `Ingress` resources. For a `loadbalancer` listener, set the `loadBalancerClass` property in the `Service` resources." - externalTrafficPolicy: - type: string - enum: - - Local - - Cluster - description: "Specifies whether the service routes external traffic to node-local or cluster-wide endpoints. `Cluster` may cause a second hop to another node and obscures the client source IP. `Local` avoids a second hop for LoadBalancer and Nodeport type services and preserves the client source IP (when supported by the infrastructure). If unspecified, Kubernetes will use `Cluster` as the default.This field can be used only with `loadbalancer` or `nodeport` type listener." - loadBalancerSourceRanges: - type: array - items: + - key + - secretName + - certificate + description: Reference to the `Secret` which holds the certificate and private key pair which will be used for this listener. The certificate can optionally contain the whole chain. This field can be used only with listeners with enabled TLS encryption. + class: type: string - description: "A list of CIDR ranges (for example `10.0.0.0/8` or `130.211.204.1/32`) from which clients can connect to load balancer type listeners. If supported by the platform, traffic through the loadbalancer is restricted to the specified CIDR ranges. This field is applicable only for loadbalancer type services and is ignored if the cloud provider does not support the feature. This field can be used only with `loadbalancer` type listener." - bootstrap: - type: object - properties: - alternativeNames: - type: array - items: - type: string - description: Additional alternative names for the bootstrap service. The alternative names will be added to the list of subject alternative names of the TLS certificates. - host: - type: string - description: The bootstrap host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. - nodePort: - type: integer - description: Node port for the bootstrap service. This field can be used only with `nodeport` type listener. - loadBalancerIP: + description: "Configures a specific class for `Ingress` and `LoadBalancer` that defines which controller will be used. This field can only be used with `ingress` and `loadbalancer` type listeners. If not specified, the default controller is used. For an `ingress` listener, set the `ingressClassName` property in the `Ingress` resources. For a `loadbalancer` listener, set the `loadBalancerClass` property in the `Service` resources." + externalTrafficPolicy: + type: string + enum: + - Local + - Cluster + description: "Specifies whether the service routes external traffic to node-local or cluster-wide endpoints. `Cluster` may cause a second hop to another node and obscures the client source IP. `Local` avoids a second hop for LoadBalancer and Nodeport type services and preserves the client source IP (when supported by the infrastructure). If unspecified, Kubernetes will use `Cluster` as the default.This field can be used only with `loadbalancer` or `nodeport` type listener." + loadBalancerSourceRanges: + type: array + items: type: string - description: The loadbalancer is requested with the IP address specified in this field. This feature depends on whether the underlying cloud provider supports specifying the `loadBalancerIP` when a load balancer is created. This field is ignored if the cloud provider does not support the feature.This field can be used only with `loadbalancer` type listener. - annotations: - additionalProperties: - type: string - type: object - description: "Annotations that will be added to the `Ingress`, `Route`, or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." - labels: - additionalProperties: - type: string - type: object - description: "Labels that will be added to the `Ingress`, `Route`, or `Service` resource. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." - externalIPs: - type: array - items: - type: string - description: External IPs associated to the nodeport service. These IPs are used by clients external to the Kubernetes cluster to access the Kafka brokers. This field is helpful when `nodeport` without `externalIP` is not sufficient. For example on bare-metal Kubernetes clusters that do not support Loadbalancer service types. This field can only be used with `nodeport` type listener. - description: Bootstrap configuration. - brokers: - type: array - items: + description: "A list of CIDR ranges (for example `10.0.0.0/8` or `130.211.204.1/32`) from which clients can connect to load balancer type listeners. If supported by the platform, traffic through the loadbalancer is restricted to the specified CIDR ranges. This field is applicable only for loadbalancer type services and is ignored if the cloud provider does not support the feature. This field can be used only with `loadbalancer` type listener." + bootstrap: type: object properties: - broker: - type: integer - description: ID of the kafka broker (broker identifier). Broker IDs start from 0 and correspond to the number of broker replicas. - advertisedHost: - type: string - description: The host name used in the brokers' `advertised.listeners`. - advertisedPort: - type: integer - description: The port number used in the brokers' `advertised.listeners`. + alternativeNames: + type: array + items: + type: string + description: Additional alternative names for the bootstrap service. The alternative names will be added to the list of subject alternative names of the TLS certificates. host: type: string - description: The broker host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. + description: The bootstrap host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. nodePort: type: integer - description: Node port for the per-broker service. This field can be used only with `nodeport` type listener. + description: Node port for the bootstrap service. This field can be used only with `nodeport` type listener. loadBalancerIP: type: string description: The loadbalancer is requested with the IP address specified in this field. This feature depends on whether the underlying cloud provider supports specifying the `loadBalancerIP` when a load balancer is created. This field is ignored if the cloud provider does not support the feature.This field can be used only with `loadbalancer` type listener. @@ -370,7 +332,7 @@ spec: additionalProperties: type: string type: object - description: "Annotations that will be added to the `Ingress` or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, or `ingress` type listeners." + description: "Annotations that will be added to the `Ingress`, `Route`, or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." labels: additionalProperties: type: string @@ -381,6996 +343,7179 @@ spec: items: type: string description: External IPs associated to the nodeport service. These IPs are used by clients external to the Kubernetes cluster to access the Kafka brokers. This field is helpful when `nodeport` without `externalIP` is not sufficient. For example on bare-metal Kubernetes clusters that do not support Loadbalancer service types. This field can only be used with `nodeport` type listener. - required: - - broker - description: Per-broker configurations. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: + description: Bootstrap configuration. + brokers: + type: array + items: + type: object + properties: + broker: + type: integer + description: ID of the kafka broker (broker identifier). Broker IDs start from 0 and correspond to the number of broker replicas. + advertisedHost: + type: string + description: The host name used in the brokers' `advertised.listeners`. + advertisedPort: + type: integer + description: The port number used in the brokers' `advertised.listeners`. + host: + type: string + description: The broker host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. + nodePort: + type: integer + description: Node port for the per-broker service. This field can be used only with `nodeport` type listener. + loadBalancerIP: + type: string + description: The loadbalancer is requested with the IP address specified in this field. This feature depends on whether the underlying cloud provider supports specifying the `loadBalancerIP` when a load balancer is created. This field is ignored if the cloud provider does not support the feature.This field can be used only with `loadbalancer` type listener. + annotations: + additionalProperties: + type: string + type: object + description: "Annotations that will be added to the `Ingress` or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, or `ingress` type listeners." + labels: + additionalProperties: + type: string + type: object + description: "Labels that will be added to the `Ingress`, `Route`, or `Service` resource. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." + externalIPs: + type: array + items: + type: string + description: External IPs associated to the nodeport service. These IPs are used by clients external to the Kubernetes cluster to access the Kafka brokers. This field is helpful when `nodeport` without `externalIP` is not sufficient. For example on bare-metal Kubernetes clusters that do not support Loadbalancer service types. This field can only be used with `nodeport` type listener. + required: + - broker + description: Per-broker configurations. + ipFamilyPolicy: type: string enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - createBootstrapService: - type: boolean - description: Whether to create the bootstrap service or not. The bootstrap service is created by default (if not specified differently). This field can be used with the `loadBalancer` type listener. - finalizers: - type: array - items: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + createBootstrapService: + type: boolean + description: Whether to create the bootstrap service or not. The bootstrap service is created by default (if not specified differently). This field can be used with the `loadBalancer` type listener. + finalizers: + type: array + items: + type: string + description: "A list of finalizers which will be configured for the `LoadBalancer` type Services created for this listener. If supported by the platform, the finalizer `service.kubernetes.io/load-balancer-cleanup` to make sure that the external load balancer is deleted together with the service.For more information, see https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#garbage-collecting-load-balancers. This field can be used only with `loadbalancer` type listeners." + useServiceDnsDomain: + type: boolean + description: "Configures whether the Kubernetes service DNS domain should be used or not. If set to `true`, the generated addresses will contain the service DNS domain suffix (by default `.cluster.local`, can be configured using environment variable `KUBERNETES_SERVICE_DNS_DOMAIN`). Defaults to `false`.This field can be used only with `internal` and `cluster-ip` type listeners." + maxConnections: + type: integer + description: The maximum number of connections we allow for this listener in the broker at any time. New connections are blocked if the limit is reached. + maxConnectionCreationRate: + type: integer + description: The maximum connection creation rate we allow in this listener at any time. New connections will be throttled if the limit is reached. + preferredNodePortAddressType: type: string - description: "A list of finalizers which will be configured for the `LoadBalancer` type Services created for this listener. If supported by the platform, the finalizer `service.kubernetes.io/load-balancer-cleanup` to make sure that the external load balancer is deleted together with the service.For more information, see https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#garbage-collecting-load-balancers. This field can be used only with `loadbalancer` type listeners." - useServiceDnsDomain: - type: boolean - description: "Configures whether the Kubernetes service DNS domain should be used or not. If set to `true`, the generated addresses will contain the service DNS domain suffix (by default `.cluster.local`, can be configured using environment variable `KUBERNETES_SERVICE_DNS_DOMAIN`). Defaults to `false`.This field can be used only with `internal` and `cluster-ip` type listeners." - maxConnections: - type: integer - description: The maximum number of connections we allow for this listener in the broker at any time. New connections are blocked if the limit is reached. - maxConnectionCreationRate: - type: integer - description: The maximum connection creation rate we allow in this listener at any time. New connections will be throttled if the limit is reached. - preferredNodePortAddressType: - type: string - enum: - - ExternalIP - - ExternalDNS - - InternalIP - - InternalDNS - - Hostname - description: |- - Defines which address type should be used as the node address. Available types are: `ExternalDNS`, `ExternalIP`, `InternalDNS`, `InternalIP` and `Hostname`. By default, the addresses will be used in the following order (the first one found will be used): + enum: + - ExternalIP + - ExternalDNS + - InternalIP + - InternalDNS + - Hostname + description: |- + Defines which address type should be used as the node address. Available types are: `ExternalDNS`, `ExternalIP`, `InternalDNS`, `InternalIP` and `Hostname`. By default, the addresses will be used in the following order (the first one found will be used): - * `ExternalDNS` - * `ExternalIP` - * `InternalDNS` - * `InternalIP` - * `Hostname` + * `ExternalDNS` + * `ExternalIP` + * `InternalDNS` + * `InternalIP` + * `Hostname` - This field is used to select the preferred address type, which is checked first. If no address is found for this address type, the other types are checked in the default order. This field can only be used with `nodeport` type listener. - description: Additional listener configuration. - networkPolicyPeers: - type: array - items: - type: object - properties: - ipBlock: - type: object - properties: - cidr: - type: string - except: - type: array - items: + This field is used to select the preferred address type, which is checked first. If no address is found for this address type, the other types are checked in the default order. This field can only be used with `nodeport` type listener. + description: Additional listener configuration. + networkPolicyPeers: + type: array + items: + type: object + properties: + ipBlock: + type: object + properties: + cidr: type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + except: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - podSelector: - type: object - properties: - matchExpressions: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + podSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - description: "List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list." - required: - - name - - port - - type - - tls - description: Configures listeners of Kafka brokers. - config: - x-kubernetes-preserve-unknown-fields: true - type: object - description: "Kafka broker config properties with the following prefixes cannot be set: listeners, advertised., broker., listener., host.name, port, inter.broker.listener.name, sasl., ssl., security., password., log.dir, zookeeper.connect, zookeeper.set.acl, zookeeper.ssl, zookeeper.clientCnxnSocket, authorizer., super.user, cruise.control.metrics.topic, cruise.control.metrics.reporter.bootstrap.servers, node.id, process.roles, controller., metadata.log.dir, zookeeper.metadata.migration.enable (with the exception of: zookeeper.connection.timeout.ms, sasl.server.max.receive.size, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, ssl.secure.random.implementation, cruise.control.metrics.topic.num.partitions, cruise.control.metrics.topic.replication.factor, cruise.control.metrics.topic.retention.ms, cruise.control.metrics.topic.auto.create.retries, cruise.control.metrics.topic.auto.create.timeout.ms, cruise.control.metrics.topic.min.insync.replicas, controller.quorum.election.backoff.max.ms, controller.quorum.election.timeout.ms, controller.quorum.fetch.timeout.ms)." - storage: - type: object - properties: - class: - type: string - description: The storage class to use for dynamic volume allocation. - deleteClaim: - type: boolean - description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. - id: - type: integer - minimum: 0 - description: Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'. - kraftMetadata: - type: string - enum: - - shared - description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." - overrides: - type: array - items: - type: object - properties: - class: - type: string - description: The storage class to use for dynamic volume allocation for this broker. - broker: - type: integer - description: Id of the kafka broker (broker identifier). - description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. - selector: - additionalProperties: - type: string - type: object - description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. - size: - type: string - description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." - sizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." - type: - type: string - enum: - - ephemeral - - persistent-claim - - jbod - description: "Storage type, must be either 'ephemeral', 'persistent-claim', or 'jbod'." - volumes: - type: array - items: - type: object - properties: - class: - type: string - description: The storage class to use for dynamic volume allocation. - deleteClaim: - type: boolean - description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. - id: - type: integer - minimum: 0 - description: Storage identification number. Mandatory for storage volumes defined with a `jbod` storage type configuration. - kraftMetadata: - type: string - enum: - - shared - description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." - overrides: - type: array - items: - type: object - properties: - class: - type: string - description: The storage class to use for dynamic volume allocation for this broker. - broker: - type: integer - description: Id of the kafka broker (broker identifier). - description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. - selector: - additionalProperties: - type: string - type: object - description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. - size: - type: string - description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." - sizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." - type: - type: string - enum: - - ephemeral - - persistent-claim - description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." - required: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + description: "List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list." + required: + - name + - port - type - description: List of volumes as Storage objects representing the JBOD disks array. - required: - - type - description: Storage configuration (disk). Cannot be updated. This property is required when node pools are not used. - authorization: - type: object - properties: - allowOnError: - type: boolean - description: "Defines whether a Kafka client should be allowed or denied by default when the authorizer fails to query the Open Policy Agent, for example, when it is temporarily unavailable). Defaults to `false` - all actions will be denied." - authorizerClass: - type: string - description: "Authorization implementation class, which must be available in classpath." - clientId: - type: string - description: OAuth Client ID which the Kafka client can use to authenticate against the OAuth server and use the token endpoint URI. - connectTimeoutSeconds: - type: integer - minimum: 1 - description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." - delegateToKafkaAcls: - type: boolean - description: Whether authorization decision should be delegated to the 'Simple' authorizer if DENIED by Keycloak Authorization Services policies. Default value is `false`. - disableTlsHostnameVerification: - type: boolean - description: Enable or disable TLS hostname verification. Default value is `false`. - enableMetrics: - type: boolean - description: Enable or disable OAuth metrics. The default value is `false`. - expireAfterMs: - type: integer - description: The expiration of the records kept in the local cache to avoid querying the Open Policy Agent for every request. Defines how often the cached authorization decisions are reloaded from the Open Policy Agent server. In milliseconds. Defaults to `3600000`. - grantsAlwaysLatest: - type: boolean - description: "Controls whether the latest grants are fetched for a new session. When enabled, grants are retrieved from Keycloak and cached for the user. The default value is `false`." - grantsGcPeriodSeconds: - type: integer - minimum: 1 - description: "The time, in seconds, between consecutive runs of a job that cleans stale grants from the cache. The default value is 300." - grantsMaxIdleTimeSeconds: - type: integer - minimum: 1 - description: "The time, in seconds, after which an idle grant can be evicted from the cache. The default value is 300." - grantsRefreshPeriodSeconds: - type: integer - minimum: 0 - description: The time between two consecutive grants refresh runs in seconds. The default value is 60. - grantsRefreshPoolSize: - type: integer - minimum: 1 - description: "The number of threads to use to refresh grants for active sessions. The more threads, the more parallelism, so the sooner the job completes. However, using more threads places a heavier load on the authorization server. The default value is 5." - httpRetries: - type: integer - minimum: 0 - description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." - includeAcceptHeader: - type: boolean - description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. - initialCacheCapacity: - type: integer - description: Initial capacity of the local cache used by the authorizer to avoid querying the Open Policy Agent for every request Defaults to `5000`. - maximumCacheSize: - type: integer - description: Maximum capacity of the local cache used by the authorizer to avoid querying the Open Policy Agent for every request. Defaults to `50000`. - readTimeoutSeconds: - type: integer - minimum: 1 - description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." - superUsers: - type: array - items: + - tls + description: Configures listeners of Kafka brokers. + config: + x-kubernetes-preserve-unknown-fields: true + type: object + description: "Kafka broker config properties with the following prefixes cannot be set: listeners, advertised., broker., listener., host.name, port, inter.broker.listener.name, sasl., ssl., security., password., log.dir, zookeeper.connect, zookeeper.set.acl, zookeeper.ssl, zookeeper.clientCnxnSocket, authorizer., super.user, cruise.control.metrics.topic, cruise.control.metrics.reporter.bootstrap.servers, node.id, process.roles, controller., metadata.log.dir, zookeeper.metadata.migration.enable (with the exception of: zookeeper.connection.timeout.ms, sasl.server.max.receive.size, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, ssl.secure.random.implementation, cruise.control.metrics.topic.num.partitions, cruise.control.metrics.topic.replication.factor, cruise.control.metrics.topic.retention.ms, cruise.control.metrics.topic.auto.create.retries, cruise.control.metrics.topic.auto.create.timeout.ms, cruise.control.metrics.topic.min.insync.replicas, controller.quorum.election.backoff.max.ms, controller.quorum.election.timeout.ms, controller.quorum.fetch.timeout.ms)." + storage: + type: object + properties: + class: type: string - description: "List of super users, which are user principals with unlimited access rights." - supportsAdminApi: - type: boolean - description: Indicates whether the custom authorizer supports the APIs for managing ACLs using the Kafka Admin API. Defaults to `false`. - tlsTrustedCertificates: - type: array - items: - type: object - properties: - secretName: - type: string - description: The name of the Secret containing the certificate. - certificate: - type: string - description: The name of the file certificate in the Secret. - required: - - secretName - - certificate - description: Trusted certificates for TLS connection to the OAuth server. - tokenEndpointUri: - type: string - description: Authorization server token endpoint URI. - type: - type: string - enum: - - simple - - opa - - keycloak - - custom - description: "Authorization type. Currently, the supported types are `simple`, `keycloak`, `opa` and `custom`. `simple` authorization type uses Kafka's built-in authorizer for authorization. `keycloak` authorization type uses Keycloak Authorization Services for authorization. `opa` authorization type uses Open Policy Agent based authorization.`custom` authorization type uses user-provided implementation for authorization." - url: - type: string - example: http://opa:8181/v1/data/kafka/authz/allow - description: The URL used to connect to the Open Policy Agent server. The URL has to include the policy which will be queried by the authorizer. This option is required. - required: - - type - description: Authorization configuration for Kafka brokers. - rack: - type: object - properties: - topologyKey: - type: string - example: topology.kubernetes.io/zone - description: "A key that matches labels assigned to the Kubernetes cluster nodes. The value of the label is used to set a broker's `broker.rack` config, and the `client.rack` config for Kafka Connect or MirrorMaker 2." - required: - - topologyKey - description: Configuration of the `broker.rack` broker config. - brokerRackInitImage: - type: string - description: The image of the init container used for initializing the `broker.rack`. - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: + description: The storage class to use for dynamic volume allocation. + deleteClaim: + type: boolean + description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. + id: + type: integer + minimum: 0 + description: Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'. + kraftMetadata: type: string - type: object - description: A map of -XX options to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: - type: object - properties: - name: - type: string - description: The system property name. - value: - type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for pods. - jmxOptions: - type: object - properties: - authentication: - type: object - properties: - type: - type: string - enum: - - password - description: Authentication type. Currently the only supported types are `password`.`password` type creates a username and protected port with no TLS. - required: - - type - description: Authentication configuration for connecting to the JMX port. - description: JMX Options for Kafka brokers. - resources: - type: object - properties: - claims: - type: array - items: - type: object - properties: - name: - type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - metricsConfig: - type: object - properties: - type: - type: string - enum: - - jmxPrometheusExporter - description: Metrics type. Only 'jmxPrometheusExporter' supported currently. - valueFrom: - type: object - properties: - configMapKeyRef: + enum: + - shared + description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." + overrides: + type: array + items: type: object properties: - key: - type: string - name: + class: type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' - required: - - type - - valueFrom - description: Metrics configuration. - logging: - type: object - properties: - loggers: - additionalProperties: + description: The storage class to use for dynamic volume allocation for this broker. + broker: + type: integer + description: Id of the kafka broker (broker identifier). + description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. + selector: + additionalProperties: + type: string + type: object + description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. + size: type: string - type: object - description: A Map from logger name to logger level. - type: - type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: - type: object - properties: - configMapKeyRef: + description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." + sizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." + type: + type: string + enum: + - ephemeral + - persistent-claim + - jbod + description: "Storage type, must be either 'ephemeral', 'persistent-claim', or 'jbod'." + volumes: + type: array + items: type: object properties: - key: - type: string - name: + class: type: string - optional: + description: The storage class to use for dynamic volume allocation. + deleteClaim: type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration for Kafka. - template: - type: object - properties: - statefulset: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - podManagementPolicy: - type: string - enum: - - OrderedReady - - Parallel - description: PodManagementPolicy which will be used for this StatefulSet. Valid values are `Parallel` and `OrderedReady`. Defaults to `Parallel`. - description: Template for Kafka `StatefulSet`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: - type: object - properties: - name: - type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: + description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. + id: type: integer - fsGroupChangePolicy: + minimum: 0 + description: Storage identification number. Mandatory for storage volumes defined with a `jbod` storage type configuration. + kraftMetadata: type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: - type: string - type: - type: string - supplementalGroups: - type: array - items: - type: integer - sysctls: + enum: + - shared + description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." + overrides: type: array items: type: object properties: - name: + class: type: string - value: - type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: + description: The storage class to use for dynamic volume allocation for this broker. + broker: + type: integer + description: Id of the kafka broker (broker identifier). + description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. + selector: + additionalProperties: + type: string type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: + description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. + size: + type: string + description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." + sizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." + type: + type: string + enum: + - ephemeral + - persistent-claim + description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." + required: + - type + description: List of volumes as Storage objects representing the JBOD disks array. + required: + - type + description: Storage configuration (disk). Cannot be updated. This property is required when node pools are not used. + authorization: + type: object + properties: + allowOnError: + type: boolean + description: "Defines whether a Kafka client should be allowed or denied by default when the authorizer fails to query the Open Policy Agent, for example, when it is temporarily unavailable). Defaults to `false` - all actions will be denied." + authorizerClass: + type: string + description: "Authorization implementation class, which must be available in classpath." + clientId: + type: string + description: OAuth Client ID which the Kafka client can use to authenticate against the OAuth server and use the token endpoint URI. + connectTimeoutSeconds: + type: integer + minimum: 1 + description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." + delegateToKafkaAcls: + type: boolean + description: Whether authorization decision should be delegated to the 'Simple' authorizer if DENIED by Keycloak Authorization Services policies. Default value is `false`. + disableTlsHostnameVerification: + type: boolean + description: Enable or disable TLS hostname verification. Default value is `false`. + enableMetrics: + type: boolean + description: Enable or disable OAuth metrics. The default value is `false`. + expireAfterMs: + type: integer + description: The expiration of the records kept in the local cache to avoid querying the Open Policy Agent for every request. Defines how often the cached authorization decisions are reloaded from the Open Policy Agent server. In milliseconds. Defaults to `3600000`. + grantsAlwaysLatest: + type: boolean + description: "Controls whether the latest grants are fetched for a new session. When enabled, grants are retrieved from Keycloak and cached for the user. The default value is `false`." + grantsGcPeriodSeconds: + type: integer + minimum: 1 + description: "The time, in seconds, between consecutive runs of a job that cleans stale grants from the cache. The default value is 300." + grantsMaxIdleTimeSeconds: + type: integer + minimum: 1 + description: "The time, in seconds, after which an idle grant can be evicted from the cache. The default value is 300." + grantsRefreshPeriodSeconds: + type: integer + minimum: 0 + description: The time between two consecutive grants refresh runs in seconds. The default value is 60. + grantsRefreshPoolSize: + type: integer + minimum: 1 + description: "The number of threads to use to refresh grants for active sessions. The more threads, the more parallelism, so the sooner the job completes. However, using more threads places a heavier load on the authorization server. The default value is 5." + httpRetries: + type: integer + minimum: 0 + description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." + includeAcceptHeader: + type: boolean + description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. + initialCacheCapacity: + type: integer + description: Initial capacity of the local cache used by the authorizer to avoid querying the Open Policy Agent for every request Defaults to `5000`. + maximumCacheSize: + type: integer + description: Maximum capacity of the local cache used by the authorizer to avoid querying the Open Policy Agent for every request. Defaults to `50000`. + readTimeoutSeconds: + type: integer + minimum: 1 + description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." + superUsers: + type: array + items: + type: string + description: "List of super users, which are user principals with unlimited access rights." + supportsAdminApi: + type: boolean + description: Indicates whether the custom authorizer supports the APIs for managing ACLs using the Kafka Admin API. Defaults to `false`. + tlsTrustedCertificates: + type: array + items: + type: object + properties: + secretName: + type: string + description: The name of the Secret containing the certificate. + certificate: + type: string + description: The name of the file certificate in the Secret. + required: + - secretName + - certificate + description: Trusted certificates for TLS connection to the OAuth server. + tokenEndpointUri: + type: string + description: Authorization server token endpoint URI. + type: + type: string + enum: + - simple + - opa + - keycloak + - custom + description: "Authorization type. Currently, the supported types are `simple`, `keycloak`, `opa` and `custom`. `simple` authorization type uses Kafka's built-in authorizer for authorization. `keycloak` authorization type uses Keycloak Authorization Services for authorization. `opa` authorization type uses Open Policy Agent based authorization.`custom` authorization type uses user-provided implementation for authorization." + url: + type: string + example: http://opa:8181/v1/data/kafka/authz/allow + description: The URL used to connect to the Open Policy Agent server. The URL has to include the policy which will be queried by the authorizer. This option is required. + required: + - type + description: Authorization configuration for Kafka brokers. + rack: + type: object + properties: + topologyKey: + type: string + example: topology.kubernetes.io/zone + description: "A key that matches labels assigned to the Kubernetes cluster nodes. The value of the label is used to set a broker's `broker.rack` config, and the `client.rack` config for Kafka Connect or MirrorMaker 2." + required: + - topologyKey + description: Configuration of the `broker.rack` broker config. + brokerRackInitImage: + type: string + description: The image of the init container used for initializing the `broker.rack`. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: + type: string + type: object + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: + type: object + properties: + name: + type: string + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for pods. + jmxOptions: + type: object + properties: + authentication: + type: object + properties: + type: + type: string + enum: + - password + description: Authentication type. Currently the only supported types are `password`.`password` type creates a username and protected port with no TLS. + required: + - type + description: Authentication configuration for connecting to the JMX port. + description: JMX Options for Kafka brokers. + resources: + type: object + properties: + claims: + type: array + items: + type: object + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + metricsConfig: + type: object + properties: + type: + type: string + enum: + - jmxPrometheusExporter + description: Metrics type. Only 'jmxPrometheusExporter' supported currently. + valueFrom: + type: object + properties: + configMapKeyRef: + type: object + properties: + key: + type: string + name: + type: string + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' + required: + - type + - valueFrom + description: Metrics configuration. + logging: + type: object + properties: + loggers: + additionalProperties: + type: string + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: + type: object + properties: + key: + type: string + name: + type: string + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration for Kafka. + template: + type: object + properties: + statefulset: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + podManagementPolicy: + type: string + enum: + - OrderedReady + - Parallel + description: PodManagementPolicy which will be used for this StatefulSet. Valid values are `Parallel` and `OrderedReady`. Defaults to `Parallel`. + description: Template for Kafka `StatefulSet`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: + type: object + properties: + name: + type: string + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + supplementalGroups: + type: array + items: + type: integer + sysctls: + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: object properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchFields: - type: array - items: + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: object - properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + podAntiAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchFields: - type: array - items: + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: + namespaces: + type: array + items: + type: string + topologyKey: type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - namespaceSelector: + description: The pod's affinity rules. + tolerations: + type: array + items: + type: object + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - podAntiAffinity: + type: object + matchLabelKeys: + type: array + items: + type: string + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: type: object properties: - preferredDuringSchedulingIgnoredDuringExecution: + hostnames: type: array items: - type: object - properties: - podAffinityTerm: + type: string + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + key: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: type: object properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: type: string - mismatchLabelKeys: - type: array - items: + format: type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: type: string - topologyKey: + readOnly: + type: boolean + volumeAttributes: + additionalProperties: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for Kafka `Pods`. + bootstrapService: + type: object + properties: + metadata: type: object properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - topologySpreadConstraints: - type: array - items: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for Kafka bootstrap `Service`. + brokersService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for Kafka broker `Service`. + externalBootstrapService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka external bootstrap `Service`. + perPodService: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka per-pod `Services` used for access from outside of Kubernetes. + externalBootstrapRoute: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka external bootstrap `Route`. + perPodRoute: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka per-pod `Routes` used for access from outside of OpenShift. + externalBootstrapIngress: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka external bootstrap `Ingress`. + perPodIngress: + type: object + properties: + metadata: type: object properties: - labelSelector: + labels: + additionalProperties: + type: string type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka per-pod `Ingress` used for access from outside of Kubernetes. + persistentVolumeClaim: + type: object + properties: + metadata: type: object properties: - hostnames: - type: array - items: + labels: + additionalProperties: type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: - type: array - items: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for all Kafka `PersistentVolumeClaims`. + podDisruptionBudget: + type: object + properties: + metadata: type: object properties: - name: - type: string - description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. - secret: + labels: + additionalProperties: + type: string type: object - properties: - defaultMode: - type: integer - items: - type: array - items: - type: object - properties: - key: - type: string - mode: - type: integer - path: - type: string - optional: - type: boolean - secretName: - type: string - description: Secret to use populate the volume. - configMap: + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. + maxUnavailable: + type: integer + minimum: 0 + description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." + description: Template for Kafka `PodDisruptionBudget`. + kafkaContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: type: object properties: - defaultMode: - type: integer - items: + add: type: array items: - type: object - properties: - key: - type: string - mode: - type: integer - path: - type: string - name: - type: string - optional: - type: boolean - description: ConfigMap to use to populate the volume. - emptyDir: - type: object - properties: - medium: - type: string - sizeLimit: - type: object - properties: - amount: - type: string - format: - type: string - description: EmptyDir to use to populate the volume. - csi: - type: object - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string - readOnly: - type: boolean - volumeAttributes: - additionalProperties: type: string - type: object - description: CSI object to use to populate the volume. - description: Additional volumes that can be mounted to the pod. - description: Template for Kafka `Pods`. - bootstrapService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for Kafka bootstrap `Service`. - brokersService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for Kafka broker `Service`. - externalBootstrapService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka external bootstrap `Service`. - perPodService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka per-pod `Services` used for access from outside of Kubernetes. - externalBootstrapRoute: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka external bootstrap `Route`. - perPodRoute: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka per-pod `Routes` used for access from outside of OpenShift. - externalBootstrapIngress: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka external bootstrap `Ingress`. - perPodIngress: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka per-pod `Ingress` used for access from outside of Kubernetes. - persistentVolumeClaim: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for all Kafka `PersistentVolumeClaims`. - podDisruptionBudget: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. - maxUnavailable: - type: integer - minimum: 0 - description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." - description: Template for Kafka `PodDisruptionBudget`. - kafkaContainer: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: - type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - drop: - type: array - items: + role: type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + volumeMounts: + type: array + items: type: object properties: - level: + mountPath: type: string - role: + mountPropagation: type: string - type: - type: string - user: + name: type: string - seccompProfile: - type: object - properties: - localhostProfile: + readOnly: + type: boolean + subPath: type: string - type: + subPathExpr: type: string - windowsOptions: + description: Additional volume mounts which should be applied to the container. + description: Template for the Kafka broker container. + initContainer: + type: object + properties: + env: + type: array + items: type: object properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + name: type: string - hostProcess: - type: boolean - runAsUserName: + description: The environment variable key. + value: type: string - description: Security context for the container. - description: Template for the Kafka broker container. - initContainer: - type: object - properties: - env: - type: array - items: + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: type: object properties: - name: - type: string - description: The environment variable key. - value: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - drop: - type: array - items: + role: type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + volumeMounts: + type: array + items: type: object properties: - level: + mountPath: type: string - role: + mountPropagation: type: string - type: + name: type: string - user: + readOnly: + type: boolean + subPath: type: string - seccompProfile: - type: object - properties: - localhostProfile: + subPathExpr: type: string - type: + description: Additional volume mounts which should be applied to the container. + description: Template for the Kafka init container. + clusterCaCert: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - gmsaCredentialSpecName: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Secret with Kafka Cluster certificate public key. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - hostProcess: - type: boolean - runAsUserName: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - description: Security context for the container. - description: Template for the Kafka init container. - clusterCaCert: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Secret with Kafka Cluster certificate public key. - serviceAccount: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Kafka service account. - jmxSecret: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Secret of the Kafka Cluster JMX authentication. - clusterRoleBinding: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Kafka ClusterRoleBinding. - podSet: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka `StrimziPodSet` resource. - description: Template for Kafka cluster resources. The template allows users to specify how the Kubernetes resources are generated. - tieredStorage: - type: object - properties: - remoteStorageManager: - type: object - properties: - className: - type: string - description: The class name for the `RemoteStorageManager` implementation. - classPath: - type: string - description: The class path for the `RemoteStorageManager` implementation. - config: - additionalProperties: - type: string - type: object - description: "The additional configuration map for the `RemoteStorageManager` implementation. Keys will be automatically prefixed with `rsm.config.`, and added to Kafka broker configuration." - description: Configuration for the Remote Storage Manager. - type: - type: string - enum: - - custom - description: "Storage type, only 'custom' is supported at the moment." - required: - - type - description: Configure the tiered storage feature for Kafka brokers. - required: - - listeners - description: Configuration of the Kafka cluster. - zookeeper: - type: object - properties: - replicas: - type: integer - minimum: 1 - description: The number of pods in the cluster. - image: - type: string - description: "The container image used for ZooKeeper pods. If no image name is explicitly specified, it is determined based on the Kafka version set in `spec.kafka.version`. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." - storage: - type: object - properties: - class: - type: string - description: The storage class to use for dynamic volume allocation. - deleteClaim: - type: boolean - description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. - id: - type: integer - minimum: 0 - description: Storage identification number. Mandatory for storage volumes defined with a `jbod` storage type configuration. - kraftMetadata: - type: string - enum: - - shared - description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." - overrides: - type: array - items: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Kafka service account. + jmxSecret: type: object properties: - class: - type: string - description: The storage class to use for dynamic volume allocation for this broker. - broker: - type: integer - description: Id of the kafka broker (broker identifier). - description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. - selector: - additionalProperties: - type: string - type: object - description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. - size: - type: string - description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." - sizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." - type: - type: string - enum: - - ephemeral - - persistent-claim - description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." - required: - - type - description: Storage configuration (disk). Cannot be updated. - config: - x-kubernetes-preserve-unknown-fields: true - type: object - description: "The ZooKeeper broker config. Properties with the following prefixes cannot be set: server., dataDir, dataLogDir, clientPort, authProvider, quorum.auth, requireClientAuthScheme, snapshot.trust.empty, standaloneEnabled, reconfigEnabled, 4lw.commands.whitelist, secureClientPort, ssl., serverCnxnFactory, sslQuorum (with the exception of: ssl.protocol, ssl.quorum.protocol, ssl.enabledProtocols, ssl.quorum.enabledProtocols, ssl.ciphersuites, ssl.quorum.ciphersuites, ssl.hostnameVerification, ssl.quorum.hostnameVerification)." - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: - type: string - type: object - description: A map of -XX options to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Secret of the Kafka Cluster JMX authentication. + clusterRoleBinding: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Kafka ClusterRoleBinding. + podSet: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka `StrimziPodSet` resource. + description: Template for Kafka cluster resources. The template allows users to specify how the Kubernetes resources are generated. + tieredStorage: + type: object + properties: + remoteStorageManager: type: object properties: - name: + className: type: string - description: The system property name. - value: + description: The class name for the `RemoteStorageManager` implementation. + classPath: type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for pods. - jmxOptions: - type: object - properties: - authentication: - type: object - properties: - type: + description: The class path for the `RemoteStorageManager` implementation. + config: + additionalProperties: + type: string + type: object + description: "The additional configuration map for the `RemoteStorageManager` implementation. Keys will be automatically prefixed with `rsm.config.`, and added to Kafka broker configuration." + description: Configuration for the Remote Storage Manager. + type: + type: string + enum: + - custom + description: "Storage type, only 'custom' is supported at the moment." + required: + - type + description: Configure the tiered storage feature for Kafka brokers. + required: + - listeners + description: Configuration of the Kafka cluster. + zookeeper: + type: object + properties: + replicas: + type: integer + minimum: 1 + description: The number of pods in the cluster. + image: + type: string + description: "The container image used for ZooKeeper pods. If no image name is explicitly specified, it is determined based on the Kafka version set in `spec.kafka.version`. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." + storage: + type: object + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation. + deleteClaim: + type: boolean + description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. + id: + type: integer + minimum: 0 + description: Storage identification number. Mandatory for storage volumes defined with a `jbod` storage type configuration. + kraftMetadata: + type: string + enum: + - shared + description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." + overrides: + type: array + items: + type: object + properties: + class: + type: string + description: The storage class to use for dynamic volume allocation for this broker. + broker: + type: integer + description: Id of the kafka broker (broker identifier). + description: Overrides for individual brokers. The `overrides` field allows to specify a different configuration for different brokers. + selector: + additionalProperties: type: string - enum: - - password - description: Authentication type. Currently the only supported types are `password`.`password` type creates a username and protected port with no TLS. - required: + type: object + description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. + size: + type: string + description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." + sizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." + type: + type: string + enum: + - ephemeral + - persistent-claim + description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." + required: - type - description: Authentication configuration for connecting to the JMX port. - description: JMX Options for Zookeeper nodes. - resources: - type: object - properties: - claims: - type: array - items: + description: Storage configuration (disk). Cannot be updated. + config: + x-kubernetes-preserve-unknown-fields: true + type: object + description: "The ZooKeeper broker config. Properties with the following prefixes cannot be set: server., dataDir, dataLogDir, clientPort, authProvider, quorum.auth, requireClientAuthScheme, snapshot.trust.empty, standaloneEnabled, reconfigEnabled, 4lw.commands.whitelist, secureClientPort, ssl., serverCnxnFactory, sslQuorum (with the exception of: ssl.protocol, ssl.quorum.protocol, ssl.enabledProtocols, ssl.quorum.enabledProtocols, ssl.ciphersuites, ssl.quorum.ciphersuites, ssl.hostnameVerification, ssl.quorum.hostnameVerification)." + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: + type: string type: object - properties: - name: - type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - metricsConfig: - type: object - properties: - type: - type: string - enum: - - jmxPrometheusExporter - description: Metrics type. Only 'jmxPrometheusExporter' supported currently. - valueFrom: - type: object - properties: - configMapKeyRef: + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: type: object properties: - key: - type: string name: type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' - required: - - type - - valueFrom - description: Metrics configuration. - logging: - type: object - properties: - loggers: - additionalProperties: - type: string - type: object - description: A Map from logger name to logger level. - type: - type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: - type: object - properties: - configMapKeyRef: + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for pods. + jmxOptions: + type: object + properties: + authentication: + type: object + properties: + type: + type: string + enum: + - password + description: Authentication type. Currently the only supported types are `password`.`password` type creates a username and protected port with no TLS. + required: + - type + description: Authentication configuration for connecting to the JMX port. + description: JMX Options for Zookeeper nodes. + resources: + type: object + properties: + claims: + type: array + items: type: object properties: - key: - type: string name: type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration for ZooKeeper. - template: - type: object - properties: - statefulset: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: + 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 + 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 + type: object + description: CPU and memory resources to reserve. + metricsConfig: + type: object + properties: + type: + type: string + enum: + - jmxPrometheusExporter + description: Metrics type. Only 'jmxPrometheusExporter' supported currently. + valueFrom: + type: object + properties: + configMapKeyRef: + type: object + properties: + key: type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: + name: type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - podManagementPolicy: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' + required: + - type + - valueFrom + description: Metrics configuration. + logging: + type: object + properties: + loggers: + additionalProperties: type: string - enum: - - OrderedReady - - Parallel - description: PodManagementPolicy which will be used for this StatefulSet. Valid values are `Parallel` and `OrderedReady`. Defaults to `Parallel`. - description: Template for ZooKeeper `StatefulSet`. - podSet: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for ZooKeeper `StrimziPodSet` resource. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: + key: + type: string name: type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration for ZooKeeper. + template: + type: object + properties: + statefulset: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + podManagementPolicy: + type: string + enum: + - OrderedReady + - Parallel + description: PodManagementPolicy which will be used for this StatefulSet. Valid values are `Parallel` and `OrderedReady`. Defaults to `Parallel`. + description: Template for ZooKeeper `StatefulSet`. + podSet: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - role: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - type: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for ZooKeeper `StrimziPodSet` resource. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - user: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - seccompProfile: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - localhostProfile: - type: string - type: + name: type: string - supplementalGroups: - type: array - items: + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: type: integer - sysctls: - type: array - items: + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: type: object properties: - name: + level: type: string - value: + role: type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + supplementalGroups: + type: array + items: + type: integer + sysctls: + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: object properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchFields: - type: array - items: + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: object - properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + podAntiAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchFields: - type: array - items: + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: + namespaces: + type: array + items: + type: string + topologyKey: type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - namespaceSelector: + description: The pod's affinity rules. + tolerations: + type: array + items: + type: object + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - podAntiAffinity: + type: object + matchLabelKeys: + type: array + items: + type: string + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: type: object properties: - preferredDuringSchedulingIgnoredDuringExecution: + hostnames: type: array items: - type: object - properties: - podAffinityTerm: + type: string + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + key: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: type: object properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: type: string - topologyKey: + readOnly: + type: boolean + volumeAttributes: + additionalProperties: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for ZooKeeper `Pods`. + clientService: + type: object + properties: + metadata: type: object properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - topologySpreadConstraints: - type: array - items: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for ZooKeeper client `Service`. + nodesService: + type: object + properties: + metadata: type: object properties: - labelSelector: + labels: + additionalProperties: + type: string type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for ZooKeeper nodes `Service`. + persistentVolumeClaim: + type: object + properties: + metadata: type: object properties: - hostnames: - type: array - items: + labels: + additionalProperties: type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: - type: array - items: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for all ZooKeeper `PersistentVolumeClaims`. + podDisruptionBudget: + type: object + properties: + metadata: type: object properties: - name: - type: string - description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. - secret: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. + maxUnavailable: + type: integer + minimum: 0 + description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." + description: Template for ZooKeeper `PodDisruptionBudget`. + zookeeperContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: type: object properties: - defaultMode: - type: integer - items: + add: type: array items: - type: object - properties: - key: - type: string - mode: - type: integer - path: - type: string - optional: - type: boolean - secretName: - type: string - description: Secret to use populate the volume. - configMap: - type: object - properties: - defaultMode: - type: integer - items: + type: string + drop: type: array items: - type: object - properties: - key: - type: string - mode: - type: integer - path: - type: string - name: - type: string - optional: - type: boolean - description: ConfigMap to use to populate the volume. - emptyDir: - type: object - properties: - medium: - type: string - sizeLimit: - type: object - properties: - amount: - type: string - format: - type: string - description: EmptyDir to use to populate the volume. - csi: - type: object - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string - readOnly: - type: boolean - volumeAttributes: - additionalProperties: type: string - type: object - description: CSI object to use to populate the volume. - description: Additional volumes that can be mounted to the pod. - description: Template for ZooKeeper `Pods`. - clientService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for ZooKeeper client `Service`. - nodesService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for ZooKeeper nodes `Service`. - persistentVolumeClaim: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for all ZooKeeper `PersistentVolumeClaims`. - podDisruptionBudget: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. - maxUnavailable: - type: integer - minimum: 0 - description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." - description: Template for ZooKeeper `PodDisruptionBudget`. - zookeeperContainer: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: + privileged: + type: boolean + procMount: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - drop: - type: array - items: + role: type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + volumeMounts: + type: array + items: type: object properties: - level: + mountPath: type: string - role: + mountPropagation: type: string - type: + name: type: string - user: + readOnly: + type: boolean + subPath: type: string - seccompProfile: - type: object - properties: - localhostProfile: + subPathExpr: type: string - type: + description: Additional volume mounts which should be applied to the container. + description: Template for the ZooKeeper container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - gmsaCredentialSpecName: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the ZooKeeper service account. + jmxSecret: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - hostProcess: - type: boolean - runAsUserName: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - description: Security context for the container. - description: Template for the ZooKeeper container. - serviceAccount: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the ZooKeeper service account. - jmxSecret: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Secret of the Zookeeper Cluster JMX authentication. + description: Template for ZooKeeper cluster resources. The template allows users to specify how the Kubernetes resources are generated. + required: + - replicas + - storage + description: Configuration of the ZooKeeper cluster. This section is required when running a ZooKeeper-based Apache Kafka cluster. + entityOperator: + type: object + properties: + topicOperator: + type: object + properties: + watchedNamespace: + type: string + description: The namespace the Topic Operator should watch. + image: + type: string + description: The image to use for the Topic Operator. + reconciliationIntervalSeconds: + type: integer + minimum: 0 + description: Interval between periodic reconciliations. + zookeeperSessionTimeoutSeconds: + type: integer + minimum: 0 + description: Timeout for the ZooKeeper session. + startupProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod startup checking. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + resources: + type: object + properties: + claims: + type: array + items: type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Secret of the Zookeeper Cluster JMX authentication. - description: Template for ZooKeeper cluster resources. The template allows users to specify how the Kubernetes resources are generated. - required: - - replicas - - storage - description: Configuration of the ZooKeeper cluster. This section is required when running a ZooKeeper-based Apache Kafka cluster. - entityOperator: - type: object - properties: - topicOperator: - type: object - properties: - watchedNamespace: - type: string - description: The namespace the Topic Operator should watch. - image: - type: string - description: The image to use for the Topic Operator. - reconciliationIntervalSeconds: - type: integer - minimum: 0 - description: Interval between periodic reconciliations. - zookeeperSessionTimeoutSeconds: - type: integer - minimum: 0 - description: Timeout for the ZooKeeper session. - startupProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod startup checking. - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking. - resources: - type: object - properties: - claims: - type: array - items: + properties: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + topicMetadataMaxAttempts: + type: integer + minimum: 0 + description: The number of attempts at getting topic metadata. + logging: + type: object + properties: + loggers: + additionalProperties: + type: string + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: type: object properties: - name: - type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - topicMetadataMaxAttempts: - type: integer - minimum: 0 - description: The number of attempts at getting topic metadata. - logging: - type: object - properties: - loggers: - additionalProperties: + configMapKeyRef: + type: object + properties: + key: + type: string + name: + type: string + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: + type: string + type: object + description: A map of -XX options to the JVM. + "-Xmx": type: string - type: object - description: A Map from logger name to logger level. - type: - type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: - type: object - properties: - configMapKeyRef: + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: type: object properties: - key: + name: + type: string + description: The system property name. + value: type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for pods. + description: Configuration of the Topic Operator. + userOperator: + type: object + properties: + watchedNamespace: + type: string + description: The namespace the User Operator should watch. + image: + type: string + description: The image to use for the User Operator. + reconciliationIntervalSeconds: + type: integer + minimum: 0 + description: Interval between periodic reconciliations. + zookeeperSessionTimeoutSeconds: + type: integer + minimum: 0 + description: Timeout for the ZooKeeper session. + secretPrefix: + type: string + description: The prefix that will be added to the KafkaUser name to be used as the Secret name. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + resources: + type: object + properties: + claims: + type: array + items: + type: object + properties: name: type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: - type: string - type: object - description: A map of -XX options to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: + 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 + 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 + type: object + description: CPU and memory resources to reserve. + logging: + type: object + properties: + loggers: + additionalProperties: + type: string type: object - properties: - name: - type: string - description: The system property name. - value: - type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for pods. - description: Configuration of the Topic Operator. - userOperator: - type: object - properties: - watchedNamespace: - type: string - description: The namespace the User Operator should watch. - image: - type: string - description: The image to use for the User Operator. - reconciliationIntervalSeconds: - type: integer - minimum: 0 - description: Interval between periodic reconciliations. - zookeeperSessionTimeoutSeconds: - type: integer - minimum: 0 - description: Timeout for the ZooKeeper session. - secretPrefix: - type: string - description: The prefix that will be added to the KafkaUser name to be used as the Secret name. - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking. - resources: - type: object - properties: - claims: - type: array - items: + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: type: object properties: - name: - type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - logging: - type: object - properties: - loggers: - additionalProperties: + configMapKeyRef: + type: object + properties: + key: + type: string + name: + type: string + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: + type: string + type: object + description: A map of -XX options to the JVM. + "-Xmx": type: string - type: object - description: A Map from logger name to logger level. - type: - type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: - type: object - properties: - configMapKeyRef: + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: type: object properties: - key: + name: type: string + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for pods. + description: Configuration of the User Operator. + tlsSidecar: + type: object + properties: + image: + type: string + description: The docker image for the container. + resources: + type: object + properties: + claims: + type: array + items: + type: object + properties: name: type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: - type: string - type: object - description: A map of -XX options to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: + 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 type: object - properties: - name: - type: string - description: The system property name. - value: - type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for pods. - description: Configuration of the User Operator. - tlsSidecar: - type: object - properties: - image: - type: string - description: The docker image for the container. - resources: - type: object - properties: - claims: - type: array - items: + 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 type: object - properties: - name: - type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking. - logLevel: - type: string - enum: - - emerg - - alert - - crit - - err - - warning - - notice - - info - - debug - description: The log level for the TLS sidecar. Default value is `notice`. - description: TLS sidecar configuration. - template: - type: object - properties: - deployment: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - deploymentStrategy: - type: string - enum: - - RollingUpdate - - Recreate - description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. - description: Template for Entity Operator `Deployment`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + description: CPU and memory resources to reserve. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + logLevel: + type: string + enum: + - emerg + - alert + - crit + - err + - warning + - notice + - info + - debug + description: The log level for the TLS sidecar. Default value is `notice`. + description: TLS sidecar configuration. + template: + type: object + properties: + deployment: + type: object + properties: + metadata: type: object properties: - name: - type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: + labels: + additionalProperties: type: string - role: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - type: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + deploymentStrategy: + type: string + enum: + - RollingUpdate + - Recreate + description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. + description: Template for Entity Operator `Deployment`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - user: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - seccompProfile: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - localhostProfile: - type: string - type: + name: type: string - supplementalGroups: - type: array - items: + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: type: integer - sysctls: - type: array - items: + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: type: object properties: - name: + level: type: string - value: + role: type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + supplementalGroups: + type: array + items: + type: integer + sysctls: + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: object properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + operator: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: object - properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchFields: - type: array - items: + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: + namespaces: + type: array + items: + type: string + topologyKey: type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - namespaces: - type: array - items: - type: string - topologyKey: + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + topologyKey: + type: string + podAntiAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchLabels: - additionalProperties: + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - type: object - namespaces: - type: array - items: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: - type: string - podAntiAffinity: + description: The pod's affinity rules. + tolerations: + type: array + items: type: object properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: + key: + type: string + operator: + type: string + values: type: array items: type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: type: array items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + type: string + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: + type: object + properties: + hostnames: + type: array + items: + type: string + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: type: object properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - topologySpreadConstraints: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: type: object properties: - key: + amount: type: string - operator: + format: type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: type: string - type: object - matchLabelKeys: - type: array - items: + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for Entity Operator `Pods`. + topicOperatorContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: - type: object - properties: - hostnames: - type: array - items: + description: The environment variable key. + value: type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: - type: array - items: + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: type: object properties: - name: - type: string - description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. - secret: + allowPrivilegeEscalation: + type: boolean + capabilities: type: object properties: - defaultMode: - type: integer - items: + add: type: array items: - type: object - properties: - key: - type: string - mode: - type: integer - path: - type: string - optional: - type: boolean - secretName: - type: string - description: Secret to use populate the volume. - configMap: - type: object - properties: - defaultMode: - type: integer - items: + type: string + drop: type: array items: - type: object - properties: - key: - type: string - mode: - type: integer - path: - type: string - name: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - optional: - type: boolean - description: ConfigMap to use to populate the volume. - emptyDir: + role: + type: string + type: + type: string + user: + type: string + seccompProfile: type: object properties: - medium: + localhostProfile: type: string - sizeLimit: - type: object - properties: - amount: - type: string - format: - type: string - description: EmptyDir to use to populate the volume. - csi: + type: + type: string + windowsOptions: type: object properties: - driver: + gmsaCredentialSpec: type: string - fsType: + gmsaCredentialSpecName: type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string - readOnly: + hostProcess: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. - description: Additional volumes that can be mounted to the pod. - description: Template for Entity Operator `Pods`. - topicOperatorContainer: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: - type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: - type: string - drop: - type: array - items: + runAsUserName: type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + description: Security context for the container. + volumeMounts: + type: array + items: type: object properties: - level: + mountPath: type: string - role: + mountPropagation: + type: string + name: type: string - type: + readOnly: + type: boolean + subPath: type: string - user: + subPathExpr: type: string - seccompProfile: + description: Additional volume mounts which should be applied to the container. + description: Template for the Entity Topic Operator container. + userOperatorContainer: + type: object + properties: + env: + type: array + items: type: object properties: - localhostProfile: + name: type: string - type: + description: The environment variable key. + value: type: string - windowsOptions: + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + volumeMounts: + type: array + items: type: object properties: - gmsaCredentialSpec: + mountPath: + type: string + mountPropagation: type: string - gmsaCredentialSpecName: + name: type: string - hostProcess: + readOnly: type: boolean - runAsUserName: + subPath: type: string - description: Security context for the container. - description: Template for the Entity Topic Operator container. - userOperatorContainer: - type: object - properties: - env: - type: array - items: + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. + description: Template for the Entity User Operator container. + tlsSidecarContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: type: object properties: - name: - type: string - description: The environment variable key. - value: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: type: string - drop: - type: array - items: + gmsaCredentialSpecName: type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + volumeMounts: + type: array + items: type: object properties: - level: + mountPath: type: string - role: + mountPropagation: type: string - type: - type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: + name: type: string - type: + readOnly: + type: boolean + subPath: type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: + subPathExpr: type: string - gmsaCredentialSpecName: + description: Additional volume mounts which should be applied to the container. + description: Template for the Entity Operator TLS sidecar container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - hostProcess: - type: boolean - runAsUserName: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - description: Security context for the container. - description: Template for the Entity User Operator container. - tlsSidecarContainer: - type: object - properties: - env: - type: array - items: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Entity Operator service account. + entityOperatorRole: + type: object + properties: + metadata: type: object properties: - name: - type: string - description: The environment variable key. - value: - type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: - type: string - drop: - type: array - items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: + labels: + additionalProperties: type: string - role: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - type: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Entity Operator Role. + topicOperatorRoleBinding: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - user: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - seccompProfile: - type: object - properties: - localhostProfile: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Entity Topic Operator RoleBinding. + userOperatorRoleBinding: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - type: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - windowsOptions: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Entity Topic Operator RoleBinding. + description: Template for Entity Operator resources. The template allows users to specify how a `Deployment` and `Pod` is generated. + description: Configuration of the Entity Operator. + clusterCa: + type: object + properties: + generateCertificateAuthority: + type: boolean + description: If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true. + generateSecretOwnerReference: + type: boolean + description: "If `true`, the Cluster and Client CA Secrets are configured with the `ownerReference` set to the `Kafka` resource. If the `Kafka` resource is deleted when `true`, the CA Secrets are also deleted. If `false`, the `ownerReference` is disabled. If the `Kafka` resource is deleted when `false`, the CA Secrets are retained and available for reuse. Default is `true`." + validityDays: + type: integer + minimum: 1 + description: The number of days generated certificates should be valid for. The default is 365. + renewalDays: + type: integer + minimum: 1 + description: "The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When `generateCertificateAuthority` is true, this will cause the generation of a new certificate. When `generateCertificateAuthority` is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30." + certificateExpirationPolicy: + type: string + enum: + - renew-certificate + - replace-key + description: How should CA certificate expiration be handled when `generateCertificateAuthority=true`. The default is for a new CA certificate to be generated reusing the existing private key. + description: Configuration of the cluster certificate authority. + clientsCa: + type: object + properties: + generateCertificateAuthority: + type: boolean + description: If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true. + generateSecretOwnerReference: + type: boolean + description: "If `true`, the Cluster and Client CA Secrets are configured with the `ownerReference` set to the `Kafka` resource. If the `Kafka` resource is deleted when `true`, the CA Secrets are also deleted. If `false`, the `ownerReference` is disabled. If the `Kafka` resource is deleted when `false`, the CA Secrets are retained and available for reuse. Default is `true`." + validityDays: + type: integer + minimum: 1 + description: The number of days generated certificates should be valid for. The default is 365. + renewalDays: + type: integer + minimum: 1 + description: "The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When `generateCertificateAuthority` is true, this will cause the generation of a new certificate. When `generateCertificateAuthority` is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30." + certificateExpirationPolicy: + type: string + enum: + - renew-certificate + - replace-key + description: How should CA certificate expiration be handled when `generateCertificateAuthority=true`. The default is for a new CA certificate to be generated reusing the existing private key. + description: Configuration of the clients certificate authority. + cruiseControl: + type: object + properties: + image: + type: string + description: "The container image used for Cruise Control pods. If no image name is explicitly specified, the image name corresponds to the name specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." + tlsSidecar: + type: object + properties: + image: + type: string + description: The docker image for the container. + resources: + type: object + properties: + claims: + type: array + items: type: object properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: + name: type: string - description: Security context for the container. - description: Template for the Entity Operator TLS sidecar container. - serviceAccount: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Entity Operator service account. - entityOperatorRole: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Entity Operator Role. - topicOperatorRoleBinding: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Entity Topic Operator RoleBinding. - userOperatorRoleBinding: - type: object - properties: - metadata: + 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 + 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 + type: object + description: CPU and memory resources to reserve. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking. + logLevel: + type: string + enum: + - emerg + - alert + - crit + - err + - warning + - notice + - info + - debug + description: The log level for the TLS sidecar. Default value is `notice`. + description: TLS sidecar configuration. + resources: + type: object + properties: + claims: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Entity Topic Operator RoleBinding. - description: Template for Entity Operator resources. The template allows users to specify how a `Deployment` and `Pod` is generated. - description: Configuration of the Entity Operator. - clusterCa: - type: object - properties: - generateCertificateAuthority: - type: boolean - description: If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true. - generateSecretOwnerReference: - type: boolean - description: "If `true`, the Cluster and Client CA Secrets are configured with the `ownerReference` set to the `Kafka` resource. If the `Kafka` resource is deleted when `true`, the CA Secrets are also deleted. If `false`, the `ownerReference` is disabled. If the `Kafka` resource is deleted when `false`, the CA Secrets are retained and available for reuse. Default is `true`." - validityDays: - type: integer - minimum: 1 - description: The number of days generated certificates should be valid for. The default is 365. - renewalDays: - type: integer - minimum: 1 - description: "The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When `generateCertificateAuthority` is true, this will cause the generation of a new certificate. When `generateCertificateAuthority` is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30." - certificateExpirationPolicy: - type: string - enum: - - renew-certificate - - replace-key - description: How should CA certificate expiration be handled when `generateCertificateAuthority=true`. The default is for a new CA certificate to be generated reusing the existing private key. - description: Configuration of the cluster certificate authority. - clientsCa: - type: object - properties: - generateCertificateAuthority: - type: boolean - description: If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true. - generateSecretOwnerReference: - type: boolean - description: "If `true`, the Cluster and Client CA Secrets are configured with the `ownerReference` set to the `Kafka` resource. If the `Kafka` resource is deleted when `true`, the CA Secrets are also deleted. If `false`, the `ownerReference` is disabled. If the `Kafka` resource is deleted when `false`, the CA Secrets are retained and available for reuse. Default is `true`." - validityDays: - type: integer - minimum: 1 - description: The number of days generated certificates should be valid for. The default is 365. - renewalDays: - type: integer - minimum: 1 - description: "The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When `generateCertificateAuthority` is true, this will cause the generation of a new certificate. When `generateCertificateAuthority` is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30." - certificateExpirationPolicy: - type: string - enum: - - renew-certificate - - replace-key - description: How should CA certificate expiration be handled when `generateCertificateAuthority=true`. The default is for a new CA certificate to be generated reusing the existing private key. - description: Configuration of the clients certificate authority. - cruiseControl: - type: object - properties: - image: - type: string - description: "The container image used for Cruise Control pods. If no image name is explicitly specified, the image name corresponds to the name specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." - tlsSidecar: - type: object - properties: - image: - type: string - description: The docker image for the container. - resources: - type: object - properties: - claims: - type: array - items: - type: object - properties: - name: - type: string - limits: - additionalProperties: - anyOf: + name: + type: string + 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 - type: object - requests: - additionalProperties: - anyOf: + 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 + 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 - type: object - description: CPU and memory resources to reserve. - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking. - logLevel: - type: string - enum: - - emerg - - alert - - crit - - err - - warning - - notice - - info - - debug - description: The log level for the TLS sidecar. Default value is `notice`. - description: TLS sidecar configuration. - resources: - type: object - properties: - claims: - type: array - items: + 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 - properties: - name: - type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve for the Cruise Control container. - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness checking for the Cruise Control container. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness checking for the Cruise Control container. - jvmOptions: - type: object - properties: - "-XX": - additionalProperties: - type: string - type: object - description: A map of -XX options to the JVM. - "-Xmx": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xmx option to to the JVM. - "-Xms": - type: string - pattern: "^[0-9]+[mMgG]?$" - description: -Xms option to to the JVM. - gcLoggingEnabled: - type: boolean - description: Specifies whether the Garbage Collection logging is enabled. The default is false. - javaSystemProperties: - type: array - items: + description: CPU and memory resources to reserve for the Cruise Control container. + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness checking for the Cruise Control container. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness checking for the Cruise Control container. + jvmOptions: + type: object + properties: + "-XX": + additionalProperties: + type: string type: object - properties: - name: - type: string - description: The system property name. - value: - type: string - description: The system property value. - description: A map of additional system properties which will be passed using the `-D` option to the JVM. - description: JVM Options for the Cruise Control container. - logging: - type: object - properties: - loggers: - additionalProperties: + description: A map of -XX options to the JVM. + "-Xmx": + type: string + pattern: "^[0-9]+[mMgG]?$" + description: -Xmx option to to the JVM. + "-Xms": type: string - type: object - description: A Map from logger name to logger level. - type: - type: string - enum: - - inline - - external - description: "Logging type, must be either 'inline' or 'external'." - valueFrom: - type: object - properties: - configMapKeyRef: + pattern: "^[0-9]+[mMgG]?$" + description: -Xms option to to the JVM. + gcLoggingEnabled: + type: boolean + description: Specifies whether the Garbage Collection logging is enabled. The default is false. + javaSystemProperties: + type: array + items: type: object properties: - key: - type: string name: type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: '`ConfigMap` entry where the logging configuration is stored. ' - required: - - type - description: Logging configuration (Log4j 2) for Cruise Control. - template: - type: object - properties: - deployment: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - deploymentStrategy: + description: The system property name. + value: + type: string + description: The system property value. + description: A map of additional system properties which will be passed using the `-D` option to the JVM. + description: JVM Options for the Cruise Control container. + logging: + type: object + properties: + loggers: + additionalProperties: type: string - enum: - - RollingUpdate - - Recreate - description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. - description: Template for Cruise Control `Deployment`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + type: object + description: A Map from logger name to logger level. + type: + type: string + enum: + - inline + - external + description: "Logging type, must be either 'inline' or 'external'." + valueFrom: + type: object + properties: + configMapKeyRef: type: object properties: + key: + type: string name: type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: '`ConfigMap` entry where the logging configuration is stored. ' + required: + - type + description: Logging configuration (Log4j 2) for Cruise Control. + template: + type: object + properties: + deployment: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - role: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - type: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + deploymentStrategy: + type: string + enum: + - RollingUpdate + - Recreate + description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. + description: Template for Cruise Control `Deployment`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - user: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - seccompProfile: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - localhostProfile: - type: string - type: + name: type: string - supplementalGroups: - type: array - items: + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: type: integer - sysctls: - type: array - items: + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: type: object properties: - name: + level: type: string - value: + role: type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + supplementalGroups: + type: array + items: + type: integer + sysctls: + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: object properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchFields: - type: array - items: + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: object - properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchFields: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + podAntiAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: - type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + operator: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchLabels: - additionalProperties: + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - namespaceSelector: + description: The pod's affinity rules. + tolerations: + type: array + items: + type: object + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - podAntiAffinity: + type: object + matchLabelKeys: + type: array + items: + type: string + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: type: object properties: - preferredDuringSchedulingIgnoredDuringExecution: + hostnames: type: array items: - type: object - properties: - podAffinityTerm: + type: string + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + key: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: type: object properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: type: string - mismatchLabelKeys: - type: array - items: + format: type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: type: string - topologyKey: + readOnly: + type: boolean + volumeAttributes: + additionalProperties: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - topologySpreadConstraints: - type: array - items: + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for Cruise Control `Pods`. + apiService: + type: object + properties: + metadata: type: object properties: - labelSelector: + labels: + additionalProperties: + type: string type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + ipFamilyPolicy: + type: string + enum: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + description: Template for Cruise Control API `Service`. + podDisruptionBudget: + type: object + properties: + metadata: type: object properties: - hostnames: - type: array - items: + labels: + additionalProperties: type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: - type: array - items: - type: object - properties: - name: - type: string - description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. - secret: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. + maxUnavailable: + type: integer + minimum: 0 + description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." + description: Template for Cruise Control `PodDisruptionBudget`. + cruiseControlContainer: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: + type: object + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: type: object properties: - defaultMode: - type: integer - items: + add: type: array items: - type: object - properties: - key: - type: string - mode: - type: integer - path: - type: string - optional: - type: boolean - secretName: - type: string - description: Secret to use populate the volume. - configMap: - type: object - properties: - defaultMode: - type: integer - items: + type: string + drop: type: array items: - type: object - properties: - key: - type: string - mode: - type: integer - path: - type: string - name: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - optional: - type: boolean - description: ConfigMap to use to populate the volume. - emptyDir: + role: + type: string + type: + type: string + user: + type: string + seccompProfile: type: object properties: - medium: + localhostProfile: type: string - sizeLimit: - type: object - properties: - amount: - type: string - format: - type: string - description: EmptyDir to use to populate the volume. - csi: + type: + type: string + windowsOptions: type: object properties: - driver: + gmsaCredentialSpec: type: string - fsType: + gmsaCredentialSpecName: type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string - readOnly: + hostProcess: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. - description: Additional volumes that can be mounted to the pod. - description: Template for Cruise Control `Pods`. - apiService: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: - type: string - enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - description: Template for Cruise Control API `Service`. - podDisruptionBudget: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata to apply to the `PodDisruptionBudgetTemplate` resource. - maxUnavailable: - type: integer - minimum: 0 - description: "Maximum number of unavailable pods to allow automatic Pod eviction. A Pod eviction is allowed when the `maxUnavailable` number of pods or fewer are unavailable after the eviction. Setting this value to 0 prevents all voluntary evictions, so the pods must be evicted manually. Defaults to 1." - description: Template for Cruise Control `PodDisruptionBudget`. - cruiseControlContainer: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: - type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: - type: string - drop: - type: array - items: + runAsUserName: type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + description: Security context for the container. + volumeMounts: + type: array + items: type: object properties: - level: + mountPath: type: string - role: + mountPropagation: type: string - type: - type: string - user: + name: type: string - seccompProfile: - type: object - properties: - localhostProfile: + readOnly: + type: boolean + subPath: type: string - type: + subPathExpr: type: string - windowsOptions: + description: Additional volume mounts which should be applied to the container. + description: Template for the Cruise Control container. + tlsSidecarContainer: + type: object + properties: + env: + type: array + items: type: object properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: + name: type: string - hostProcess: - type: boolean - runAsUserName: + description: The environment variable key. + value: type: string - description: Security context for the container. - description: Template for the Cruise Control container. - tlsSidecarContainer: - type: object - properties: - env: - type: array - items: + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: type: object properties: - name: - type: string - description: The environment variable key. - value: + allowPrivilegeEscalation: + type: boolean + capabilities: + type: object + properties: + add: + type: array + items: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - drop: - type: array - items: + role: type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - seccompProfile: + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Security context for the container. + volumeMounts: + type: array + items: type: object properties: - localhostProfile: - type: string - type: + mountPath: type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: + mountPropagation: type: string - gmsaCredentialSpecName: + name: type: string - hostProcess: + readOnly: type: boolean - runAsUserName: + subPath: type: string - description: Security context for the container. - description: Template for the Cruise Control TLS sidecar container. - serviceAccount: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Cruise Control service account. - description: "Template to specify how Cruise Control resources, `Deployments` and `Pods`, are generated." - brokerCapacity: - type: object - properties: - disk: - type: string - pattern: "^[0-9]+([.][0-9]*)?([KMGTPE]i?|e[0-9]+)?$" - description: "Broker capacity for disk in bytes. Use a number value with either standard Kubernetes byte units (K, M, G, or T), their bibyte (power of two) equivalents (Ki, Mi, Gi, or Ti), or a byte value with or without E notation. For example, 100000M, 100000Mi, 104857600000, or 1e+11." - cpuUtilization: - type: integer - minimum: 0 - maximum: 100 - description: Broker capacity for CPU resource utilization as a percentage (0 - 100). - cpu: - type: string - pattern: "^[0-9]+([.][0-9]{0,3}|[m]?)$" - description: "Broker capacity for CPU resource in cores or millicores. For example, 1, 1.500, 1500m. For more information on valid CPU resource units see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu." - inboundNetwork: - type: string - pattern: "^[0-9]+([KMG]i?)?B/s$" - description: "Broker capacity for inbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." - outboundNetwork: - type: string - pattern: "^[0-9]+([KMG]i?)?B/s$" - description: "Broker capacity for outbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." - overrides: - type: array - items: + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. + description: Template for the Cruise Control TLS sidecar container. + serviceAccount: type: object properties: - brokers: - type: array - items: - type: integer - description: List of Kafka brokers (broker identifiers). - cpu: - type: string - pattern: "^[0-9]+([.][0-9]{0,3}|[m]?)$" - description: "Broker capacity for CPU resource in cores or millicores. For example, 1, 1.500, 1500m. For more information on valid CPU resource units see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu." - inboundNetwork: - type: string - pattern: "^[0-9]+([KMG]i?)?B/s$" - description: "Broker capacity for inbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." - outboundNetwork: - type: string - pattern: "^[0-9]+([KMG]i?)?B/s$" - description: "Broker capacity for outbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." - required: - - brokers - description: Overrides for individual brokers. The `overrides` property lets you specify a different capacity configuration for different brokers. - description: The Cruise Control `brokerCapacity` configuration. - config: - x-kubernetes-preserve-unknown-fields: true - type: object - description: "The Cruise Control configuration. For a full list of configuration options refer to https://github.com/linkedin/cruise-control/wiki/Configurations. Note that properties with the following prefixes cannot be set: bootstrap.servers, client.id, zookeeper., network., security., failed.brokers.zk.path,webserver.http., webserver.api.urlprefix, webserver.session.path, webserver.accesslog., two.step., request.reason.required,metric.reporter.sampler.bootstrap.servers, capacity.config.file, self.healing., ssl., kafka.broker.failure.detection.enable, topic.config.provider.class (with the exception of: ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, webserver.http.cors.enabled, webserver.http.cors.origin, webserver.http.cors.exposeheaders, webserver.security.enable, webserver.ssl.enable)." - metricsConfig: - type: object - properties: - type: - type: string - enum: - - jmxPrometheusExporter - description: Metrics type. Only 'jmxPrometheusExporter' supported currently. - valueFrom: - type: object - properties: - configMapKeyRef: - type: object - properties: - key: - type: string - name: - type: string - optional: - type: boolean - description: Reference to the key in the ConfigMap containing the configuration. - description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' - required: - - type - - valueFrom - description: Metrics configuration. - description: Configuration for Cruise Control deployment. Deploys a Cruise Control instance when specified. - jmxTrans: - type: object - properties: - image: - type: string - description: The image to use for the JmxTrans. - outputDefinitions: - type: array - items: + metadata: + type: object + properties: + labels: + additionalProperties: + type: string + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Cruise Control service account. + description: "Template to specify how Cruise Control resources, `Deployments` and `Pods`, are generated." + brokerCapacity: type: object properties: - outputType: - type: string - description: "Template for setting the format of the data that will be pushed.For more information see https://github.com/jmxtrans/jmxtrans/wiki/OutputWriters[JmxTrans OutputWriters]." - host: + disk: type: string - description: The DNS/hostname of the remote host that the data is pushed to. - port: + pattern: "^[0-9]+([.][0-9]*)?([KMGTPE]i?|e[0-9]+)?$" + description: "Broker capacity for disk in bytes. Use a number value with either standard Kubernetes byte units (K, M, G, or T), their bibyte (power of two) equivalents (Ki, Mi, Gi, or Ti), or a byte value with or without E notation. For example, 100000M, 100000Mi, 104857600000, or 1e+11." + cpuUtilization: type: integer - description: The port of the remote host that the data is pushed to. - flushDelayInSeconds: - type: integer - description: How many seconds the JmxTrans waits before pushing a new set of data out. - typeNames: + minimum: 0 + maximum: 100 + description: Broker capacity for CPU resource utilization as a percentage (0 - 100). + cpu: + type: string + pattern: "^[0-9]+([.][0-9]{0,3}|[m]?)$" + description: "Broker capacity for CPU resource in cores or millicores. For example, 1, 1.500, 1500m. For more information on valid CPU resource units see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu." + inboundNetwork: + type: string + pattern: "^[0-9]+([KMG]i?)?B/s$" + description: "Broker capacity for inbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." + outboundNetwork: + type: string + pattern: "^[0-9]+([KMG]i?)?B/s$" + description: "Broker capacity for outbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." + overrides: type: array items: - type: string - description: "Template for filtering data to be included in response to a wildcard query. For more information see https://github.com/jmxtrans/jmxtrans/wiki/Queries[JmxTrans queries]." - name: - type: string - description: Template for setting the name of the output definition. This is used to identify where to send the results of queries should be sent. - required: - - outputType - - name - description: "Defines the output hosts that will be referenced later on. For more information on these properties see, xref:type-JmxTransOutputDefinitionTemplate-reference[`JmxTransOutputDefinitionTemplate` schema reference]." - logLevel: - type: string - description: "Sets the logging level of the JmxTrans deployment.For more information see, https://github.com/jmxtrans/jmxtrans-agent/wiki/Troubleshooting[JmxTrans Logging Level]." - kafkaQueries: - type: array - items: + type: object + properties: + brokers: + type: array + items: + type: integer + description: List of Kafka brokers (broker identifiers). + cpu: + type: string + pattern: "^[0-9]+([.][0-9]{0,3}|[m]?)$" + description: "Broker capacity for CPU resource in cores or millicores. For example, 1, 1.500, 1500m. For more information on valid CPU resource units see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu." + inboundNetwork: + type: string + pattern: "^[0-9]+([KMG]i?)?B/s$" + description: "Broker capacity for inbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." + outboundNetwork: + type: string + pattern: "^[0-9]+([KMG]i?)?B/s$" + description: "Broker capacity for outbound network throughput in bytes per second. Use an integer value with standard Kubernetes byte units (K, M, G) or their bibyte (power of two) equivalents (Ki, Mi, Gi) per second. For example, 10000KiB/s." + required: + - brokers + description: Overrides for individual brokers. The `overrides` property lets you specify a different capacity configuration for different brokers. + description: The Cruise Control `brokerCapacity` configuration. + config: + x-kubernetes-preserve-unknown-fields: true + type: object + description: "The Cruise Control configuration. For a full list of configuration options refer to https://github.com/linkedin/cruise-control/wiki/Configurations. Note that properties with the following prefixes cannot be set: bootstrap.servers, client.id, zookeeper., network., security., failed.brokers.zk.path,webserver.http., webserver.api.urlprefix, webserver.session.path, webserver.accesslog., two.step., request.reason.required,metric.reporter.sampler.bootstrap.servers, capacity.config.file, self.healing., ssl., kafka.broker.failure.detection.enable, topic.config.provider.class (with the exception of: ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, webserver.http.cors.enabled, webserver.http.cors.origin, webserver.http.cors.exposeheaders, webserver.security.enable, webserver.ssl.enable)." + metricsConfig: type: object properties: - targetMBean: + type: type: string - description: If using wildcards instead of a specific MBean then the data is gathered from multiple MBeans. Otherwise if specifying an MBean then data is gathered from that specified MBean. - attributes: - type: array - items: + enum: + - jmxPrometheusExporter + description: Metrics type. Only 'jmxPrometheusExporter' supported currently. + valueFrom: + type: object + properties: + configMapKeyRef: + type: object + properties: + key: + type: string + name: + type: string + optional: + type: boolean + description: Reference to the key in the ConfigMap containing the configuration. + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' + required: + - type + - valueFrom + description: Metrics configuration. + description: Configuration for Cruise Control deployment. Deploys a Cruise Control instance when specified. + jmxTrans: + type: object + properties: + image: + type: string + description: The image to use for the JmxTrans. + outputDefinitions: + type: array + items: + type: object + properties: + outputType: type: string - description: Determine which attributes of the targeted MBean should be included. - outputs: - type: array - items: + description: "Template for setting the format of the data that will be pushed.For more information see https://github.com/jmxtrans/jmxtrans/wiki/OutputWriters[JmxTrans OutputWriters]." + host: type: string - description: "List of the names of output definitions specified in the spec.kafka.jmxTrans.outputDefinitions that have defined where JMX metrics are pushed to, and in which data format." - required: - - targetMBean - - attributes - - outputs - description: "Queries to send to the Kafka brokers to define what data should be read from each broker. For more information on these properties see, xref:type-JmxTransQueryTemplate-reference[`JmxTransQueryTemplate` schema reference]." - resources: - type: object - properties: - claims: - type: array - items: - type: object - properties: - name: + description: The DNS/hostname of the remote host that the data is pushed to. + port: + type: integer + description: The port of the remote host that the data is pushed to. + flushDelayInSeconds: + type: integer + description: How many seconds the JmxTrans waits before pushing a new set of data out. + typeNames: + type: array + items: type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - template: - type: object - properties: - deployment: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - deploymentStrategy: + description: "Template for filtering data to be included in response to a wildcard query. For more information see https://github.com/jmxtrans/jmxtrans/wiki/Queries[JmxTrans queries]." + name: type: string - enum: - - RollingUpdate - - Recreate - description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. - description: Template for JmxTrans `Deployment`. - pod: + description: Template for setting the name of the output definition. This is used to identify where to send the results of queries should be sent. + required: + - outputType + - name + description: "Defines the output hosts that will be referenced later on. For more information on these properties see, xref:type-JmxTransOutputDefinitionTemplate-reference[`JmxTransOutputDefinitionTemplate` schema reference]." + logLevel: + type: string + description: "Sets the logging level of the JmxTrans deployment.For more information see, https://github.com/jmxtrans/jmxtrans-agent/wiki/Troubleshooting[JmxTrans Logging Level]." + kafkaQueries: + type: array + items: type: object properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: + targetMBean: + type: string + description: If using wildcards instead of a specific MBean then the data is gathered from multiple MBeans. Otherwise if specifying an MBean then data is gathered from that specified MBean. + attributes: type: array items: - type: object - properties: - name: - type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: + type: string + description: Determine which attributes of the targeted MBean should be included. + outputs: + type: array + items: + type: string + description: "List of the names of output definitions specified in the spec.kafka.jmxTrans.outputDefinitions that have defined where JMX metrics are pushed to, and in which data format." + required: + - targetMBean + - attributes + - outputs + description: "Queries to send to the Kafka brokers to define what data should be read from each broker. For more information on these properties see, xref:type-JmxTransQueryTemplate-reference[`JmxTransQueryTemplate` schema reference]." + resources: + type: object + properties: + claims: + type: array + items: type: object properties: - fsGroup: - type: integer - fsGroupChangePolicy: + name: type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: + 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 + 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 + type: object + description: CPU and memory resources to reserve. + template: + type: object + properties: + deployment: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - role: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - type: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + deploymentStrategy: + type: string + enum: + - RollingUpdate + - Recreate + description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. + description: Template for JmxTrans `Deployment`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - user: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - seccompProfile: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - localhostProfile: - type: string - type: + name: type: string - supplementalGroups: - type: array - items: + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: type: integer - sysctls: - type: array - items: + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: type: object properties: - name: + level: type: string - value: + role: type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + supplementalGroups: + type: array + items: + type: integer + sysctls: + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: object properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + operator: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: object - properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchFields: - type: array - items: + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: + namespaces: + type: array + items: + type: string + topologyKey: type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - namespaces: - type: array - items: - type: string - topologyKey: + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: + type: string + podAntiAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchLabels: - additionalProperties: + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - type: object - namespaces: - type: array - items: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - topologyKey: - type: string - podAntiAffinity: + description: The pod's affinity rules. + tolerations: + type: array + items: type: object properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: + key: + type: string + operator: + type: string + values: type: array items: type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: type: array items: - type: object - properties: - labelSelector: + type: string + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: + type: object + properties: + hostnames: + type: array + items: + type: string + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: type: object properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: type: object properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - topologySpreadConstraints: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: type: object properties: - key: + amount: type: string - operator: + format: type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: type: string - type: object - matchLabelKeys: - type: array - items: + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for JmxTrans `Pods`. + container: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: - type: object - properties: - hostnames: - type: array - items: + description: The environment variable key. + value: type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: - type: array - items: + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: type: object properties: - name: - type: string - description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. - secret: + allowPrivilegeEscalation: + type: boolean + capabilities: type: object properties: - defaultMode: - type: integer - items: + add: type: array items: - type: object - properties: - key: - type: string - mode: - type: integer - path: - type: string - optional: - type: boolean - secretName: - type: string - description: Secret to use populate the volume. - configMap: + type: string + drop: + type: array + items: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: type: object properties: - defaultMode: - type: integer - items: - type: array - items: - type: object - properties: - key: - type: string - mode: - type: integer - path: - type: string - name: + level: type: string - optional: - type: boolean - description: ConfigMap to use to populate the volume. - emptyDir: + role: + type: string + type: + type: string + user: + type: string + seccompProfile: type: object properties: - medium: + localhostProfile: type: string - sizeLimit: - type: object - properties: - amount: - type: string - format: - type: string - description: EmptyDir to use to populate the volume. - csi: + type: + type: string + windowsOptions: type: object properties: - driver: + gmsaCredentialSpec: type: string - fsType: + gmsaCredentialSpecName: type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string - readOnly: + hostProcess: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. - description: Additional volumes that can be mounted to the pod. - description: Template for JmxTrans `Pods`. - container: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: - type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: + runAsUserName: type: string - drop: - type: array - items: - type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + description: Security context for the container. + volumeMounts: + type: array + items: type: object properties: - level: - type: string - role: + mountPath: type: string - type: + mountPropagation: type: string - user: - type: string - seccompProfile: - type: object - properties: - localhostProfile: + name: type: string - type: + readOnly: + type: boolean + subPath: type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: + subPathExpr: type: string - gmsaCredentialSpecName: + description: Additional volume mounts which should be applied to the container. + description: Template for JmxTrans container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - hostProcess: - type: boolean - runAsUserName: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - description: Security context for the container. - description: Template for JmxTrans container. - serviceAccount: - type: object - properties: - metadata: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the JmxTrans service account. + description: Template for JmxTrans resources. + required: + - outputDefinitions + - kafkaQueries + description: "As of Strimzi 0.35.0, JMXTrans is not supported anymore and this option is ignored." + kafkaExporter: + type: object + properties: + image: + type: string + description: "The container image used for the Kafka Exporter pods. If no image name is explicitly specified, the image name corresponds to the version specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." + groupRegex: + type: string + description: Regular expression to specify which consumer groups to collect. Default value is `.*`. + topicRegex: + type: string + description: Regular expression to specify which topics to collect. Default value is `.*`. + groupExcludeRegex: + type: string + description: Regular expression to specify which consumer groups to exclude. + topicExcludeRegex: + type: string + description: Regular expression to specify which topics to exclude. + resources: + type: object + properties: + claims: + type: array + items: type: object properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the JmxTrans service account. - description: Template for JmxTrans resources. - required: - - outputDefinitions - - kafkaQueries - description: "As of Strimzi 0.35.0, JMXTrans is not supported anymore and this option is ignored." - kafkaExporter: - type: object - properties: - image: - type: string - description: "The container image used for the Kafka Exporter pods. If no image name is explicitly specified, the image name corresponds to the version specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." - groupRegex: - type: string - description: Regular expression to specify which consumer groups to collect. Default value is `.*`. - topicRegex: - type: string - description: Regular expression to specify which topics to collect. Default value is `.*`. - groupExcludeRegex: - type: string - description: Regular expression to specify which consumer groups to exclude. - topicExcludeRegex: - type: string - description: Regular expression to specify which topics to exclude. - resources: - type: object - properties: - claims: - type: array - items: + name: + type: string + 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 + 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 + type: object + description: CPU and memory resources to reserve. + logging: + type: string + description: "Only log messages with the given severity or above. Valid levels: [`info`, `debug`, `trace`]. Default log level is `info`." + livenessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod liveness check. + readinessProbe: + type: object + properties: + initialDelaySeconds: + type: integer + minimum: 0 + description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. + timeoutSeconds: + type: integer + minimum: 1 + description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. + periodSeconds: + type: integer + minimum: 1 + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + successThreshold: + type: integer + minimum: 1 + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. + failureThreshold: + type: integer + minimum: 1 + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + description: Pod readiness check. + enableSaramaLogging: + type: boolean + description: "Enable Sarama logging, a Go client library used by the Kafka Exporter." + showAllOffsets: + type: boolean + description: "Whether show the offset/lag for all consumer group, otherwise, only show connected consumer groups." + template: + type: object + properties: + deployment: type: object properties: - name: - type: string - 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 - 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 - type: object - description: CPU and memory resources to reserve. - logging: - type: string - description: "Only log messages with the given severity or above. Valid levels: [`info`, `debug`, `trace`]. Default log level is `info`." - livenessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod liveness check. - readinessProbe: - type: object - properties: - initialDelaySeconds: - type: integer - minimum: 0 - description: The initial delay before first the health is first checked. Default to 15 seconds. Minimum value is 0. - timeoutSeconds: - type: integer - minimum: 1 - description: The timeout for each attempted health check. Default to 5 seconds. Minimum value is 1. - periodSeconds: - type: integer - minimum: 1 - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - successThreshold: - type: integer - minimum: 1 - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1. - failureThreshold: - type: integer - minimum: 1 - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - description: Pod readiness check. - enableSaramaLogging: - type: boolean - description: "Enable Sarama logging, a Go client library used by the Kafka Exporter." - showAllOffsets: - type: boolean - description: "Whether show the offset/lag for all consumer group, otherwise, only show connected consumer groups." - template: - type: object - properties: - deployment: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - deploymentStrategy: - type: string - enum: - - RollingUpdate - - Recreate - description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. - description: Template for Kafka Exporter `Deployment`. - pod: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - imagePullSecrets: - type: array - items: + metadata: type: object properties: - name: - type: string - description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." - securityContext: - type: object - properties: - fsGroup: - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: - type: object - properties: - level: + labels: + additionalProperties: type: string - role: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - type: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + deploymentStrategy: + type: string + enum: + - RollingUpdate + - Recreate + description: Pod replacement strategy for deployment configuration changes. Valid values are `RollingUpdate` and `Recreate`. Defaults to `RollingUpdate`. + description: Template for Kafka Exporter `Deployment`. + pod: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - user: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - seccompProfile: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + imagePullSecrets: + type: array + items: type: object properties: - localhostProfile: - type: string - type: + name: type: string - supplementalGroups: - type: array - items: + description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." + securityContext: + type: object + properties: + fsGroup: type: integer - sysctls: - type: array - items: + fsGroupChangePolicy: + type: string + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: type: object properties: - name: + level: type: string - value: + role: type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - description: Configures pod-level security attributes and common container settings. - terminationGracePeriodSeconds: - type: integer - minimum: 0 - description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." - affinity: - type: object - properties: - nodeAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: + type: + type: string + user: + type: string + seccompProfile: + type: object + properties: + localhostProfile: + type: string + type: + type: string + supplementalGroups: + type: array + items: + type: integer + sysctls: + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + windowsOptions: + type: object + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + description: Configures pod-level security attributes and common container settings. + terminationGracePeriodSeconds: + type: integer + minimum: 0 + description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." + affinity: + type: object + properties: + nodeAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + preference: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: type: object properties: - preference: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + nodeSelectorTerms: + type: array + items: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchFields: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + operator: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: object - properties: - nodeSelectorTerms: - type: array - items: - type: object - properties: - matchExpressions: - type: array - items: + values: + type: array + items: + type: string + matchFields: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + podAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchFields: - type: array - items: + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - podAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: + namespaces: + type: array + items: + type: string + topologyKey: type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string + matchLabels: + additionalProperties: + type: string + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - namespaces: - type: array - items: - type: string - topologyKey: + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + topologyKey: + type: string + podAntiAffinity: + type: object + properties: + preferredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + podAffinityTerm: + type: object + properties: + labelSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: - type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: + type: object + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: type: object properties: - key: - type: string - operator: - type: string - values: + matchExpressions: type: array items: + type: object + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: type: string - matchLabels: - additionalProperties: - type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - podAntiAffinity: - type: object - properties: - preferredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - podAffinityTerm: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: + namespaces: + type: array + items: + type: string + topologyKey: type: string - namespaceSelector: - type: object - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: - type: string + weight: + type: integer + requiredDuringSchedulingIgnoredDuringExecution: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object - namespaces: - type: array - items: - type: string - topologyKey: - type: string - weight: - type: integer - requiredDuringSchedulingIgnoredDuringExecution: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array - items: + properties: + key: + type: string + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: + matchLabelKeys: + type: array + items: + type: string + mismatchLabelKeys: + type: array + items: + type: string + namespaceSelector: + type: object + properties: + matchExpressions: + type: array + items: + type: object + properties: + key: type: string - matchLabels: - additionalProperties: - type: string - type: object - matchLabelKeys: - type: array - items: - type: string - mismatchLabelKeys: - type: array - items: + operator: + type: string + values: + type: array + items: + type: string + matchLabels: + additionalProperties: + type: string + type: object + namespaces: + type: array + items: + type: string + topologyKey: type: string - namespaceSelector: + description: The pod's affinity rules. + tolerations: + type: array + items: + type: object + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + type: integer + value: + type: string + description: The pod's tolerations. + topologySpreadConstraints: + type: array + items: + type: object + properties: + labelSelector: + type: object + properties: + matchExpressions: + type: array + items: type: object properties: - matchExpressions: + key: + type: string + operator: + type: string + values: type: array items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: type: string - type: object - namespaces: - type: array - items: - type: string - topologyKey: + matchLabels: + additionalProperties: type: string - description: The pod's affinity rules. - tolerations: - type: array - items: - type: object - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - description: The pod's tolerations. - topologySpreadConstraints: - type: array - items: - type: object - properties: - labelSelector: - type: object - properties: - matchExpressions: - type: array + type: object + matchLabelKeys: + type: array + items: + type: string + maxSkew: + type: integer + minDomains: + type: integer + nodeAffinityPolicy: + type: string + nodeTaintsPolicy: + type: string + topologyKey: + type: string + whenUnsatisfiable: + type: string + description: The pod's topology spread constraints. + priorityClassName: + type: string + description: 'The name of the priority class used to assign priority to the pods. ' + schedulerName: + type: string + description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." + hostAliases: + type: array + items: + type: object + properties: + hostnames: + type: array + items: + type: string + ip: + type: string + description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. + enableServiceLinks: + type: boolean + description: Indicates whether information about services should be injected into Pod's environment variables. + tmpDirSizeLimit: + type: string + pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: type: object properties: - key: + amount: type: string - operator: + format: type: string - values: - type: array - items: - type: string - matchLabels: - additionalProperties: + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: type: string - type: object - matchLabelKeys: - type: array - items: - type: string - maxSkew: - type: integer - minDomains: - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - description: The pod's topology spread constraints. - priorityClassName: - type: string - description: 'The name of the priority class used to assign priority to the pods. ' - schedulerName: - type: string - description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." - hostAliases: - type: array - items: + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. + description: Template for Kafka Exporter `Pods`. + service: + type: object + properties: + metadata: type: object properties: - hostnames: - type: array - items: + labels: + additionalProperties: type: string - ip: - type: string - description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. - enableServiceLinks: - type: boolean - description: Indicates whether information about services should be injected into Pod's environment variables. - tmpDirSizeLimit: - type: string - pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" - description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. - additionalVolumes: - type: array - items: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: + type: string + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for Kafka Exporter `Service`. + container: + type: object + properties: + env: + type: array + items: + type: object + properties: + name: + type: string + description: The environment variable key. + value: + type: string + description: The environment variable value. + description: Environment variables which should be applied to the container. + securityContext: type: object properties: - name: - type: string - description: Name to use for the volume. Required. - path: - type: string - description: Path in the container to mount the volume at. Required. - subPath: - type: string - description: SubPath of the referenced volume to mount. - secret: + allowPrivilegeEscalation: + type: boolean + capabilities: type: object properties: - defaultMode: - type: integer - items: + add: type: array items: - type: object - properties: - key: - type: string - mode: - type: integer - path: - type: string - optional: - type: boolean - secretName: - type: string - description: Secret to use populate the volume. - configMap: - type: object - properties: - defaultMode: - type: integer - items: + type: string + drop: type: array items: - type: object - properties: - key: - type: string - mode: - type: integer - path: - type: string - name: + type: string + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + runAsUser: + type: integer + seLinuxOptions: + type: object + properties: + level: type: string - optional: - type: boolean - description: ConfigMap to use to populate the volume. - emptyDir: + role: + type: string + type: + type: string + user: + type: string + seccompProfile: type: object properties: - medium: + localhostProfile: type: string - sizeLimit: - type: object - properties: - amount: - type: string - format: - type: string - description: EmptyDir to use to populate the volume. - csi: + type: + type: string + windowsOptions: type: object properties: - driver: + gmsaCredentialSpec: type: string - fsType: + gmsaCredentialSpecName: type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string - readOnly: + hostProcess: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. - description: Additional volumes that can be mounted to the pod. - description: Template for Kafka Exporter `Pods`. - service: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for Kafka Exporter `Service`. - container: - type: object - properties: - env: - type: array - items: - type: object - properties: - name: - type: string - description: The environment variable key. - value: - type: string - description: The environment variable value. - description: Environment variables which should be applied to the container. - securityContext: - type: object - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - type: object - properties: - add: - type: array - items: - type: string - drop: - type: array - items: + runAsUserName: type: string - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - runAsUser: - type: integer - seLinuxOptions: + description: Security context for the container. + volumeMounts: + type: array + items: type: object properties: - level: - type: string - role: - type: string - type: + mountPath: type: string - user: + mountPropagation: type: string - seccompProfile: - type: object - properties: - localhostProfile: + name: type: string - type: + readOnly: + type: boolean + subPath: type: string - windowsOptions: - type: object - properties: - gmsaCredentialSpec: + subPathExpr: type: string - gmsaCredentialSpecName: + description: Additional volume mounts which should be applied to the container. + description: Template for the Kafka Exporter container. + serviceAccount: + type: object + properties: + metadata: + type: object + properties: + labels: + additionalProperties: type: string - hostProcess: - type: boolean - runAsUserName: + type: object + description: Labels added to the Kubernetes resource. + annotations: + additionalProperties: type: string - description: Security context for the container. - description: Template for the Kafka Exporter container. - serviceAccount: - type: object - properties: - metadata: - type: object - properties: - labels: - additionalProperties: - type: string - type: object - description: Labels added to the Kubernetes resource. - annotations: - additionalProperties: - type: string - type: object - description: Annotations added to the Kubernetes resource. - description: Metadata applied to the resource. - description: Template for the Kafka Exporter service account. - description: Customization of deployment templates and pods. - description: "Configuration of the Kafka Exporter. Kafka Exporter can provide additional metrics, for example lag of consumer group at topic/partition." - maintenanceTimeWindows: - type: array - items: - type: string - description: "A list of time windows for maintenance tasks (that is, certificates renewal). Each time window is defined by a cron expression." - required: - - kafka - description: "The specification of the Kafka and ZooKeeper clusters, and Topic Operator." - status: - type: object - properties: - conditions: - type: array - items: - type: object - properties: - type: - type: string - description: "The unique identifier of a condition, used to distinguish between other conditions in the resource." - status: - type: string - description: "The status of the condition, either True, False or Unknown." - lastTransitionTime: - type: string - description: "Last time the condition of a type changed from one status to another. The required format is 'yyyy-MM-ddTHH:mm:ssZ', in the UTC time zone." - reason: - type: string - description: The reason for the condition's last transition (a single word in CamelCase). - message: - type: string - description: Human-readable message indicating details about the condition's last transition. - description: List of status conditions. - observedGeneration: - type: integer - description: The generation of the CRD that was last reconciled by the operator. - listeners: - type: array - items: - type: object - properties: - type: - type: string - description: The name of the listener. - name: - type: string - description: The name of the listener. - addresses: - type: array - items: - type: object - properties: - host: - type: string - description: The DNS name or IP address of the Kafka bootstrap service. - port: - type: integer - description: The port of the Kafka bootstrap service. - description: A list of the addresses for this listener. - bootstrapServers: - type: string - description: A comma-separated list of `host:port` pairs for connecting to the Kafka cluster using this listener. - certificates: - type: array - items: + type: object + description: Annotations added to the Kubernetes resource. + description: Metadata applied to the resource. + description: Template for the Kafka Exporter service account. + description: Customization of deployment templates and pods. + description: "Configuration of the Kafka Exporter. Kafka Exporter can provide additional metrics, for example lag of consumer group at topic/partition." + maintenanceTimeWindows: + type: array + items: + type: string + description: "A list of time windows for maintenance tasks (that is, certificates renewal). Each time window is defined by a cron expression." + required: + - kafka + description: "The specification of the Kafka and ZooKeeper clusters, and Topic Operator." + status: + type: object + properties: + conditions: + type: array + items: + type: object + properties: + type: type: string - description: A list of TLS certificates which can be used to verify the identity of the server when connecting to the given listener. Set only for `tls` and `external` listeners. - description: Addresses of the internal and external listeners. - kafkaNodePools: - type: array - items: - type: object - properties: - name: - type: string - description: The name of the KafkaNodePool used by this Kafka resource. - description: List of the KafkaNodePools used by this Kafka cluster. - clusterId: - type: string - description: Kafka cluster Id. - operatorLastSuccessfulVersion: - type: string - description: The version of the Strimzi Cluster Operator which performed the last successful reconciliation. - kafkaVersion: - type: string - description: The version of Kafka currently deployed in the cluster. - kafkaMetadataVersion: - type: string - description: The KRaft metadata.version currently used by the Kafka cluster. - kafkaMetadataState: - type: string - enum: - - ZooKeeper - - KRaftMigration - - KRaftDualWriting - - KRaftPostMigration - - PreKRaft - - KRaft - description: "Defines where cluster metadata are stored. Possible values are: ZooKeeper if the metadata are stored in ZooKeeper; KRaftMigration if the controllers are connected to ZooKeeper, brokers are being rolled with Zookeeper migration enabled and connection information to controllers, and the metadata migration process is running; KRaftDualWriting if the metadata migration process finished and the cluster is in dual-write mode; KRaftPostMigration if the brokers are fully KRaft-based but controllers being rolled to disconnect from ZooKeeper; PreKRaft if brokers and controller are fully KRaft-based, metadata are stored in KRaft, but ZooKeeper must be deleted; KRaft if the metadata are stored in KRaft." - description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." + description: "The unique identifier of a condition, used to distinguish between other conditions in the resource." + status: + type: string + description: "The status of the condition, either True, False or Unknown." + lastTransitionTime: + type: string + description: "Last time the condition of a type changed from one status to another. The required format is 'yyyy-MM-ddTHH:mm:ssZ', in the UTC time zone." + reason: + type: string + description: The reason for the condition's last transition (a single word in CamelCase). + message: + type: string + description: Human-readable message indicating details about the condition's last transition. + description: List of status conditions. + observedGeneration: + type: integer + description: The generation of the CRD that was last reconciled by the operator. + listeners: + type: array + items: + type: object + properties: + type: + type: string + description: The name of the listener. + name: + type: string + description: The name of the listener. + addresses: + type: array + items: + type: object + properties: + host: + type: string + description: The DNS name or IP address of the Kafka bootstrap service. + port: + type: integer + description: The port of the Kafka bootstrap service. + description: A list of the addresses for this listener. + bootstrapServers: + type: string + description: A comma-separated list of `host:port` pairs for connecting to the Kafka cluster using this listener. + certificates: + type: array + items: + type: string + description: A list of TLS certificates which can be used to verify the identity of the server when connecting to the given listener. Set only for `tls` and `external` listeners. + description: Addresses of the internal and external listeners. + kafkaNodePools: + type: array + items: + type: object + properties: + name: + type: string + description: The name of the KafkaNodePool used by this Kafka resource. + description: List of the KafkaNodePools used by this Kafka cluster. + clusterId: + type: string + description: Kafka cluster Id. + operatorLastSuccessfulVersion: + type: string + description: The version of the Strimzi Cluster Operator which performed the last successful reconciliation. + kafkaVersion: + type: string + description: The version of Kafka currently deployed in the cluster. + kafkaMetadataVersion: + type: string + description: The KRaft metadata.version currently used by the Kafka cluster. + kafkaMetadataState: + type: string + enum: + - ZooKeeper + - KRaftMigration + - KRaftDualWriting + - KRaftPostMigration + - PreKRaft + - KRaft + description: "Defines where cluster metadata are stored. Possible values are: ZooKeeper if the metadata are stored in ZooKeeper; KRaftMigration if the controllers are connected to ZooKeeper, brokers are being rolled with Zookeeper migration enabled and connection information to controllers, and the metadata migration process is running; KRaftDualWriting if the metadata migration process finished and the cluster is in dual-write mode; KRaftPostMigration if the brokers are fully KRaft-based but controllers being rolled to disconnect from ZooKeeper; PreKRaft if brokers and controller are fully KRaft-based, metadata are stored in KRaft, but ZooKeeper must be deleted; KRaft if the metadata are stored in KRaft." + description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml index cbdd6956498..e0670a7d5f4 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml @@ -976,6 +976,89 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: type: object @@ -1116,6 +1199,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Connect container. initContainer: type: object @@ -1190,6 +1291,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka init container. podDisruptionBudget: type: object @@ -1746,6 +1865,89 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: type: object @@ -1820,6 +2022,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Connect Build container. The build container is used only on Kubernetes. buildConfig: type: object diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml index 34c66a27006..38fe9cdde7a 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml @@ -1092,6 +1092,89 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka MirrorMaker `Pods`. podDisruptionBudget: type: object @@ -1188,6 +1271,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. description: Template for Kafka MirrorMaker container. serviceAccount: type: object diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml index b6f0efe4472..9d801f729bc 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml @@ -956,6 +956,89 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka Bridge `Pods`. apiService: type: object @@ -1085,6 +1168,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Bridge container. clusterRoleBinding: type: object @@ -1195,6 +1296,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Bridge init container. description: Template for Kafka Bridge resources. The template allows users to specify how a `Deployment` and `Pod` is generated. tracing: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml index 17c449c271d..fc0034404c4 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml @@ -1121,6 +1121,89 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: type: object @@ -1261,6 +1344,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Connect container. initContainer: type: object @@ -1335,6 +1436,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka init container. podDisruptionBudget: type: object @@ -1891,6 +2010,89 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: type: object @@ -1965,6 +2167,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Connect Build container. The build container is used only on Kubernetes. buildConfig: type: object diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml index 8e9e67dd3f4..d540f037c59 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml @@ -747,6 +747,89 @@ spec: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: Defines the total amount (for example `1Gi`) of local storage required for temporary EmptyDir volume (`/tmp`). Default value is `5Mi`. + volumes: + type: array + items: + type: object + properties: + name: + type: string + description: Name to use for the volume. Required. + secret: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + optional: + type: boolean + secretName: + type: string + description: Secret to use populate the volume. + configMap: + type: object + properties: + defaultMode: + type: integer + items: + type: array + items: + type: object + properties: + key: + type: string + mode: + type: integer + path: + type: string + name: + type: string + optional: + type: boolean + description: ConfigMap to use to populate the volume. + emptyDir: + type: object + properties: + medium: + type: string + sizeLimit: + type: object + properties: + amount: + type: string + format: + type: string + description: EmptyDir to use to populate the volume. + csi: + type: object + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + type: object + properties: + name: + type: string + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + description: CSI object to use to populate the volume. + description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. perPodService: type: object @@ -893,6 +976,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka broker container. initContainer: type: object @@ -967,6 +1068,24 @@ spec: runAsUserName: type: string description: Security context for the container. + volumeMounts: + type: array + items: + type: object + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka init container. description: Template for pool resources. The template allows users to specify how the resources belonging to this pool are generated. required: diff --git a/packaging/install/cluster-operator/040-Crd-kafka.yaml b/packaging/install/cluster-operator/040-Crd-kafka.yaml index 25029e4c351..4ec5c826daa 100644 --- a/packaging/install/cluster-operator/040-Crd-kafka.yaml +++ b/packaging/install/cluster-operator/040-Crd-kafka.yaml @@ -1814,7 +1814,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka broker container. initContainer: type: object @@ -1906,7 +1906,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka init container. clusterCaCert: type: object @@ -3094,7 +3094,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the ZooKeeper container. serviceAccount: type: object @@ -4275,7 +4275,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Entity Topic Operator container. userOperatorContainer: type: object @@ -4367,7 +4367,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Entity User Operator container. tlsSidecarContainer: type: object @@ -4459,7 +4459,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Entity Operator TLS sidecar container. serviceAccount: type: object @@ -5574,7 +5574,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Cruise Control container. tlsSidecarContainer: type: object @@ -5666,7 +5666,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Cruise Control TLS sidecar container. serviceAccount: type: object @@ -6554,7 +6554,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for JmxTrans container. serviceAccount: type: object @@ -7397,7 +7397,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Exporter container. serviceAccount: type: object diff --git a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml index d07e09bb182..da0d245c067 100644 --- a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml +++ b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml @@ -1215,7 +1215,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Connect container. initContainer: type: object @@ -1307,7 +1307,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka init container. podDisruptionBudget: type: object @@ -2038,7 +2038,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Connect Build container. The build container is used only on Kubernetes. buildConfig: type: object diff --git a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml index 4752e58d2d0..53fda19f088 100644 --- a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml +++ b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml @@ -1287,7 +1287,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for Kafka MirrorMaker container. serviceAccount: type: object diff --git a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml index f2cbd3c0093..2fdee7753e2 100644 --- a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml +++ b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml @@ -1184,7 +1184,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Bridge container. clusterRoleBinding: type: object @@ -1312,7 +1312,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Bridge init container. description: Template for Kafka Bridge resources. The template allows users to specify how a `Deployment` and `Pod` is generated. tracing: diff --git a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml index 706fdf3bcba..08fb4a5647d 100644 --- a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml +++ b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml @@ -1360,7 +1360,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Connect container. initContainer: type: object @@ -1452,7 +1452,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka init container. podDisruptionBudget: type: object @@ -2183,7 +2183,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka Connect Build container. The build container is used only on Kubernetes. buildConfig: type: object diff --git a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml index 03a0877d568..d540f037c59 100644 --- a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml +++ b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml @@ -993,7 +993,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka broker container. initContainer: type: object @@ -1085,7 +1085,7 @@ spec: type: string subPathExpr: type: string - description: Volume mounts which should be applied to the container. + description: Additional volume mounts which should be applied to the container. description: Template for the Kafka init container. description: Template for pool resources. The template allows users to specify how the resources belonging to this pool are generated. required: From e5782d05c6e4bb019de45800d3c66e62dbdae61d Mon Sep 17 00:00:00 2001 From: MichaelMorris Date: Tue, 18 Jun 2024 15:05:44 +0100 Subject: [PATCH 06/62] Adding tests Signed-off-by: MichaelMorris --- .../common/template/ContainerTemplate.java | 4 +- .../bridge/KafkaBridge-with-template.yaml | 18 +++- .../connect/KafkaConnect-with-template.yaml | 18 +++- .../model/kafka/Kafka-with-template.yaml | 66 +++++++++++++ .../KafkaMirrorMaker2-with-template.yaml | 18 +++- .../cluster/model/CruiseControlTest.java | 79 ++++++++++------ .../cluster/model/EntityOperatorTest.java | 30 ++++++ .../cluster/model/KafkaBridgeClusterTest.java | 93 +++++++++++++++++-- .../cluster/model/KafkaClusterTest.java | 34 +++++++ .../cluster/model/KafkaConnectBuildTest.java | 25 +++++ .../model/KafkaConnectClusterTest.java | 76 ++++++++++++++- .../cluster/model/KafkaExporterTest.java | 35 +++++++ .../model/KafkaMirrorMaker2ClusterTest.java | 62 ++++++++++++- 13 files changed, 513 insertions(+), 45 deletions(-) diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java index 0e2d989cc4e..423d11cf7e8 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java @@ -47,8 +47,8 @@ public List getAdditionalVolumeMounts() { return additionalVolumeMounts; } - public void setVolumeMounts(List volumeMounts) { - this.additionalVolumeMounts = volumeMounts; + public void setAdditionalVolumeMounts(List additionalVolumeMounts) { + this.additionalVolumeMounts = additionalVolumeMounts; } @Description("Environment variables which should be applied to the container.") diff --git a/api/src/test/resources/io/strimzi/api/kafka/model/bridge/KafkaBridge-with-template.yaml b/api/src/test/resources/io/strimzi/api/kafka/model/bridge/KafkaBridge-with-template.yaml index 227d2c7f69d..336ad5c0aca 100644 --- a/api/src/test/resources/io/strimzi/api/kafka/model/bridge/KafkaBridge-with-template.yaml +++ b/api/src/test/resources/io/strimzi/api/kafka/model/bridge/KafkaBridge-with-template.yaml @@ -30,7 +30,23 @@ spec: runAsUser: 1000001 runAsGroup: 1000001 fsGroup: 0 + volumes: + - name: example-secret + secret: + secretName: secret-name + - name: example-configmap + configMap: + name: config-map-name terminationGracePeriodSeconds: 30 + bridgeContainer: + volumeMounts: + - name: example-secret + mountPath: /path/to/mount/secret-volume + subPath: subPath1 + initContainer: + volumeMounts: + - name: example-configmap + mountPath: /path/to/mount/cm-volume podDisruptionBudget: metadata: labels: @@ -39,4 +55,4 @@ spec: annotations: key1: label1 key2: label2 - maxUnavailable: 1 \ No newline at end of file + maxUnavailable: 1 diff --git a/api/src/test/resources/io/strimzi/api/kafka/model/connect/KafkaConnect-with-template.yaml b/api/src/test/resources/io/strimzi/api/kafka/model/connect/KafkaConnect-with-template.yaml index 065cce8a4c1..bc7476e9887 100644 --- a/api/src/test/resources/io/strimzi/api/kafka/model/connect/KafkaConnect-with-template.yaml +++ b/api/src/test/resources/io/strimzi/api/kafka/model/connect/KafkaConnect-with-template.yaml @@ -31,6 +31,22 @@ spec: runAsGroup: 1000001 fsGroup: 0 terminationGracePeriodSeconds: 30 + volumes: + - name: example-secret + secret: + secretName: secret-name + - name: example-configmap + configMap: + name: config-map-name + connectContainer: + volumeMounts: + - name: example-secret + mountPath: /path/to/mount/secret-volume + subPath: subPath1 + initContainer: + volumeMounts: + - name: example-configmap + mountPath: /path/to/mount/cm-volume podDisruptionBudget: metadata: labels: @@ -47,4 +63,4 @@ spec: key2: label2 annotations: key1: label1 - key2: label2 \ No newline at end of file + key2: label2 diff --git a/api/src/test/resources/io/strimzi/api/kafka/model/kafka/Kafka-with-template.yaml b/api/src/test/resources/io/strimzi/api/kafka/model/kafka/Kafka-with-template.yaml index bcdfd0f80b5..fbafa8058c7 100644 --- a/api/src/test/resources/io/strimzi/api/kafka/model/kafka/Kafka-with-template.yaml +++ b/api/src/test/resources/io/strimzi/api/kafka/model/kafka/Kafka-with-template.yaml @@ -42,6 +42,31 @@ spec: runAsGroup: 1000001 fsGroup: 0 terminationGracePeriodSeconds: 30 + volumes: + - name: example-secret + secret: + secretName: secret-name + - name: example-configmap + configMap: + name: config-map-name + - name: temp + emptyDir: {} + - name: example-csi-volume + csi: + driver: csi-driver-name + readOnly: true + volumeAttributes: + secretProviderClass: example-secret-provider-class + kafkaContainer: + volumeMounts: + - name: example-secret + mountPath: /path/to/mount/secret-volume + - name: example-configmap + mountPath: /path/to/mount/cm-volume + - name: temp + mountPath: /tmp/logs + - name: example-csi-volume + mountPath: /path/to/mount/csi-volume bootstrapService: metadata: labels: @@ -120,6 +145,32 @@ spec: annotations: key1: label1 key2: label2 + volumes: + - name: example-secret + secret: + secretName: secret-name + - name: example-configmap + configMap: + name: config-map-name + - name: temp + emptyDir: {} + - name: example-csi-volume + csi: + driver: csi-driver-name + readOnly: true + volumeAttributes: + secretProviderClass: example-secret-provider-class + zookeeperContainer: + volumeMounts: + - name: example-secret + mountPath: /path/to/mount/secret-volume + subPath: subPath1 + - name: example-configmap + mountPath: /path/to/mount/cm-volume + - name: temp + mountPath: /tmp/logs + - name: example-csi-volume + mountPath: /path/to/mount/csi-volume clientService: metadata: labels: @@ -156,4 +207,19 @@ spec: annotations: key1: label1 key2: label2 + volumes: + - name: example-secret + secret: + secretName: secret-name + - name: example-configmap + configMap: + name: config-map-name + - name: temp + emptyDir: {} + - name: example-csi-volume + csi: + driver: csi-driver-name + readOnly: true + volumeAttributes: + secretProviderClass: example-secret-provider-class diff --git a/api/src/test/resources/io/strimzi/api/kafka/model/mirrormaker2/KafkaMirrorMaker2-with-template.yaml b/api/src/test/resources/io/strimzi/api/kafka/model/mirrormaker2/KafkaMirrorMaker2-with-template.yaml index 3e7204c7a87..1f3b58ff03c 100644 --- a/api/src/test/resources/io/strimzi/api/kafka/model/mirrormaker2/KafkaMirrorMaker2-with-template.yaml +++ b/api/src/test/resources/io/strimzi/api/kafka/model/mirrormaker2/KafkaMirrorMaker2-with-template.yaml @@ -41,6 +41,22 @@ spec: runAsGroup: 1000001 fsGroup: 0 terminationGracePeriodSeconds: 30 + volumes: + - name: example-secret + secret: + secretName: secret-name + - name: example-configmap + configMap: + name: config-map-name + connectContainer: + volumeMounts: + - name: example-secret + mountPath: /path/to/mount/secret-volume + subPath: subPath1 + initContainer: + volumeMounts: + - name: example-configmap + mountPath: /path/to/mount/cm-volume podDisruptionBudget: metadata: labels: @@ -57,4 +73,4 @@ spec: key2: label2 annotations: key1: label1 - key2: label2 \ No newline at end of file + key2: label2 diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.java index e0a220e0396..ae205769e1f 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.java @@ -20,6 +20,8 @@ import io.fabric8.kubernetes.api.model.ResourceRequirements; import io.fabric8.kubernetes.api.model.ResourceRequirementsBuilder; import io.fabric8.kubernetes.api.model.SecretBuilder; +import io.fabric8.kubernetes.api.model.SecretVolumeSource; +import io.fabric8.kubernetes.api.model.SecretVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.SecurityContext; import io.fabric8.kubernetes.api.model.SecurityContextBuilder; import io.fabric8.kubernetes.api.model.Service; @@ -28,6 +30,7 @@ import io.fabric8.kubernetes.api.model.TolerationBuilder; import io.fabric8.kubernetes.api.model.Volume; import io.fabric8.kubernetes.api.model.VolumeMount; +import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicy; import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicyIngressRule; @@ -39,6 +42,8 @@ import io.strimzi.api.kafka.model.common.SystemPropertyBuilder; import io.strimzi.api.kafka.model.common.metrics.JmxPrometheusExporterMetricsBuilder; import io.strimzi.api.kafka.model.common.metrics.MetricsConfig; +import io.strimzi.api.kafka.model.common.template.AdditionalVolume; +import io.strimzi.api.kafka.model.common.template.AdditionalVolumeBuilder; import io.strimzi.api.kafka.model.common.template.IpFamily; import io.strimzi.api.kafka.model.common.template.IpFamilyPolicy; import io.strimzi.api.kafka.model.kafka.EphemeralStorage; @@ -108,7 +113,6 @@ import static org.hamcrest.Matchers.hasProperty; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; - @SuppressWarnings({ "checkstyle:ClassDataAbstractionCoupling", "checkstyle:ClassFanOutComplexity" @@ -692,6 +696,21 @@ public void testTemplate() { .withHostnames("my-host-3") .withIp("192.168.1.87") .build(); + + SecretVolumeSource secret = new SecretVolumeSourceBuilder() + .withSecretName("secret1") + .build(); + + List additionalVolumes = singletonList(new AdditionalVolumeBuilder() + .withName("secret-volume-name") + .withSecret(secret) + .build()); + + List additionalVolumeMounts = singletonList(new VolumeMountBuilder() + .withName("secret-volume-name") + .withMountPath("/abc") + .withSubPath("def") + .build()); CruiseControlSpec cruiseControlSpec = new CruiseControlSpecBuilder() .withImage(ccImage) @@ -702,31 +721,35 @@ public void testTemplate() { .withAnnotations(depAnots) .endMetadata() .endDeployment() - .withNewPod() - .withNewMetadata() - .withLabels(podLabels) - .withAnnotations(podAnots) - .endMetadata() - .withPriorityClassName("top-priority") - .withSchedulerName("my-scheduler") - .withHostAliases(hostAlias1, hostAlias2) - .withAffinity(affinity) - .withTolerations(tolerations) - .endPod() - .withNewApiService() - .withNewMetadata() - .withLabels(svcLabels) - .withAnnotations(svcAnots) - .endMetadata() - .withIpFamilyPolicy(IpFamilyPolicy.PREFER_DUAL_STACK) - .withIpFamilies(IpFamily.IPV6, IpFamily.IPV4) - .endApiService() - .withNewServiceAccount() - .withNewMetadata() - .withLabels(saLabels) - .withAnnotations(saAnots) - .endMetadata() - .endServiceAccount() + .withNewPod() + .withNewMetadata() + .withLabels(podLabels) + .withAnnotations(podAnots) + .endMetadata() + .withPriorityClassName("top-priority") + .withSchedulerName("my-scheduler") + .withHostAliases(hostAlias1, hostAlias2) + .withAffinity(affinity) + .withTolerations(tolerations) + .withAdditionalVolumes(additionalVolumes) + .endPod() + .withNewCruiseControlContainer() + .withAdditionalVolumeMounts(additionalVolumeMounts) + .endCruiseControlContainer() + .withNewApiService() + .withNewMetadata() + .withLabels(svcLabels) + .withAnnotations(svcAnots) + .endMetadata() + .withIpFamilyPolicy(IpFamilyPolicy.PREFER_DUAL_STACK) + .withIpFamilies(IpFamily.IPV6, IpFamily.IPV4) + .endApiService() + .withNewServiceAccount() + .withNewMetadata() + .withLabels(saLabels) + .withAnnotations(saAnots) + .endMetadata() + .endServiceAccount() .endTemplate() .build(); @@ -748,7 +771,9 @@ public void testTemplate() { assertThat(dep.getSpec().getTemplate().getSpec().getAffinity(), is(affinity)); assertThat(dep.getSpec().getTemplate().getSpec().getTolerations(), is(tolerations)); assertThat(dep.getSpec().getTemplate().getSpec().getHostAliases(), containsInAnyOrder(hostAlias1, hostAlias2)); - + assertThat(dep.getSpec().getTemplate().getSpec().getVolumes().stream().filter(volume -> "secret-volume-name".equals(volume.getName())).iterator().next().getSecret(), is(secret)); + assertThat(dep.getSpec().getTemplate().getSpec().getContainers().get(0).getVolumeMounts().stream().filter(volumeMount -> "secret-volume-name".equals(volumeMount.getName())).iterator().next(), is(additionalVolumeMounts.get(0))); + // Check Service svcLabels.putAll(expectedLabels()); Service svc = cc.generateService(); diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java index 3fdbd6d5103..563dabb2777 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java @@ -11,6 +11,8 @@ import io.fabric8.kubernetes.api.model.LocalObjectReference; import io.fabric8.kubernetes.api.model.PodSecurityContextBuilder; import io.fabric8.kubernetes.api.model.Quantity; +import io.fabric8.kubernetes.api.model.SecretVolumeSource; +import io.fabric8.kubernetes.api.model.SecretVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.SecurityContext; import io.fabric8.kubernetes.api.model.SecurityContextBuilder; import io.fabric8.kubernetes.api.model.ServiceAccount; @@ -20,6 +22,7 @@ import io.fabric8.kubernetes.api.model.TopologySpreadConstraintBuilder; import io.fabric8.kubernetes.api.model.Volume; import io.fabric8.kubernetes.api.model.VolumeMount; +import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicy; import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicyIngressRule; @@ -29,6 +32,8 @@ import io.fabric8.kubernetes.api.model.rbac.Role; import io.strimzi.api.kafka.model.common.Constants; import io.strimzi.api.kafka.model.common.ContainerEnvVar; +import io.strimzi.api.kafka.model.common.template.AdditionalVolume; +import io.strimzi.api.kafka.model.common.template.AdditionalVolumeBuilder; import io.strimzi.api.kafka.model.common.template.ContainerTemplate; import io.strimzi.api.kafka.model.kafka.Kafka; import io.strimzi.api.kafka.model.kafka.KafkaBuilder; @@ -246,6 +251,21 @@ public void testTemplate() { .withWhenUnsatisfiable("ScheduleAnyway") .withLabelSelector(new LabelSelectorBuilder().withMatchLabels(singletonMap("label", "value")).build()) .build(); + + SecretVolumeSource secret = new SecretVolumeSourceBuilder() + .withSecretName("secret1") + .build(); + + List additionalVolumes = singletonList(new AdditionalVolumeBuilder() + .withName("secret-volume-name") + .withSecret(secret) + .build()); + + List additionalVolumeMounts = singletonList(new VolumeMountBuilder() + .withName("secret-volume-name") + .withMountPath("/abc") + .withSubPath("def") + .build()); Kafka resource = new KafkaBuilder(ResourceUtils.createKafka(namespace, cluster, replicas, image, healthDelay, healthTimeout)) @@ -270,7 +290,14 @@ public void testTemplate() { .withTolerations(singletonList(toleration)) .withTopologySpreadConstraints(tsc1, tsc2) .withEnableServiceLinks(false) + .withAdditionalVolumes(additionalVolumes) .endPod() + .withNewTopicOperatorContainer() + .withAdditionalVolumeMounts(additionalVolumeMounts) + .endTopicOperatorContainer() + .withNewUserOperatorContainer() + .withAdditionalVolumeMounts(additionalVolumeMounts) + .endUserOperatorContainer() .withNewEntityOperatorRole() .withNewMetadata() .withLabels(rLabels) @@ -303,6 +330,9 @@ public void testTemplate() { assertThat(dep.getSpec().getTemplate().getSpec().getTopologySpreadConstraints(), containsInAnyOrder(tsc1, tsc2)); assertThat(dep.getSpec().getTemplate().getSpec().getEnableServiceLinks(), is(false)); assertThat(dep.getSpec().getTemplate().getSpec().getTolerations(), is(singletonList(assertToleration))); + assertThat(dep.getSpec().getTemplate().getSpec().getVolumes().stream().filter(volume -> "secret-volume-name".equals(volume.getName())).iterator().next().getSecret(), is(secret)); + assertThat(dep.getSpec().getTemplate().getSpec().getContainers().get(0).getVolumeMounts().stream().filter(volumeMount -> "secret-volume-name".equals(volumeMount.getName())).iterator().next(), is(additionalVolumeMounts.get(0))); + assertThat(dep.getSpec().getTemplate().getSpec().getContainers().get(1).getVolumeMounts().stream().filter(volumeMount -> "secret-volume-name".equals(volumeMount.getName())).iterator().next(), is(additionalVolumeMounts.get(0))); // Generate Role metadata Role crb = entityOperator.generateRole(null, namespace); diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java index 5c6b9dfb33d..bfcd8a06b5f 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java @@ -6,6 +6,8 @@ import io.fabric8.kubernetes.api.model.Affinity; import io.fabric8.kubernetes.api.model.AffinityBuilder; +import io.fabric8.kubernetes.api.model.ConfigMapVolumeSource; +import io.fabric8.kubernetes.api.model.ConfigMapVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.Container; import io.fabric8.kubernetes.api.model.EnvVar; import io.fabric8.kubernetes.api.model.EnvVarBuilder; @@ -18,13 +20,17 @@ import io.fabric8.kubernetes.api.model.PodSpec; import io.fabric8.kubernetes.api.model.Quantity; import io.fabric8.kubernetes.api.model.ResourceRequirementsBuilder; +import io.fabric8.kubernetes.api.model.SecretVolumeSource; +import io.fabric8.kubernetes.api.model.SecretVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServiceAccount; import io.fabric8.kubernetes.api.model.Toleration; import io.fabric8.kubernetes.api.model.TolerationBuilder; import io.fabric8.kubernetes.api.model.TopologySpreadConstraint; import io.fabric8.kubernetes.api.model.TopologySpreadConstraintBuilder; +import io.fabric8.kubernetes.api.model.Volume; import io.fabric8.kubernetes.api.model.VolumeMount; +import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.policy.v1.PodDisruptionBudget; import io.fabric8.kubernetes.api.model.rbac.ClusterRoleBinding; @@ -40,6 +46,8 @@ import io.strimzi.api.kafka.model.common.SystemPropertyBuilder; import io.strimzi.api.kafka.model.common.authentication.KafkaClientAuthenticationOAuthBuilder; import io.strimzi.api.kafka.model.common.authentication.KafkaClientAuthenticationTlsBuilder; +import io.strimzi.api.kafka.model.common.template.AdditionalVolume; +import io.strimzi.api.kafka.model.common.template.AdditionalVolumeBuilder; import io.strimzi.api.kafka.model.common.template.ContainerTemplate; import io.strimzi.api.kafka.model.common.template.DeploymentStrategy; import io.strimzi.api.kafka.model.common.template.IpFamily; @@ -81,7 +89,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; @ParallelSuite -@SuppressWarnings({"checkstyle:ClassDataAbstractionCoupling"}) +@SuppressWarnings({"checkstyle:ClassDataAbstractionCoupling", "checkstyle:ClassFanOutComplexity"}) public class KafkaBridgeClusterTest { private static final SharedEnvironmentProvider SHARED_ENV_PROVIDER = new MockSharedEnvironmentProvider(); @@ -389,6 +397,7 @@ public void testGenerateDeploymentWithPlainAuth() { } @ParallelTest + @SuppressWarnings({"checkstyle:methodlength"}) public void testTemplate() { Map depLabels = TestUtils.map("l1", "v1", "l2", "v2", Labels.KUBERNETES_PART_OF_LABEL, "custom-part", @@ -443,6 +452,21 @@ public void testTemplate() { .withWhenUnsatisfiable("ScheduleAnyway") .withLabelSelector(new LabelSelectorBuilder().withMatchLabels(singletonMap("label", "value")).build()) .build(); + + SecretVolumeSource secret = new SecretVolumeSourceBuilder() + .withSecretName("secret1") + .build(); + + List additionalVolumes = singletonList(new AdditionalVolumeBuilder() + .withName("secret-volume-name") + .withSecret(secret) + .build()); + + List additionalVolumeMounts = singletonList(new VolumeMountBuilder() + .withName("secret-volume-name") + .withMountPath("/abc") + .withSubPath("def") + .build()); KafkaBridge resource = new KafkaBridgeBuilder(this.resource) .editSpec() @@ -466,7 +490,11 @@ public void testTemplate() { .withTopologySpreadConstraints(tsc1, tsc2) .withEnableServiceLinks(false) .withTmpDirSizeLimit("10Mi") + .withAdditionalVolumes(additionalVolumes) .endPod() + .withNewBridgeContainer() + .withAdditionalVolumeMounts(additionalVolumeMounts) + .endBridgeContainer() .withNewApiService() .withNewMetadata() .withLabels(svcLabels) @@ -508,7 +536,9 @@ public void testTemplate() { assertThat(dep.getSpec().getTemplate().getSpec().getTolerations(), is(tolerations)); assertThat(dep.getSpec().getTemplate().getSpec().getTopologySpreadConstraints(), containsInAnyOrder(tsc1, tsc2)); assertThat(dep.getSpec().getTemplate().getSpec().getEnableServiceLinks(), is(false)); - assertThat(dep.getSpec().getTemplate().getSpec().getVolumes().get(0).getEmptyDir().getSizeLimit(), is(new Quantity("10Mi"))); + assertThat(getVolume(dep, VolumeUtils.STRIMZI_TMP_DIRECTORY_DEFAULT_VOLUME_NAME).getEmptyDir().getSizeLimit(), is(new Quantity("10Mi"))); + assertThat(getVolume(dep, "secret-volume-name").getSecret(), is(secret)); + assertThat(getVolumeMount(dep.getSpec().getTemplate().getSpec().getContainers().get(0), "secret-volume-name"), is(additionalVolumeMounts.get(0))); // Check Service Service svc = kbc.generateService(); @@ -527,6 +557,14 @@ public void testTemplate() { assertThat(sa.getMetadata().getLabels().entrySet().containsAll(saLabels.entrySet()), is(true)); assertThat(sa.getMetadata().getAnnotations().entrySet().containsAll(saAnots.entrySet()), is(true)); } + + private static Volume getVolume(Deployment dep, String volumeName) { + return dep.getSpec().getTemplate().getSpec().getVolumes().stream().filter(volume -> volumeName.equals(volume.getName())).iterator().next(); + } + + private static VolumeMount getVolumeMount(Container container, String volumeName) { + return container.getVolumeMounts().stream().filter(volumeMount -> volumeName.equals(volumeMount.getName())).iterator().next(); + } @ParallelTest public void testGracePeriod() { @@ -793,15 +831,54 @@ public void testGenerateDeploymentWithRackAndCustomInitImage() { assertRackAwareDeploymentConfigured(resource, customImage); } + + @ParallelTest + public void testGenerateDeploymentWithRackAndInitVolumeMounts() { + + ConfigMapVolumeSource configMap = new ConfigMapVolumeSourceBuilder() + .withName("config-map-name") + .build(); + + AdditionalVolume additionalVolume = new AdditionalVolumeBuilder() + .withName("config-map-volume-name") + .withConfigMap(configMap) + .build(); + + VolumeMount additionalVolumeMount = new VolumeMountBuilder() + .withName("config-map-volume-name") + .withMountPath("/abc") + .withSubPath("def") + .build(); + + KafkaBridge resource = new KafkaBridgeBuilder(this.resource) + .editOrNewSpec() + .withNewRack() + .withTopologyKey("topology-key") + .endRack() + .withNewTemplate() + .withNewPod() + .withAdditionalVolumes(singletonList(additionalVolume)) + .endPod() + .withNewInitContainer() + .withAdditionalVolumeMounts(singletonList(additionalVolumeMount)) + .endInitContainer() + .endTemplate() + .endSpec() + .build(); + Deployment deployment = assertRackAwareDeploymentConfigured(resource, "quay.io/strimzi/operator:latest"); + assertThat(getVolume(deployment, "config-map-volume-name").getConfigMap(), is(configMap)); + assertThat(getVolumeMount(deployment.getSpec().getTemplate().getSpec().getInitContainers().get(0), "config-map-volume-name"), is(additionalVolumeMount)); - private static void assertRackAwareDeploymentConfigured(final KafkaBridge resource, final String expectedInitImage) { + } + + private static Deployment assertRackAwareDeploymentConfigured(final KafkaBridge resource, final String expectedInitImage) { KafkaBridgeCluster bridgeCluster = KafkaBridgeCluster.fromCrd(Reconciliation.DUMMY_RECONCILIATION, resource, SHARED_ENV_PROVIDER); Deployment deployment = bridgeCluster.generateDeployment(new HashMap<>(), false, null, null); assertThat(resource.getSpec().getRack(), is(notNullValue())); PodSpec podSpec = deployment.getSpec().getTemplate().getSpec(); - + List containers = podSpec.getContainers(); assertThat(containers, is(notNullValue())); assertThat(containers, hasSize(1)); @@ -831,13 +908,11 @@ private static void assertRackAwareDeploymentConfigured(final KafkaBridge resour assertThat(initEnv.stream().filter(var -> ENV_VAR_KAFKA_INIT_INIT_FOLDER_KEY.equals(var.getName())).findFirst().orElseThrow().getValue(), is(KafkaBridgeCluster.INIT_VOLUME_MOUNT)); assertThat(initEnv.stream().filter(var -> AbstractModel.ENV_VAR_KAFKA_INIT_NODE_NAME.equals(var.getName())).findFirst().orElseThrow().getValueFrom().getFieldRef().getFieldPath(), is("spec.nodeName")); - assertThat(container.getVolumeMounts(), hasSize(1)); - final VolumeMount volumeMount = container.getVolumeMounts().get(0); - assertThat(volumeMount.getName(), is(KafkaBridgeCluster.INIT_VOLUME_NAME)); - assertThat(volumeMount.getMountPath(), is(KafkaBridgeCluster.INIT_VOLUME_MOUNT)); + assertThat(getVolumeMount(container, KafkaBridgeCluster.INIT_VOLUME_NAME).getMountPath(), is(KafkaBridgeCluster.INIT_VOLUME_MOUNT)); + + return deployment; } - @ParallelTest public void testClusterRoleBindingRack() { String testNamespace = "other-namespace"; diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java index a6dd7c9ba38..452914ea585 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java @@ -12,16 +12,21 @@ import io.fabric8.kubernetes.api.model.IntOrString; import io.fabric8.kubernetes.api.model.LabelSelectorRequirementBuilder; import io.fabric8.kubernetes.api.model.PersistentVolumeClaim; +import io.fabric8.kubernetes.api.model.Pod; +import io.fabric8.kubernetes.api.model.PodSpec; import io.fabric8.kubernetes.api.model.Quantity; import io.fabric8.kubernetes.api.model.ResourceRequirements; import io.fabric8.kubernetes.api.model.ResourceRequirementsBuilder; import io.fabric8.kubernetes.api.model.Secret; +import io.fabric8.kubernetes.api.model.SecretVolumeSource; +import io.fabric8.kubernetes.api.model.SecretVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.SecurityContext; import io.fabric8.kubernetes.api.model.SecurityContextBuilder; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServiceAccount; import io.fabric8.kubernetes.api.model.Volume; import io.fabric8.kubernetes.api.model.VolumeMount; +import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicy; import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicyIngressRule; @@ -41,6 +46,8 @@ import io.strimzi.api.kafka.model.common.jmx.KafkaJmxOptionsBuilder; import io.strimzi.api.kafka.model.common.metrics.JmxPrometheusExporterMetricsBuilder; import io.strimzi.api.kafka.model.common.metrics.MetricsConfig; +import io.strimzi.api.kafka.model.common.template.AdditionalVolume; +import io.strimzi.api.kafka.model.common.template.AdditionalVolumeBuilder; import io.strimzi.api.kafka.model.common.template.ContainerTemplate; import io.strimzi.api.kafka.model.common.template.ExternalTrafficPolicy; import io.strimzi.api.kafka.model.common.template.IpFamily; @@ -65,6 +72,7 @@ import io.strimzi.api.kafka.model.kafka.listener.KafkaListenerAuthenticationOAuthBuilder; import io.strimzi.api.kafka.model.kafka.listener.KafkaListenerType; import io.strimzi.api.kafka.model.kafka.listener.NodeAddressType; +import io.strimzi.api.kafka.model.podset.StrimziPodSet; import io.strimzi.certs.OpenSslCertManager; import io.strimzi.operator.cluster.KafkaVersionTestUtils; import io.strimzi.operator.cluster.model.jmx.JmxModel; @@ -517,6 +525,21 @@ public void testTemplate() { Map saLabels = TestUtils.map("l21", "v21", "l22", "v22"); Map saAnnotations = TestUtils.map("a21", "v21", "a22", "v22"); + + SecretVolumeSource secret = new SecretVolumeSourceBuilder() + .withSecretName("secret1") + .build(); + + AdditionalVolume additionalVolume = new AdditionalVolumeBuilder() + .withName("secret-volume-name") + .withSecret(secret) + .build(); + + VolumeMount additionalVolumeMount = new VolumeMountBuilder() + .withName("secret-volume-name") + .withMountPath("/abc") + .withSubPath("def") + .build(); Kafka kafkaAssembly = new KafkaBuilder(KAFKA) .editSpec() @@ -534,6 +557,12 @@ public void testTemplate() { .withTls(true) .build()) .withNewTemplate() + .withNewPod() + .withAdditionalVolumes(additionalVolume) + .endPod() + .withNewKafkaContainer() + .withAdditionalVolumeMounts(additionalVolumeMount) + .endKafkaContainer() .withNewBootstrapService() .withNewMetadata() .withLabels(svcLabels) @@ -648,6 +677,11 @@ public void testTemplate() { ServiceAccount sa = kc.generateServiceAccount(); assertThat(sa.getMetadata().getLabels().entrySet().containsAll(saLabels.entrySet()), is(true)); assertThat(sa.getMetadata().getAnnotations().entrySet().containsAll(saAnnotations.entrySet()), is(true)); + + List podSets = kc.generatePodSets(false, null, null, i -> Map.of()); + PodSpec podSpec = ((Pod) (podSets.get(0).getSpec().getPods().get(0))).getSpec(); + assertThat(podSpec.getVolumes().stream().filter(volume -> "secret-volume-name".equals(volume.getName())).iterator().next().getSecret(), is(secret)); + assertThat(podSpec.getContainers().get(0).getVolumeMounts().stream().filter(volumeMount -> "secret-volume-name".equals(volumeMount.getName())).iterator().next(), is(additionalVolume)); } @ParallelTest diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.java index 2c8bbb1c621..49c3931cdb6 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.java @@ -8,9 +8,15 @@ import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.Quantity; import io.fabric8.kubernetes.api.model.ResourceRequirementsBuilder; +import io.fabric8.kubernetes.api.model.SecretVolumeSource; +import io.fabric8.kubernetes.api.model.SecretVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.ServiceAccount; +import io.fabric8.kubernetes.api.model.VolumeMount; +import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.fabric8.openshift.api.model.BuildConfig; import io.strimzi.api.kafka.model.common.ContainerEnvVarBuilder; +import io.strimzi.api.kafka.model.common.template.AdditionalVolume; +import io.strimzi.api.kafka.model.common.template.AdditionalVolumeBuilder; import io.strimzi.api.kafka.model.connect.KafkaConnect; import io.strimzi.api.kafka.model.connect.KafkaConnectBuilder; import io.strimzi.api.kafka.model.connect.KafkaConnectResources; @@ -428,6 +434,21 @@ public void testTemplate() { Map saLabels = TestUtils.map("l5", "v5", "l6", "v6"); Map saAnots = TestUtils.map("a5", "v5", "a6", "v6"); + SecretVolumeSource secret = new SecretVolumeSourceBuilder() + .withSecretName("secret1") + .build(); + + AdditionalVolume additionalVolume = new AdditionalVolumeBuilder() + .withName("secret-volume-name") + .withSecret(secret) + .build(); + + VolumeMount additionalVolumeMount = new VolumeMountBuilder() + .withName("secret-volume-name") + .withMountPath("/abc") + .withSubPath("def") + .build(); + KafkaConnect kc = new KafkaConnectBuilder() .withNewMetadata() .withName(cluster) @@ -452,9 +473,11 @@ public void testTemplate() { .withPriorityClassName("top-priority") .withSchedulerName("my-scheduler") .withEnableServiceLinks(false) + .withAdditionalVolumes(additionalVolume) .endBuildPod() .withNewBuildContainer() .withEnv(new ContainerEnvVarBuilder().withName("TEST_ENV_VAR").withValue("testValue").build()) + .withAdditionalVolumeMounts(additionalVolumeMount) .endBuildContainer() .withNewBuildConfig() .withNewMetadata() @@ -482,6 +505,8 @@ public void testTemplate() { assertThat(pod.getSpec().getSchedulerName(), is("my-scheduler")); assertThat(pod.getSpec().getEnableServiceLinks(), is(false)); assertThat(pod.getSpec().getContainers().get(0).getEnv().stream().filter(env -> "TEST_ENV_VAR".equals(env.getName())).findFirst().orElseThrow().getValue(), is("testValue")); + assertThat(pod.getSpec().getContainers().get(0).getVolumeMounts().stream().filter(volumeMount -> "secret-volume-name".equals(volumeMount.getName())).iterator().next(), is(additionalVolumeMount)); + assertThat(pod.getSpec().getVolumes().stream().filter(volume -> "secret-volume-name".equals(volume.getName())).iterator().next().getSecret(), is(secret)); KafkaConnectDockerfile dockerfile = new KafkaConnectDockerfile("my-image:latest", kc.getSpec().getBuild(), SHARED_ENV_PROVIDER); BuildConfig bc = build.generateBuildConfig(dockerfile); diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.java index 185a29cb352..830519801f6 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.java @@ -6,8 +6,11 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapKeySelectorBuilder; +import io.fabric8.kubernetes.api.model.ConfigMapVolumeSource; import io.fabric8.kubernetes.api.model.ConfigMapVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.Container; +import io.fabric8.kubernetes.api.model.EmptyDirVolumeSource; +import io.fabric8.kubernetes.api.model.EmptyDirVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.EnvVar; import io.fabric8.kubernetes.api.model.EnvVarBuilder; import io.fabric8.kubernetes.api.model.HostAlias; @@ -22,6 +25,7 @@ import io.fabric8.kubernetes.api.model.ResourceRequirementsBuilder; import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.api.model.SecretKeySelectorBuilder; +import io.fabric8.kubernetes.api.model.SecretVolumeSource; import io.fabric8.kubernetes.api.model.SecretVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.SecurityContext; import io.fabric8.kubernetes.api.model.SecurityContextBuilder; @@ -31,6 +35,7 @@ import io.fabric8.kubernetes.api.model.TopologySpreadConstraintBuilder; import io.fabric8.kubernetes.api.model.Volume; import io.fabric8.kubernetes.api.model.VolumeMount; +import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicy; import io.fabric8.kubernetes.api.model.policy.v1.PodDisruptionBudget; import io.fabric8.kubernetes.api.model.rbac.ClusterRoleBinding; @@ -46,6 +51,8 @@ import io.strimzi.api.kafka.model.common.metrics.JmxPrometheusExporterMetrics; import io.strimzi.api.kafka.model.common.metrics.JmxPrometheusExporterMetricsBuilder; import io.strimzi.api.kafka.model.common.metrics.MetricsConfig; +import io.strimzi.api.kafka.model.common.template.AdditionalVolume; +import io.strimzi.api.kafka.model.common.template.AdditionalVolumeBuilder; import io.strimzi.api.kafka.model.common.template.ContainerTemplate; import io.strimzi.api.kafka.model.common.template.IpFamily; import io.strimzi.api.kafka.model.common.template.IpFamilyPolicy; @@ -706,6 +713,7 @@ public void testPodSet() { } @ParallelTest + @SuppressWarnings({"checkstyle:methodlength"}) public void testTemplate() { Map spsLabels = TestUtils.map("l1", "v1", "l2", "v2", Labels.KUBERNETES_PART_OF_LABEL, "custom-part", @@ -751,6 +759,51 @@ public void testTemplate() { .withWhenUnsatisfiable("ScheduleAnyway") .withLabelSelector(new LabelSelectorBuilder().withMatchLabels(singletonMap("label", "value")).build()) .build(); + + ConfigMapVolumeSource configMap = new ConfigMapVolumeSourceBuilder() + .withName("configMap1") + .build(); + + SecretVolumeSource secret = new SecretVolumeSourceBuilder() + .withSecretName("secret1") + .build(); + + EmptyDirVolumeSource emptyDir = new EmptyDirVolumeSourceBuilder() + .withMedium("Memory") + .build(); + + AdditionalVolume additionalVolumeConfigMap = new AdditionalVolumeBuilder() + .withName("config-map-volume-name") + .withConfigMap(configMap) + .build(); + + AdditionalVolume additionalVolumeSecret = new AdditionalVolumeBuilder() + .withName("secret-volume-name") + .withSecret(secret) + .build(); + + AdditionalVolume additionalVolumeEmptyDir = new AdditionalVolumeBuilder() + .withName("empty-dir-volume-name") + .withEmptyDir(emptyDir) + .build(); + + VolumeMount additionalVolumeMountConfigMap = new VolumeMountBuilder() + .withName("config-map-volume-name") + .withMountPath("/abc") + .withSubPath("def") + .build(); + + VolumeMount additionalVolumeMountSecret = new VolumeMountBuilder() + .withName("secret-volume-name") + .withMountPath("/def") + .withSubPath("abc") + .build(); + + VolumeMount additionalVolumeMountEmptyDir = new VolumeMountBuilder() + .withName("empty-dir-volume-name") + .withMountPath("/hij") + .withSubPath("def") + .build(); KafkaConnect resource = new KafkaConnectBuilder(this.resource) .editSpec() @@ -773,7 +826,14 @@ public void testTemplate() { .withTopologySpreadConstraints(tsc1, tsc2) .withEnableServiceLinks(false) .withTmpDirSizeLimit("10Mi") + .withAdditionalVolumes(additionalVolumeSecret, additionalVolumeEmptyDir, additionalVolumeConfigMap) .endPod() + .withNewConnectContainer() + .withAdditionalVolumeMounts(additionalVolumeMountSecret, additionalVolumeMountEmptyDir) + .endConnectContainer() + .withNewInitContainer() + .withAdditionalVolumeMounts(additionalVolumeMountConfigMap) + .endInitContainer() .withNewApiService() .withNewMetadata() .withLabels(svcLabels) @@ -818,7 +878,13 @@ public void testTemplate() { assertThat(pod.getSpec().getHostAliases(), containsInAnyOrder(hostAlias1, hostAlias2)); assertThat(pod.getSpec().getTopologySpreadConstraints(), containsInAnyOrder(tsc1, tsc2)); assertThat(pod.getSpec().getEnableServiceLinks(), is(false)); - assertThat(pod.getSpec().getVolumes().get(0).getEmptyDir().getSizeLimit(), is(new Quantity("10Mi"))); + assertThat(getVolume(pod, VolumeUtils.STRIMZI_TMP_DIRECTORY_DEFAULT_VOLUME_NAME).getEmptyDir().getSizeLimit(), is(new Quantity("10Mi"))); + assertThat(getVolume(pod, additionalVolumeMountEmptyDir.getName()).getEmptyDir(), is(emptyDir)); + assertThat(getVolume(pod, additionalVolumeMountSecret.getName()).getSecret(), is(secret)); + assertThat(getVolume(pod, additionalVolumeMountConfigMap.getName()).getConfigMap(), is(configMap)); + assertThat(getVolumeMount(pod.getSpec().getContainers().get(0), additionalVolumeMountEmptyDir.getName()), is(additionalVolumeMountEmptyDir)); + assertThat(getVolumeMount(pod.getSpec().getContainers().get(0), additionalVolumeMountSecret.getName()), is(additionalVolumeMountSecret)); + assertThat(getVolumeMount(pod.getSpec().getInitContainers().get(0), additionalVolumeMountConfigMap.getName()), is(additionalVolumeMountConfigMap)); }); // Check Service @@ -843,6 +909,14 @@ public void testTemplate() { assertThat(sa.getMetadata().getLabels().entrySet().containsAll(saLabels.entrySet()), is(true)); assertThat(sa.getMetadata().getAnnotations().entrySet().containsAll(saAnots.entrySet()), is(true)); } + + private static Volume getVolume(Pod pod, String volumeName) { + return pod.getSpec().getVolumes().stream().filter(volume -> volumeName.equals(volume.getName())).iterator().next(); + } + + private static VolumeMount getVolumeMount(Container container, String volumeName) { + return container.getVolumeMounts().stream().filter(volumeMount -> volumeName.equals(volumeMount.getName())).iterator().next(); + } @ParallelTest public void testExternalConfigurationSecretEnvs() { diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java index c8afe33a14a..7cd08eea341 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java @@ -6,6 +6,8 @@ import io.fabric8.kubernetes.api.model.Affinity; import io.fabric8.kubernetes.api.model.AffinityBuilder; +import io.fabric8.kubernetes.api.model.ConfigMapVolumeSource; +import io.fabric8.kubernetes.api.model.ConfigMapVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.Container; import io.fabric8.kubernetes.api.model.EnvVar; import io.fabric8.kubernetes.api.model.EnvVarBuilder; @@ -14,6 +16,7 @@ import io.fabric8.kubernetes.api.model.LabelSelectorBuilder; import io.fabric8.kubernetes.api.model.NodeSelectorTermBuilder; import io.fabric8.kubernetes.api.model.OwnerReference; +import io.fabric8.kubernetes.api.model.PodSpec; import io.fabric8.kubernetes.api.model.Quantity; import io.fabric8.kubernetes.api.model.ServiceAccount; import io.fabric8.kubernetes.api.model.Toleration; @@ -22,11 +25,14 @@ import io.fabric8.kubernetes.api.model.TopologySpreadConstraintBuilder; import io.fabric8.kubernetes.api.model.Volume; import io.fabric8.kubernetes.api.model.VolumeMount; +import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicy; import io.strimzi.api.kafka.model.common.ContainerEnvVar; import io.strimzi.api.kafka.model.common.InlineLogging; import io.strimzi.api.kafka.model.common.metrics.JmxPrometheusExporterMetrics; +import io.strimzi.api.kafka.model.common.template.AdditionalVolume; +import io.strimzi.api.kafka.model.common.template.AdditionalVolumeBuilder; import io.strimzi.api.kafka.model.common.template.DeploymentStrategy; import io.strimzi.api.kafka.model.kafka.EphemeralStorage; import io.strimzi.api.kafka.model.kafka.Kafka; @@ -388,6 +394,21 @@ public void testTemplate() { .withWhenUnsatisfiable("ScheduleAnyway") .withLabelSelector(new LabelSelectorBuilder().withMatchLabels(singletonMap("label", "value")).build()) .build(); + + ConfigMapVolumeSource configMap = new ConfigMapVolumeSourceBuilder() + .withName("configMap1") + .build(); + + AdditionalVolume additionalVolumeConfigMap = new AdditionalVolumeBuilder() + .withName("config-map-volume-name") + .withConfigMap(configMap) + .build(); + + VolumeMount additionalVolumeMountConfigMap = new VolumeMountBuilder() + .withName("config-map-volume-name") + .withMountPath("/abc") + .withSubPath("def") + .build(); Kafka resource = new KafkaBuilder(ResourceUtils.createKafka(namespace, cluster, replicas, image, healthDelay, healthTimeout)) @@ -411,7 +432,11 @@ public void testTemplate() { .withTolerations(tolerations) .withTopologySpreadConstraints(tsc1, tsc2) .withEnableServiceLinks(false) + .withAdditionalVolumes(additionalVolumeConfigMap) .endPod() + .withNewContainer() + .withAdditionalVolumeMounts(additionalVolumeMountConfigMap) + .endContainer() .withNewServiceAccount() .withNewMetadata() .withLabels(saLabels) @@ -439,12 +464,22 @@ public void testTemplate() { assertThat(dep.getSpec().getTemplate().getSpec().getTolerations(), is(tolerations)); assertThat(dep.getSpec().getTemplate().getSpec().getTopologySpreadConstraints(), containsInAnyOrder(tsc1, tsc2)); assertThat(dep.getSpec().getTemplate().getSpec().getEnableServiceLinks(), is(false)); + assertThat(getVolume(dep.getSpec().getTemplate().getSpec(), additionalVolumeMountConfigMap.getName()).getConfigMap(), is(configMap)); + assertThat(getVolumeMount(dep.getSpec().getTemplate().getSpec().getContainers().get(0), additionalVolumeMountConfigMap.getName()), is(additionalVolumeMountConfigMap)); // Check Service Account ServiceAccount sa = ke.generateServiceAccount(); assertThat(sa.getMetadata().getLabels().entrySet().containsAll(saLabels.entrySet()), is(true)); assertThat(sa.getMetadata().getAnnotations().entrySet().containsAll(saAnots.entrySet()), is(true)); } + + private static Volume getVolume(PodSpec podSpec, String volumeName) { + return podSpec.getVolumes().stream().filter(volume -> volumeName.equals(volume.getName())).iterator().next(); + } + + private static VolumeMount getVolumeMount(Container container, String volumeName) { + return container.getVolumeMounts().stream().filter(volumeMount -> volumeName.equals(volumeMount.getName())).iterator().next(); + } @ParallelTest public void testGenerateDeploymentWithRecreateDeploymentStrategy() { diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java index 17ba58b19d3..1ab7e8b6246 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java @@ -4,8 +4,11 @@ */ package io.strimzi.operator.cluster.model; +import io.fabric8.kubernetes.api.model.CSIVolumeSource; +import io.fabric8.kubernetes.api.model.CSIVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapKeySelectorBuilder; +import io.fabric8.kubernetes.api.model.ConfigMapVolumeSource; import io.fabric8.kubernetes.api.model.ConfigMapVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.Container; import io.fabric8.kubernetes.api.model.EnvVar; @@ -25,6 +28,7 @@ import io.fabric8.kubernetes.api.model.ServiceAccount; import io.fabric8.kubernetes.api.model.Volume; import io.fabric8.kubernetes.api.model.VolumeMount; +import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicy; import io.fabric8.kubernetes.api.model.policy.v1.PodDisruptionBudget; import io.fabric8.kubernetes.api.model.rbac.ClusterRoleBinding; @@ -40,6 +44,8 @@ import io.strimzi.api.kafka.model.common.metrics.JmxPrometheusExporterMetrics; import io.strimzi.api.kafka.model.common.metrics.JmxPrometheusExporterMetricsBuilder; import io.strimzi.api.kafka.model.common.metrics.MetricsConfig; +import io.strimzi.api.kafka.model.common.template.AdditionalVolume; +import io.strimzi.api.kafka.model.common.template.AdditionalVolumeBuilder; import io.strimzi.api.kafka.model.common.template.ContainerTemplate; import io.strimzi.api.kafka.model.common.template.IpFamily; import io.strimzi.api.kafka.model.common.template.IpFamilyPolicy; @@ -885,6 +891,7 @@ public void testPodSetWithPlainAuthAndTLSSameSecret() { } @ParallelTest + @SuppressWarnings({"checkstyle:methodlength"}) public void testTemplate() { Map podSetLabels = TestUtils.map("l1", "v1", "l2", "v2", Labels.KUBERNETES_PART_OF_LABEL, "custom-part", @@ -916,6 +923,37 @@ public void testTemplate() { .withHostnames("my-host-3") .withIp("192.168.1.87") .build(); + + ConfigMapVolumeSource configMap = new ConfigMapVolumeSourceBuilder() + .withName("configMap1") + .build(); + + CSIVolumeSource csi = new CSIVolumeSourceBuilder() + .withDriver("csi-driver-name") + .withReadOnly(true) + .withNewNodePublishSecretRef("example-secret-provider-class") + .build(); + + AdditionalVolume additionalVolumeConfigMap = new AdditionalVolumeBuilder() + .withName("config-map-volume-name") + .withConfigMap(configMap) + .build(); + + AdditionalVolume additionalVolumeCsi = new AdditionalVolumeBuilder() + .withName("csi-volume-name") + .withCsi(csi) + .build(); + + VolumeMount additionalVolumeMountConfigMap = new VolumeMountBuilder() + .withName("config-map-volume-name") + .withMountPath("/abc") + .withSubPath("def") + .build(); + + VolumeMount additionalVolumeMountCsi = new VolumeMountBuilder() + .withName("csi-volume-name") + .withMountPath("/lmn") + .build(); KafkaMirrorMaker2 resource = new KafkaMirrorMaker2Builder(this.resource) .editSpec() @@ -937,7 +975,14 @@ public void testTemplate() { .withHostAliases(hostAlias1, hostAlias2) .withEnableServiceLinks(false) .withTmpDirSizeLimit("10Mi") + .withAdditionalVolumes(additionalVolumeConfigMap, additionalVolumeCsi) .endPod() + .withNewInitContainer() + .withAdditionalVolumeMounts(additionalVolumeMountCsi) + .endInitContainer() + .withNewConnectContainer() + .withAdditionalVolumeMounts(additionalVolumeMountConfigMap) + .endConnectContainer() .withNewApiService() .withNewMetadata() .withLabels(svcLabels) @@ -981,9 +1026,12 @@ public void testTemplate() { assertThat(pod.getSpec().getSchedulerName(), is("my-scheduler")); assertThat(pod.getSpec().getHostAliases(), containsInAnyOrder(hostAlias1, hostAlias2)); assertThat(pod.getSpec().getEnableServiceLinks(), is(false)); - assertThat(pod.getSpec().getVolumes().stream() - .filter(volume -> volume.getName().equalsIgnoreCase("strimzi-tmp")) - .findFirst().get().getEmptyDir().getSizeLimit(), is(new Quantity("10Mi"))); + assertThat(getVolume(pod, "strimzi-tmp").getEmptyDir().getSizeLimit(), is(new Quantity("10Mi"))); + assertThat(getVolume(pod, additionalVolumeMountConfigMap.getName()).getConfigMap(), is(configMap)); + assertThat(getVolume(pod, additionalVolumeMountCsi.getName()).getCsi(), is(csi)); + assertThat(getVolumeMount(pod.getSpec().getContainers().get(0), additionalVolumeMountConfigMap.getName()), is(additionalVolumeMountConfigMap)); + assertThat(getVolumeMount(pod.getSpec().getInitContainers().get(0), additionalVolumeMountCsi.getName()), is(additionalVolumeMountCsi)); + }); // Check Service @@ -1008,6 +1056,14 @@ public void testTemplate() { assertThat(sa.getMetadata().getLabels().entrySet().containsAll(saLabels.entrySet()), is(true)); assertThat(sa.getMetadata().getAnnotations().entrySet().containsAll(saAnots.entrySet()), is(true)); } + + private static Volume getVolume(Pod pod, String volumeName) { + return pod.getSpec().getVolumes().stream().filter(volume -> volumeName.equals(volume.getName())).iterator().next(); + } + + private static VolumeMount getVolumeMount(Container container, String volumeName) { + return container.getVolumeMounts().stream().filter(volumeMount -> volumeName.equals(volumeMount.getName())).iterator().next(); + } @ParallelTest public void testExternalConfigurationSecretEnvs() { From 09bc97b053f1e222852c7857d9e2b5f2d7b012fe Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Thu, 27 Jun 2024 08:48:51 +0000 Subject: [PATCH 07/62] update gitignore with systemtest/bin Signed-off-by: Casper Thygesen --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1bb05f3edc7..6eb04290e9b 100644 --- a/.gitignore +++ b/.gitignore @@ -44,6 +44,7 @@ docker-images/operator/tmp/** # Connect plugin (tests) systemtest/*.tar.gz +systemtest/bin/ systemtest/my-plugins/ systemtest/scripts/results.json From 55232122d9e675bb10dfd9ce2e07aaa85c72cf7f Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Thu, 27 Jun 2024 09:20:29 +0000 Subject: [PATCH 08/62] Update gitignore with more systemtest bins Signed-off-by: Casper Thygesen --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6eb04290e9b..5592926cc5f 100644 --- a/.gitignore +++ b/.gitignore @@ -45,6 +45,7 @@ docker-images/operator/tmp/** # Connect plugin (tests) systemtest/*.tar.gz systemtest/bin/ +cluster-operator/bin/ systemtest/my-plugins/ systemtest/scripts/results.json From a506979d82bbac5e0aac9b4c0e101e3fe246b1dd Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Thu, 27 Jun 2024 09:28:18 +0000 Subject: [PATCH 09/62] Replace CSI with PersistentVolumeClaims Signed-off-by: Casper Thygesen --- .../common/template/AdditionalVolume.java | 18 ++-- .../operator/cluster/model/TemplateUtils.java | 4 +- .../model/KafkaMirrorMaker2ClusterTest.java | 37 ++++--- documentation/modules/appendix_crds.adoc | 6 +- .../cluster-operator/040-Crd-kafka.yaml | 102 ++++-------------- .../041-Crd-kafkaconnect.yaml | 34 ++---- .../045-Crd-kafkamirrormaker.yaml | 17 +-- .../cluster-operator/046-Crd-kafkabridge.yaml | 17 +-- .../048-Crd-kafkamirrormaker2.yaml | 34 ++---- .../04A-Crd-kafkanodepool.yaml | 17 +-- 10 files changed, 76 insertions(+), 210 deletions(-) diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java index b02ba9f941a..b9e017dff39 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java @@ -6,9 +6,9 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.fabric8.kubernetes.api.model.CSIVolumeSource; import io.fabric8.kubernetes.api.model.ConfigMapVolumeSource; import io.fabric8.kubernetes.api.model.EmptyDirVolumeSource; +import io.fabric8.kubernetes.api.model.PersistentVolumeClaimVolumeSource; //import io.fabric8.kubernetes.api.model.EmptyDirVolumeSource; import io.fabric8.kubernetes.api.model.SecretVolumeSource; import io.strimzi.api.kafka.model.common.Constants; @@ -27,7 +27,7 @@ */ @Buildable(editableEnabled = false, builderPackage = Constants.FABRIC8_KUBERNETES_API) @JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({ "name", "path", "subPath", "secret", "configMap", "emptyDir", "csi" }) +@JsonPropertyOrder({ "name", "path", "subPath", "secret", "configMap", "emptyDir", "pvc" }) @EqualsAndHashCode @ToString public class AdditionalVolume implements UnknownPropertyPreserving { @@ -35,7 +35,7 @@ public class AdditionalVolume implements UnknownPropertyPreserving { private SecretVolumeSource secret; private ConfigMapVolumeSource configMap; private EmptyDirVolumeSource emptyDir; - private CSIVolumeSource csi; + private PersistentVolumeClaimVolumeSource pvc; private Map additionalProperties = new HashMap<>(0); @Description("Name to use for the volume. Required.") @@ -81,15 +81,15 @@ public void setEmptyDir(EmptyDirVolumeSource emptyDir) { this.emptyDir = emptyDir; } - @Description("CSI object to use to populate the volume.") - @KubeLink(group = "core", version = "v1", kind = "csivolumesource") + @Description("PVC object to use to populate the volume.") + @KubeLink(group = "core", version = "v1", kind = "persistentvolumeclaimvolumesource") @JsonInclude(JsonInclude.Include.NON_EMPTY) - public CSIVolumeSource getCsi() { - return csi; + public PersistentVolumeClaimVolumeSource getPvc() { + return pvc; } - public void setCsi(CSIVolumeSource csi) { - this.csi = csi; + public void setPvc(PersistentVolumeClaimVolumeSource pvc) { + this.pvc = pvc; } @Override diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index dbcb116f4bf..f74bd8f4500 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -90,8 +90,8 @@ private static Volume createVolumeFromConfig(AdditionalVolume volumeConfig) { volumeBuilder.withNewSecret().withSecretName(volumeConfig.getSecret().getSecretName()).endSecret(); } else if (volumeConfig.getEmptyDir() != null) { volumeBuilder.withNewEmptyDir().withMedium(volumeConfig.getEmptyDir().getMedium()).endEmptyDir(); - } else if (volumeConfig.getCsi() != null) { - volumeBuilder.withCsi(volumeConfig.getCsi()); + } else if (volumeConfig.getPvc() != null) { + volumeBuilder.withPersistentVolumeClaim(volumeConfig.getPvc()); } return volumeBuilder.build(); diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java index 1ab7e8b6246..cd672b975c3 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java @@ -4,8 +4,6 @@ */ package io.strimzi.operator.cluster.model; -import io.fabric8.kubernetes.api.model.CSIVolumeSource; -import io.fabric8.kubernetes.api.model.CSIVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapKeySelectorBuilder; import io.fabric8.kubernetes.api.model.ConfigMapVolumeSource; @@ -75,6 +73,17 @@ import io.strimzi.test.TestUtils; import io.strimzi.test.annotations.ParallelSuite; import io.strimzi.test.annotations.ParallelTest; +import src.main.java.io.strimzi.operator.cluster.model.AbstractModel; +import src.main.java.io.strimzi.operator.cluster.model.ImagePullPolicy; +import src.main.java.io.strimzi.operator.cluster.model.JvmOptionUtils; +import src.main.java.io.strimzi.operator.cluster.model.KafkaConnectCluster; +import src.main.java.io.strimzi.operator.cluster.model.KafkaMirrorMaker2Cluster; +import src.main.java.io.strimzi.operator.cluster.model.KafkaVersion; +import src.main.java.io.strimzi.operator.cluster.model.MetricsAndLogging; +import src.main.java.io.strimzi.operator.cluster.model.PodRevision; +import src.main.java.io.strimzi.operator.cluster.model.PodSetUtils; +import src.main.java.io.strimzi.operator.cluster.model.SharedEnvironmentProvider; +import src.main.java.io.strimzi.operator.cluster.model.VolumeUtils; import java.io.IOException; import java.util.ArrayList; @@ -928,8 +937,8 @@ public void testTemplate() { .withName("configMap1") .build(); - CSIVolumeSource csi = new CSIVolumeSourceBuilder() - .withDriver("csi-driver-name") + PersistentVolumeClaimVolumeSource pvc = new PersistentVolumeClaimVolumeSourceBuilder() + .withClaimName("pvc-name") .withReadOnly(true) .withNewNodePublishSecretRef("example-secret-provider-class") .build(); @@ -939,9 +948,9 @@ public void testTemplate() { .withConfigMap(configMap) .build(); - AdditionalVolume additionalVolumeCsi = new AdditionalVolumeBuilder() - .withName("csi-volume-name") - .withCsi(csi) + AdditionalVolume additionalVolumePvc = new AdditionalVolumeBuilder() + .withName("pvc-volume-name") + .withPersistentVolumeClaim(pvc) .build(); VolumeMount additionalVolumeMountConfigMap = new VolumeMountBuilder() @@ -950,9 +959,9 @@ public void testTemplate() { .withSubPath("def") .build(); - VolumeMount additionalVolumeMountCsi = new VolumeMountBuilder() - .withName("csi-volume-name") - .withMountPath("/lmn") + VolumeMount additionalVolumeMountPvc = new VolumeMountBuilder() + .withName("pvc-volume-name") + .withMountPath("/mnt/mypvc") .build(); KafkaMirrorMaker2 resource = new KafkaMirrorMaker2Builder(this.resource) @@ -975,10 +984,10 @@ public void testTemplate() { .withHostAliases(hostAlias1, hostAlias2) .withEnableServiceLinks(false) .withTmpDirSizeLimit("10Mi") - .withAdditionalVolumes(additionalVolumeConfigMap, additionalVolumeCsi) + .withAdditionalVolumes(additionalVolumeConfigMap, additionalVolumePvc) .endPod() .withNewInitContainer() - .withAdditionalVolumeMounts(additionalVolumeMountCsi) + .withAdditionalVolumeMounts(additionalVolumeMountPvc) .endInitContainer() .withNewConnectContainer() .withAdditionalVolumeMounts(additionalVolumeMountConfigMap) @@ -1028,9 +1037,9 @@ public void testTemplate() { assertThat(pod.getSpec().getEnableServiceLinks(), is(false)); assertThat(getVolume(pod, "strimzi-tmp").getEmptyDir().getSizeLimit(), is(new Quantity("10Mi"))); assertThat(getVolume(pod, additionalVolumeMountConfigMap.getName()).getConfigMap(), is(configMap)); - assertThat(getVolume(pod, additionalVolumeMountCsi.getName()).getCsi(), is(csi)); + assertThat(getVolume(pod, additionalVolumeMountPvc.getName()).getPvc(), is(pvc)); assertThat(getVolumeMount(pod.getSpec().getContainers().get(0), additionalVolumeMountConfigMap.getName()), is(additionalVolumeMountConfigMap)); - assertThat(getVolumeMount(pod.getSpec().getInitContainers().get(0), additionalVolumeMountCsi.getName()), is(additionalVolumeMountCsi)); + assertThat(getVolumeMount(pod.getSpec().getInitContainers().get(0), additionalVolumeMountPvc.getName()), is(additionalVolumeMountPvc)); }); diff --git a/documentation/modules/appendix_crds.adoc b/documentation/modules/appendix_crds.adoc index e28d1c8f6b4..c6e79c8476c 100644 --- a/documentation/modules/appendix_crds.adoc +++ b/documentation/modules/appendix_crds.adoc @@ -1225,9 +1225,9 @@ Used in: xref:type-PodTemplate-{context}[`PodTemplate`] |emptyDir |https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#emptydirvolumesource-v1-core[EmptyDirVolumeSource] |EmptyDir to use to populate the volume. -|csi -|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#csivolumesource-v1-core[CSIVolumeSource] -|CSI object to use to populate the volume. +|pvc +|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimvolumesource-v1-core[PersistentVolumeClaimVolumeSource] +|PVC object to use to populate the volume. |==== [id='type-InternalServiceTemplate-{context}'] diff --git a/packaging/install/cluster-operator/040-Crd-kafka.yaml b/packaging/install/cluster-operator/040-Crd-kafka.yaml index 4ec5c826daa..9abbf5a9cd1 100644 --- a/packaging/install/cluster-operator/040-Crd-kafka.yaml +++ b/packaging/install/cluster-operator/040-Crd-kafka.yaml @@ -1489,25 +1489,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. bootstrapService: @@ -2877,25 +2866,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: - type: string - fsType: + claimName: type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for ZooKeeper `Pods`. clientService: @@ -4164,25 +4142,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Entity Operator `Pods`. topicOperatorContainer: @@ -5408,25 +5375,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Cruise Control `Pods`. apiService: @@ -6443,25 +6399,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: - type: string - fsType: + claimName: type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for JmxTrans `Pods`. container: @@ -7268,25 +7213,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Exporter `Pods`. service: diff --git a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml index da0d245c067..6699b7e25d7 100644 --- a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml +++ b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml @@ -1038,25 +1038,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: @@ -1927,25 +1916,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: diff --git a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml index 53fda19f088..cdee9b2ae95 100644 --- a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml +++ b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml @@ -1154,25 +1154,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka MirrorMaker `Pods`. podDisruptionBudget: diff --git a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml index 2fdee7753e2..50d1fb28d76 100644 --- a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml +++ b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml @@ -1018,25 +1018,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Bridge `Pods`. apiService: diff --git a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml index 08fb4a5647d..d231d3b16c1 100644 --- a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml +++ b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml @@ -1183,25 +1183,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: @@ -2072,25 +2061,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: diff --git a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml index d540f037c59..4191c9c49d5 100644 --- a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml +++ b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml @@ -810,25 +810,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. perPodService: From 9dfacaf5a64e5244595f97e302bcf21a439754c2 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Thu, 27 Jun 2024 09:46:41 +0000 Subject: [PATCH 10/62] update docs Signed-off-by: Casper Thygesen --- .../model/kafka/Kafka-with-template.yaml | 43 ++++++++----------- documentation/modules/appendix_crds.adoc | 3 ++ .../cluster-operator/040-Crd-kafka.yaml | 20 +++++++++ .../041-Crd-kafkaconnect.yaml | 6 +++ .../045-Crd-kafkamirrormaker.yaml | 2 + .../cluster-operator/046-Crd-kafkabridge.yaml | 4 ++ .../048-Crd-kafkamirrormaker2.yaml | 6 +++ .../04A-Crd-kafkanodepool.yaml | 4 ++ 8 files changed, 62 insertions(+), 26 deletions(-) diff --git a/api/src/test/resources/io/strimzi/api/kafka/model/kafka/Kafka-with-template.yaml b/api/src/test/resources/io/strimzi/api/kafka/model/kafka/Kafka-with-template.yaml index fbafa8058c7..42849765d2e 100644 --- a/api/src/test/resources/io/strimzi/api/kafka/model/kafka/Kafka-with-template.yaml +++ b/api/src/test/resources/io/strimzi/api/kafka/model/kafka/Kafka-with-template.yaml @@ -51,22 +51,19 @@ spec: name: config-map-name - name: temp emptyDir: {} - - name: example-csi-volume - csi: - driver: csi-driver-name - readOnly: true - volumeAttributes: - secretProviderClass: example-secret-provider-class + - name: example-pvc-volume + persistentVolumeClaim: + claimName: myclaim kafkaContainer: volumeMounts: - name: example-secret - mountPath: /path/to/mount/secret-volume + mountPath: /mnt/secret-volume - name: example-configmap - mountPath: /path/to/mount/cm-volume + mountPath: /mnt/cm-volume - name: temp mountPath: /tmp/logs - - name: example-csi-volume - mountPath: /path/to/mount/csi-volume + - name: example-pvc-volume + mountPath: "/mnt/data" bootstrapService: metadata: labels: @@ -154,23 +151,20 @@ spec: name: config-map-name - name: temp emptyDir: {} - - name: example-csi-volume - csi: - driver: csi-driver-name - readOnly: true - volumeAttributes: - secretProviderClass: example-secret-provider-class + - name: example-pvc-volume + persistentVolumeClaim: + claimName: example-pvc-volume zookeeperContainer: volumeMounts: - name: example-secret - mountPath: /path/to/mount/secret-volume + mountPath: /mnt/secret-volume subPath: subPath1 - name: example-configmap - mountPath: /path/to/mount/cm-volume + mountPath: /mnt/cm-volume - name: temp mountPath: /tmp/logs - - name: example-csi-volume - mountPath: /path/to/mount/csi-volume + - name: example-pvc-volume + mountPath: "/mnt/data" clientService: metadata: labels: @@ -216,10 +210,7 @@ spec: name: config-map-name - name: temp emptyDir: {} - - name: example-csi-volume - csi: - driver: csi-driver-name - readOnly: true - volumeAttributes: - secretProviderClass: example-secret-provider-class + - name: example-pvc-volume + persistentVolumeClaim: + claimName: example-pvc-volume diff --git a/documentation/modules/appendix_crds.adoc b/documentation/modules/appendix_crds.adoc index 693ae4d07a3..36d7a7f5ab5 100644 --- a/documentation/modules/appendix_crds.adoc +++ b/documentation/modules/appendix_crds.adoc @@ -1362,6 +1362,9 @@ Used in: xref:type-ContainerTemplate-{context}[`ContainerTemplate`] |readOnly |boolean | +|recursiveReadOnly +|string +| |subPath |string | diff --git a/packaging/install/cluster-operator/040-Crd-kafka.yaml b/packaging/install/cluster-operator/040-Crd-kafka.yaml index 1c956c2422b..3f714711e94 100644 --- a/packaging/install/cluster-operator/040-Crd-kafka.yaml +++ b/packaging/install/cluster-operator/040-Crd-kafka.yaml @@ -1838,6 +1838,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1937,6 +1939,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -3170,6 +3174,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -4362,6 +4368,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -4461,6 +4469,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -4560,6 +4570,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -5678,6 +5690,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -5777,6 +5791,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -6668,6 +6684,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -7514,6 +7532,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: diff --git a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml index 4186908b26e..1abb8a1fad5 100644 --- a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml +++ b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml @@ -1236,6 +1236,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1335,6 +1337,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -2069,6 +2073,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: diff --git a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml index 4093e5b2d46..95c47756a7e 100644 --- a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml +++ b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml @@ -1330,6 +1330,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: diff --git a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml index c20a0242f88..fbf8f956b3b 100644 --- a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml +++ b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml @@ -1214,6 +1214,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1349,6 +1351,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: diff --git a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml index adec75d5ce6..7cd9d9aa495 100644 --- a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml +++ b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml @@ -1381,6 +1381,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1480,6 +1482,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -2214,6 +2218,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: diff --git a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml index cd577f9a96b..ef07eceb2ac 100644 --- a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml +++ b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml @@ -992,6 +992,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1091,6 +1093,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: From bdfc674723a83824a84a296ba4810998436f1f5c Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Thu, 27 Jun 2024 10:14:50 +0000 Subject: [PATCH 11/62] isForbiddenPath Signed-off-by: Casper Thygesen --- .../operator/cluster/model/TemplateUtils.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index f74bd8f4500..9f4b1a2e82f 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -26,6 +26,12 @@ public class TemplateUtils { */ protected static final String SENSITIVE_PATH = "/tmp"; + /** + * This is a constant that represents an allowed mountable path in the file system. + * It is used to prevent the creation of volumes outside this path. + */ + protected static final String ALLOWED_MOUNT_PATH = "/mnt"; + /** * Extracts custom labels configured through the Strimzi API resource templates. This method deals the null checks * and makes the code using it more easy to read. @@ -73,6 +79,13 @@ public static void addAdditionalVolumeMounts(List volumeMounts, Lis throw new RuntimeException("Sensitive path found in additional volumes"); } + + boolean isForbiddenPath = additionalVolumeMounts.stream().anyMatch(additionalVolume -> !additionalVolume.getMountPath().startsWith(ALLOWED_MOUNT_PATH)); + + if (isForbiddenPath) { + throw new RuntimeException(String.format("Forbidden path found in additional volumes. Should start with %s", ALLOWED_MOUNT_PATH)); + } + volumeMounts.addAll(additionalVolumeMounts); } From 4a367f362353fccc44abcbcd478151a90f8eba09 Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Mon, 1 Jul 2024 21:46:27 +0200 Subject: [PATCH 12/62] Fixed test Signed-off-by: KastTrifork --- .../model/KafkaMirrorMaker2ClusterTest.java | 50 +++++++------------ 1 file changed, 19 insertions(+), 31 deletions(-) diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java index 5879244b6b8..7899594c5b5 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java @@ -15,6 +15,8 @@ import io.fabric8.kubernetes.api.model.HostAliasBuilder; import io.fabric8.kubernetes.api.model.IntOrString; import io.fabric8.kubernetes.api.model.LocalObjectReference; +import io.fabric8.kubernetes.api.model.PersistentVolumeClaimVolumeSource; +import io.fabric8.kubernetes.api.model.PersistentVolumeClaimVolumeSourceBuilder; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.PodSecurityContextBuilder; import io.fabric8.kubernetes.api.model.Quantity; @@ -73,17 +75,6 @@ import io.strimzi.test.TestUtils; import io.strimzi.test.annotations.ParallelSuite; import io.strimzi.test.annotations.ParallelTest; -import src.main.java.io.strimzi.operator.cluster.model.AbstractModel; -import src.main.java.io.strimzi.operator.cluster.model.ImagePullPolicy; -import src.main.java.io.strimzi.operator.cluster.model.JvmOptionUtils; -import src.main.java.io.strimzi.operator.cluster.model.KafkaConnectCluster; -import src.main.java.io.strimzi.operator.cluster.model.KafkaMirrorMaker2Cluster; -import src.main.java.io.strimzi.operator.cluster.model.KafkaVersion; -import src.main.java.io.strimzi.operator.cluster.model.MetricsAndLogging; -import src.main.java.io.strimzi.operator.cluster.model.PodRevision; -import src.main.java.io.strimzi.operator.cluster.model.PodSetUtils; -import src.main.java.io.strimzi.operator.cluster.model.SharedEnvironmentProvider; -import src.main.java.io.strimzi.operator.cluster.model.VolumeUtils; import java.io.IOException; import java.util.ArrayList; @@ -107,7 +98,6 @@ public class KafkaMirrorMaker2ClusterTest { private static final KafkaVersion.Lookup VERSIONS = KafkaVersionTestUtils.getKafkaVersionLookup(); private static final SharedEnvironmentProvider SHARED_ENV_PROVIDER = new MockSharedEnvironmentProvider(); - private final String namespace = "test"; private final String clusterName = "foo"; private final int replicas = 2; @@ -502,7 +492,7 @@ public void testPodSetWithScramSha512Auth() { .withSecretName("user1-secret") .withPassword("password") .endPasswordSecret() - .endKafkaClientAuthenticationScramSha512() + .endKafkaClientAuthenticationScramSha512() .build(); KafkaMirrorMaker2 resource = new KafkaMirrorMaker2Builder(this.resource) .editSpec() @@ -932,33 +922,32 @@ public void testTemplate() { .withHostnames("my-host-3") .withIp("192.168.1.87") .build(); - + ConfigMapVolumeSource configMap = new ConfigMapVolumeSourceBuilder() .withName("configMap1") .build(); - + PersistentVolumeClaimVolumeSource pvc = new PersistentVolumeClaimVolumeSourceBuilder() .withClaimName("pvc-name") .withReadOnly(true) - .withNewNodePublishSecretRef("example-secret-provider-class") .build(); - + AdditionalVolume additionalVolumeConfigMap = new AdditionalVolumeBuilder() .withName("config-map-volume-name") .withConfigMap(configMap) .build(); - + AdditionalVolume additionalVolumePvc = new AdditionalVolumeBuilder() .withName("pvc-volume-name") - .withPersistentVolumeClaim(pvc) + .withPvc(pvc) .build(); - + VolumeMount additionalVolumeMountConfigMap = new VolumeMountBuilder() .withName("config-map-volume-name") - .withMountPath("/abc") + .withMountPath("/mnt/myconfigmap") .withSubPath("def") .build(); - + VolumeMount additionalVolumeMountPvc = new VolumeMountBuilder() .withName("pvc-volume-name") .withMountPath("/mnt/mypvc") @@ -1037,12 +1026,11 @@ public void testTemplate() { assertThat(pod.getSpec().getEnableServiceLinks(), is(false)); assertThat(getVolume(pod, "strimzi-tmp").getEmptyDir().getSizeLimit(), is(new Quantity("10Mi"))); assertThat(getVolume(pod, additionalVolumeMountConfigMap.getName()).getConfigMap(), is(configMap)); - assertThat(getVolume(pod, additionalVolumeMountPvc.getName()).getPvc(), is(pvc)); + assertThat(getVolume(pod, additionalVolumeMountPvc.getName()).getPersistentVolumeClaim(), is(pvc)); assertThat(getVolumeMount(pod.getSpec().getContainers().get(0), additionalVolumeMountConfigMap.getName()), is(additionalVolumeMountConfigMap)); assertThat(getVolumeMount(pod.getSpec().getInitContainers().get(0), additionalVolumeMountPvc.getName()), is(additionalVolumeMountPvc)); }); - // Check Service Service svc = kmm2.generateService(); assertThat(svc.getMetadata().getLabels().entrySet().containsAll(svcLabels.entrySet()), is(true)); @@ -1065,11 +1053,11 @@ public void testTemplate() { assertThat(sa.getMetadata().getLabels().entrySet().containsAll(saLabels.entrySet()), is(true)); assertThat(sa.getMetadata().getAnnotations().entrySet().containsAll(saAnots.entrySet()), is(true)); } - + private static Volume getVolume(Pod pod, String volumeName) { return pod.getSpec().getVolumes().stream().filter(volume -> volumeName.equals(volume.getName())).iterator().next(); } - + private static VolumeMount getVolumeMount(Container container, String volumeName) { return container.getVolumeMounts().stream().filter(volumeMount -> volumeName.equals(volumeMount.getName())).iterator().next(); } @@ -1679,7 +1667,7 @@ public void testPodSetWithOAuthWithAccessToken() { .withSecretName("my-token-secret") .withKey("my-token-key") .endAccessToken() - .build()) + .build()) .build(); KafkaMirrorMaker2 resource = new KafkaMirrorMaker2Builder(this.resource) .editSpec() @@ -1755,7 +1743,7 @@ public void testPodSetWithOAuthWithClientSecret() { .build(); KafkaMirrorMaker2 resource = new KafkaMirrorMaker2Builder(this.resource) .editSpec() - .withClusters(targetClusterWithOAuthWithClientSecret) + .withClusters(targetClusterWithOAuthWithClientSecret) .endSpec() .build(); @@ -1825,7 +1813,7 @@ public void testPodSetWithOAuthWithMissingClientSecret() { .build(); KafkaMirrorMaker2 resource = new KafkaMirrorMaker2Builder(this.resource) .editSpec() - .withClusters(targetClusterWithOAuthWithMissingClientSecret) + .withClusters(targetClusterWithOAuthWithMissingClientSecret) .endSpec() .build(); @@ -1848,7 +1836,7 @@ public void testPodSetWithOAuthWithMissingUri() { .build(); KafkaMirrorMaker2 resource = new KafkaMirrorMaker2Builder(this.resource) .editSpec() - .withClusters(targetClusterWithOAuthWithMissingUri) + .withClusters(targetClusterWithOAuthWithMissingUri) .endSpec() .build(); @@ -1888,7 +1876,7 @@ public void testPodSetWithOAuthWithTls() { .build(); KafkaMirrorMaker2 resource = new KafkaMirrorMaker2Builder(this.resource) .editSpec() - .withClusters(targetClusterWithOAuthWithTls) + .withClusters(targetClusterWithOAuthWithTls) .endSpec() .build(); From f375c3c7c9e0e3bc5e973f559ff537dd97e1f2ab Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Tue, 2 Jul 2024 08:04:49 +0000 Subject: [PATCH 13/62] make crd_install Signed-off-by: Casper Thygesen --- .../model/kafka/Kafka-with-template.yaml | 2 - .../crds/040-Crd-kafka.yaml | 122 ++++++------------ .../crds/041-Crd-kafkaconnect.yaml | 40 ++---- .../crds/045-Crd-kafkamirrormaker.yaml | 19 +-- .../crds/046-Crd-kafkabridge.yaml | 21 +-- .../crds/048-Crd-kafkamirrormaker2.yaml | 40 ++---- .../crds/04A-Crd-kafkanodepool.yaml | 21 +-- 7 files changed, 81 insertions(+), 184 deletions(-) diff --git a/api/src/test/resources/io/strimzi/api/kafka/model/kafka/Kafka-with-template.yaml b/api/src/test/resources/io/strimzi/api/kafka/model/kafka/Kafka-with-template.yaml index 42849765d2e..49381007b9c 100644 --- a/api/src/test/resources/io/strimzi/api/kafka/model/kafka/Kafka-with-template.yaml +++ b/api/src/test/resources/io/strimzi/api/kafka/model/kafka/Kafka-with-template.yaml @@ -161,8 +161,6 @@ spec: subPath: subPath1 - name: example-configmap mountPath: /mnt/cm-volume - - name: temp - mountPath: /tmp/logs - name: example-pvc-volume mountPath: "/mnt/data" clientService: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml index ceead902be7..94a958a0a1f 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml @@ -1522,25 +1522,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. bootstrapService: @@ -1850,6 +1839,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1949,6 +1940,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -2973,25 +2966,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: - type: string - fsType: + claimName: type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for ZooKeeper `Pods`. clientService: @@ -3193,6 +3175,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -4282,25 +4266,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Entity Operator `Pods`. topicOperatorContainer: @@ -4396,6 +4369,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -4495,6 +4470,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -4594,6 +4571,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -5554,25 +5533,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: - type: string - fsType: + claimName: type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Cruise Control `Pods`. apiService: @@ -5723,6 +5691,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -5822,6 +5792,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -6610,25 +6582,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for JmxTrans `Pods`. container: @@ -6724,6 +6685,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -7449,25 +7412,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: - type: string - fsType: + claimName: type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Exporter `Pods`. service: @@ -7581,6 +7533,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml index 60a5c22f012..a7cfcffd945 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml @@ -1068,25 +1068,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: @@ -1248,6 +1237,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1347,6 +1338,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1978,25 +1971,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: @@ -2092,6 +2074,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml index 4467f5f4299..a9ed8fe58d1 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml @@ -1206,25 +1206,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka MirrorMaker `Pods`. podDisruptionBudget: @@ -1342,6 +1331,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml index 2f3afbe13ab..2438c9800bd 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml @@ -1057,25 +1057,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Bridge `Pods`. apiService: @@ -1226,6 +1215,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1361,6 +1352,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml index a808bdc776f..80c6ca68520 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml @@ -1213,25 +1213,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: @@ -1393,6 +1382,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1492,6 +1483,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -2123,25 +2116,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: @@ -2237,6 +2219,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml index 9be35ad8a32..ef07eceb2ac 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml @@ -817,25 +817,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - csi: + pvc: type: object properties: - driver: + claimName: type: string - fsType: - type: string - nodePublishSecretRef: - type: object - properties: - name: - type: string readOnly: type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - description: CSI object to use to populate the volume. + description: PVC object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. perPodService: @@ -1003,6 +992,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1102,6 +1093,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: From bcc20b80f757aebc035f01e62471678e1c7f6861 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Tue, 2 Jul 2024 08:28:15 +0000 Subject: [PATCH 14/62] revert helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml as we are not doing a release Signed-off-by: Casper Thygesen --- .../crds/040-Crd-kafka.yaml | 737 +++++++++--------- 1 file changed, 369 insertions(+), 368 deletions(-) diff --git a/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml b/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml index 1c1218f37d6..fb9dc22b708 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml @@ -5,6 +5,7 @@ metadata: labels: app: strimzi strimzi.io/crd-install: "true" + component: kafkas.kafka.strimzi.io-crd spec: group: kafka.strimzi.io names: @@ -13,216 +14,122 @@ spec: singular: kafka plural: kafkas shortNames: - - k + - k categories: - - strimzi + - strimzi scope: Namespaced conversion: strategy: None versions: - - name: v1beta2 - served: true - storage: true - subresources: - status: {} - additionalPrinterColumns: - - name: Desired Kafka replicas - description: The desired number of Kafka replicas in the cluster - jsonPath: .spec.kafka.replicas - type: integer - - name: Desired ZK replicas - description: The desired number of ZooKeeper replicas in the cluster - jsonPath: .spec.zookeeper.replicas - type: integer - - name: Ready - description: The state of the custom resource - jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" - type: string - - name: Metadata State - description: The state of the cluster metadata - jsonPath: .status.kafkaMetadataState - type: string - - name: Warnings - description: Warnings related to the custom resource - jsonPath: ".status.conditions[?(@.type==\"Warning\")].status" - type: string - schema: - openAPIV3Schema: - type: object - properties: - apiVersion: - type: string - 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" - kind: - type: string - 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" - metadata: - type: object - spec: - type: object - properties: - kafka: - type: object - properties: - version: - type: string - description: The Kafka broker version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. - metadataVersion: - type: string - description: "The KRaft metadata version used by the Kafka cluster. This property is ignored when running in ZooKeeper mode. If the property is not set, it defaults to the metadata version that corresponds to the `version` property." - replicas: - type: integer - minimum: 1 - description: The number of pods in the cluster. This property is required when node pools are not used. - image: - type: string - description: "The container image used for Kafka pods. If the property is not set, the default Kafka image version is determined based on the `version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration. Changing the Kafka image version does not automatically update the image versions for other components, such as Kafka Exporter. " - listeners: - type: array - minItems: 1 - items: - type: object - properties: - name: - type: string - pattern: "^[a-z0-9]{1,11}$" - description: Name of the listener. The name will be used to identify the listener and the related Kubernetes objects. The name has to be unique within given a Kafka cluster. The name can consist of lowercase characters and numbers and be up to 11 characters long. - port: - type: integer - minimum: 9092 - description: "Port number used by the listener inside Kafka. The port number has to be unique within a given Kafka cluster. Allowed port numbers are 9092 and higher with the exception of ports 9404 and 9999, which are already used for Prometheus and JMX. Depending on the listener type, the port number might not be the same as the port number that connects Kafka clients." - type: - type: string - enum: - - internal - - route - - loadbalancer - - nodeport - - ingress - - cluster-ip - description: "Type of the listener. The supported types are as follows: \n\n* `internal` type exposes Kafka internally only within the Kubernetes cluster.\n* `route` type uses OpenShift Routes to expose Kafka.\n* `loadbalancer` type uses LoadBalancer type services to expose Kafka.\n* `nodeport` type uses NodePort type services to expose Kafka.\n* `ingress` type uses Kubernetes Nginx Ingress to expose Kafka with TLS passthrough.\n* `cluster-ip` type uses a per-broker `ClusterIP` service.\n" - tls: - type: boolean - description: Enables TLS encryption on the listener. This is a required property. - authentication: - type: object - properties: - accessTokenIsJwt: - type: boolean - description: Configure whether the access token is treated as JWT. This must be set to `false` if the authorization server returns opaque tokens. Defaults to `true`. - checkAccessTokenType: - type: boolean - description: Configure whether the access token type check is performed or not. This should be set to `false` if the authorization server does not include 'typ' claim in JWT token. Defaults to `true`. - checkAudience: - type: boolean - description: "Enable or disable audience checking. Audience checks identify the recipients of tokens. If audience checking is enabled, the OAuth Client ID also has to be configured using the `clientId` property. The Kafka broker will reject tokens that do not have its `clientId` in their `aud` (audience) claim.Default value is `false`." - checkIssuer: - type: boolean - description: Enable or disable issuer checking. By default issuer is checked using the value configured by `validIssuerUri`. Default value is `true`. - clientAudience: - type: string - description: The audience to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. - clientId: - type: string - description: OAuth Client ID which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. - clientScope: - type: string - description: The scope to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. - clientSecret: - type: object - properties: - key: - type: string - description: The key under which the secret value is stored in the Kubernetes Secret. - secretName: - type: string - description: The name of the Kubernetes Secret containing the secret value. - required: - - key - - secretName - description: Link to Kubernetes Secret containing the OAuth client secret which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. - connectTimeoutSeconds: - type: integer - description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." - customClaimCheck: - type: string - description: JsonPath filter query to be applied to the JWT token or to the response of the introspection endpoint for additional token validation. Not set by default. - disableTlsHostnameVerification: - type: boolean - description: Enable or disable TLS hostname verification. Default value is `false`. - enableECDSA: - type: boolean - description: Enable or disable ECDSA support by installing BouncyCastle crypto provider. ECDSA support is always enabled. The BouncyCastle libraries are no longer packaged with Strimzi. Value is ignored. - enableMetrics: - type: boolean - description: Enable or disable OAuth metrics. Default value is `false`. - enableOauthBearer: - type: boolean - description: Enable or disable OAuth authentication over SASL_OAUTHBEARER. Default value is `true`. - enablePlain: - type: boolean - description: Enable or disable OAuth authentication over SASL_PLAIN. There is no re-authentication support when this mechanism is used. Default value is `false`. - failFast: - type: boolean - description: Enable or disable termination of Kafka broker processes due to potentially recoverable runtime errors during startup. Default value is `true`. - fallbackUserNameClaim: - type: string - description: The fallback username claim to be used for the user id if the claim specified by `userNameClaim` is not present. This is useful when `client_credentials` authentication only results in the client id being provided in another claim. It only takes effect if `userNameClaim` is set. - fallbackUserNamePrefix: - type: string - description: "The prefix to use with the value of `fallbackUserNameClaim` to construct the user id. This only takes effect if `fallbackUserNameClaim` is true, and the value is present for the claim. Mapping usernames and client ids into the same user id space is useful in preventing name collisions." - groupsClaim: - type: string - description: JsonPath query used to extract groups for the user during authentication. Extracted groups can be used by a custom authorizer. By default no groups are extracted. - groupsClaimDelimiter: - type: string - description: "A delimiter used to parse groups when they are extracted as a single String value rather than a JSON array. Default value is ',' (comma)." - httpRetries: - type: integer - description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." - httpRetryPauseMs: - type: integer - description: "The pause to take before retrying a failed HTTP request. If not set, the default is to not pause at all but to immediately repeat a request." - includeAcceptHeader: - type: boolean - description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. - introspectionEndpointUri: - type: string - description: URI of the token introspection endpoint which can be used to validate opaque non-JWT tokens. - jwksEndpointUri: - type: string - description: "URI of the JWKS certificate endpoint, which can be used for local JWT validation." - jwksExpirySeconds: - type: integer - minimum: 1 - description: Configures how often are the JWKS certificates considered valid. The expiry interval has to be at least 60 seconds longer then the refresh interval specified in `jwksRefreshSeconds`. Defaults to 360 seconds. - jwksIgnoreKeyUse: - type: boolean - description: Flag to ignore the 'use' attribute of `key` declarations in a JWKS endpoint response. Default value is `false`. - jwksMinRefreshPauseSeconds: - type: integer - minimum: 0 - description: "The minimum pause between two consecutive refreshes. When an unknown signing key is encountered the refresh is scheduled immediately, but will always wait for this minimum pause. Defaults to 1 second." - jwksRefreshSeconds: - type: integer - minimum: 1 - description: Configures how often are the JWKS certificates refreshed. The refresh interval has to be at least 60 seconds shorter then the expiry interval specified in `jwksExpirySeconds`. Defaults to 300 seconds. - listenerConfig: - x-kubernetes-preserve-unknown-fields: true - type: object - description: Configuration to be used for a specific listener. All values are prefixed with listener.name.__. - maxSecondsWithoutReauthentication: - type: integer - description: "Maximum number of seconds the authenticated session remains valid without re-authentication. This enables Apache Kafka re-authentication feature, and causes sessions to expire when the access token expires. If the access token expires before max time or if max time is reached, the client has to re-authenticate, otherwise the server will drop the connection. Not set by default - the authenticated session does not expire when the access token expires. This option only applies to SASL_OAUTHBEARER authentication mechanism (when `enableOauthBearer` is `true`)." - readTimeoutSeconds: - type: integer - description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." - sasl: - type: boolean - description: Enable or disable SASL on this listener. - secrets: - type: array - items: + - name: v1beta2 + served: true + storage: true + subresources: + status: {} + additionalPrinterColumns: + - name: Desired Kafka replicas + description: The desired number of Kafka replicas in the cluster + jsonPath: .spec.kafka.replicas + type: integer + - name: Desired ZK replicas + description: The desired number of ZooKeeper replicas in the cluster + jsonPath: .spec.zookeeper.replicas + type: integer + - name: Ready + description: The state of the custom resource + jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" + type: string + - name: Metadata State + description: The state of the cluster metadata + jsonPath: .status.kafkaMetadataState + type: string + - name: Warnings + description: Warnings related to the custom resource + jsonPath: ".status.conditions[?(@.type==\"Warning\")].status" + type: string + schema: + openAPIV3Schema: + type: object + properties: + apiVersion: + type: string + 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" + kind: + type: string + 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" + metadata: + type: object + spec: + type: object + properties: + kafka: + type: object + properties: + version: + type: string + description: The Kafka broker version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. + metadataVersion: + type: string + description: "The KRaft metadata version used by the Kafka cluster. This property is ignored when running in ZooKeeper mode. If the property is not set, it defaults to the metadata version that corresponds to the `version` property." + replicas: + type: integer + minimum: 1 + description: The number of pods in the cluster. This property is required when node pools are not used. + image: + type: string + description: "The container image used for Kafka pods. If the property is not set, the default Kafka image version is determined based on the `version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration. Changing the Kafka image version does not automatically update the image versions for other components, such as Kafka Exporter. " + listeners: + type: array + minItems: 1 + items: + type: object + properties: + name: + type: string + pattern: "^[a-z0-9]{1,11}$" + description: Name of the listener. The name will be used to identify the listener and the related Kubernetes objects. The name has to be unique within given a Kafka cluster. The name can consist of lowercase characters and numbers and be up to 11 characters long. + port: + type: integer + minimum: 9092 + description: "Port number used by the listener inside Kafka. The port number has to be unique within a given Kafka cluster. Allowed port numbers are 9092 and higher with the exception of ports 9404 and 9999, which are already used for Prometheus and JMX. Depending on the listener type, the port number might not be the same as the port number that connects Kafka clients." + type: + type: string + enum: + - internal + - route + - loadbalancer + - nodeport + - ingress + - cluster-ip + description: "Type of the listener. The supported types are as follows: \n\n* `internal` type exposes Kafka internally only within the Kubernetes cluster.\n* `route` type uses OpenShift Routes to expose Kafka.\n* `loadbalancer` type uses LoadBalancer type services to expose Kafka.\n* `nodeport` type uses NodePort type services to expose Kafka.\n* `ingress` type uses Kubernetes Nginx Ingress to expose Kafka with TLS passthrough.\n* `cluster-ip` type uses a per-broker `ClusterIP` service.\n" + tls: + type: boolean + description: Enables TLS encryption on the listener. This is a required property. + authentication: + type: object + properties: + accessTokenIsJwt: + type: boolean + description: Configure whether the access token is treated as JWT. This must be set to `false` if the authorization server returns opaque tokens. Defaults to `true`. + checkAccessTokenType: + type: boolean + description: Configure whether the access token type check is performed or not. This should be set to `false` if the authorization server does not include 'typ' claim in JWT token. Defaults to `true`. + checkAudience: + type: boolean + description: "Enable or disable audience checking. Audience checks identify the recipients of tokens. If audience checking is enabled, the OAuth Client ID also has to be configured using the `clientId` property. The Kafka broker will reject tokens that do not have its `clientId` in their `aud` (audience) claim.Default value is `false`." + checkIssuer: + type: boolean + description: Enable or disable issuer checking. By default issuer is checked using the value configured by `validIssuerUri`. Default value is `true`. + clientAudience: + type: string + description: The audience to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. + clientId: + type: string + description: OAuth Client ID which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. + clientScope: + type: string + description: The scope to use when making requests to the authorization server's token endpoint. Used for inter-broker authentication and for configuring OAuth 2.0 over PLAIN using the `clientId` and `secret` method. + clientSecret: type: object properties: key: @@ -232,14 +139,153 @@ spec: type: string description: The name of the Kubernetes Secret containing the secret value. required: - - key - - secretName - description: Secrets to be mounted to /opt/kafka/custom-authn-secrets/custom-listener-_-_/__. - tlsTrustedCertificates: - type: array - items: + - key + - secretName + description: Link to Kubernetes Secret containing the OAuth client secret which the Kafka broker can use to authenticate against the authorization server and use the introspect endpoint URI. + connectTimeoutSeconds: + type: integer + description: "The connect timeout in seconds when connecting to authorization server. If not set, the effective connect timeout is 60 seconds." + customClaimCheck: + type: string + description: JsonPath filter query to be applied to the JWT token or to the response of the introspection endpoint for additional token validation. Not set by default. + disableTlsHostnameVerification: + type: boolean + description: Enable or disable TLS hostname verification. Default value is `false`. + enableECDSA: + type: boolean + description: Enable or disable ECDSA support by installing BouncyCastle crypto provider. ECDSA support is always enabled. The BouncyCastle libraries are no longer packaged with Strimzi. Value is ignored. + enableMetrics: + type: boolean + description: Enable or disable OAuth metrics. Default value is `false`. + enableOauthBearer: + type: boolean + description: Enable or disable OAuth authentication over SASL_OAUTHBEARER. Default value is `true`. + enablePlain: + type: boolean + description: Enable or disable OAuth authentication over SASL_PLAIN. There is no re-authentication support when this mechanism is used. Default value is `false`. + failFast: + type: boolean + description: Enable or disable termination of Kafka broker processes due to potentially recoverable runtime errors during startup. Default value is `true`. + fallbackUserNameClaim: + type: string + description: The fallback username claim to be used for the user id if the claim specified by `userNameClaim` is not present. This is useful when `client_credentials` authentication only results in the client id being provided in another claim. It only takes effect if `userNameClaim` is set. + fallbackUserNamePrefix: + type: string + description: "The prefix to use with the value of `fallbackUserNameClaim` to construct the user id. This only takes effect if `fallbackUserNameClaim` is true, and the value is present for the claim. Mapping usernames and client ids into the same user id space is useful in preventing name collisions." + groupsClaim: + type: string + description: JsonPath query used to extract groups for the user during authentication. Extracted groups can be used by a custom authorizer. By default no groups are extracted. + groupsClaimDelimiter: + type: string + description: "A delimiter used to parse groups when they are extracted as a single String value rather than a JSON array. Default value is ',' (comma)." + httpRetries: + type: integer + description: "The maximum number of retries to attempt if an initial HTTP request fails. If not set, the default is to not attempt any retries." + httpRetryPauseMs: + type: integer + description: "The pause to take before retrying a failed HTTP request. If not set, the default is to not pause at all but to immediately repeat a request." + includeAcceptHeader: + type: boolean + description: Whether the Accept header should be set in requests to the authorization servers. The default value is `true`. + introspectionEndpointUri: + type: string + description: URI of the token introspection endpoint which can be used to validate opaque non-JWT tokens. + jwksEndpointUri: + type: string + description: "URI of the JWKS certificate endpoint, which can be used for local JWT validation." + jwksExpirySeconds: + type: integer + minimum: 1 + description: Configures how often are the JWKS certificates considered valid. The expiry interval has to be at least 60 seconds longer then the refresh interval specified in `jwksRefreshSeconds`. Defaults to 360 seconds. + jwksIgnoreKeyUse: + type: boolean + description: Flag to ignore the 'use' attribute of `key` declarations in a JWKS endpoint response. Default value is `false`. + jwksMinRefreshPauseSeconds: + type: integer + minimum: 0 + description: "The minimum pause between two consecutive refreshes. When an unknown signing key is encountered the refresh is scheduled immediately, but will always wait for this minimum pause. Defaults to 1 second." + jwksRefreshSeconds: + type: integer + minimum: 1 + description: Configures how often are the JWKS certificates refreshed. The refresh interval has to be at least 60 seconds shorter then the expiry interval specified in `jwksExpirySeconds`. Defaults to 300 seconds. + listenerConfig: + x-kubernetes-preserve-unknown-fields: true + type: object + description: Configuration to be used for a specific listener. All values are prefixed with listener.name.__. + maxSecondsWithoutReauthentication: + type: integer + description: "Maximum number of seconds the authenticated session remains valid without re-authentication. This enables Apache Kafka re-authentication feature, and causes sessions to expire when the access token expires. If the access token expires before max time or if max time is reached, the client has to re-authenticate, otherwise the server will drop the connection. Not set by default - the authenticated session does not expire when the access token expires. This option only applies to SASL_OAUTHBEARER authentication mechanism (when `enableOauthBearer` is `true`)." + readTimeoutSeconds: + type: integer + description: "The read timeout in seconds when connecting to authorization server. If not set, the effective read timeout is 60 seconds." + sasl: + type: boolean + description: Enable or disable SASL on this listener. + secrets: + type: array + items: + type: object + properties: + key: + type: string + description: The key under which the secret value is stored in the Kubernetes Secret. + secretName: + type: string + description: The name of the Kubernetes Secret containing the secret value. + required: + - key + - secretName + description: Secrets to be mounted to /opt/kafka/custom-authn-secrets/custom-listener-_-_/__. + tlsTrustedCertificates: + type: array + items: + type: object + properties: + secretName: + type: string + description: The name of the Secret containing the certificate. + certificate: + type: string + description: The name of the file certificate in the Secret. + required: + - secretName + - certificate + description: Trusted certificates for TLS connection to the OAuth server. + tokenEndpointUri: + type: string + description: "URI of the Token Endpoint to use with SASL_PLAIN mechanism when the client authenticates with `clientId` and a `secret`. If set, the client can authenticate over SASL_PLAIN by either setting `username` to `clientId`, and setting `password` to client `secret`, or by setting `username` to account username, and `password` to access token prefixed with `$accessToken:`. If this option is not set, the `password` is always interpreted as an access token (without a prefix), and `username` as the account username (a so called 'no-client-credentials' mode)." + type: + type: string + enum: + - tls + - scram-sha-512 + - oauth + - custom + description: Authentication type. `oauth` type uses SASL OAUTHBEARER Authentication. `scram-sha-512` type uses SASL SCRAM-SHA-512 Authentication. `tls` type uses TLS Client Authentication. `tls` type is supported only on TLS listeners.`custom` type allows for any authentication type to be used. + userInfoEndpointUri: + type: string + description: 'URI of the User Info Endpoint to use as a fallback to obtaining the user id when the Introspection Endpoint does not return information that can be used for the user id. ' + userNameClaim: + type: string + description: "Name of the claim from the JWT authentication token, Introspection Endpoint response or User Info Endpoint response which will be used to extract the user id. Defaults to `sub`." + validIssuerUri: + type: string + description: URI of the token issuer used for authentication. + validTokenType: + type: string + description: "Valid value for the `token_type` attribute returned by the Introspection Endpoint. No default value, and not checked by default." + required: + - type + description: Authentication configuration for this listener. + configuration: + type: object + properties: + brokerCertChainAndKey: type: object properties: + key: + type: string + description: The name of the private key in the Secret. secretName: type: string description: The name of the Secret containing the certificate. @@ -247,122 +293,38 @@ spec: type: string description: The name of the file certificate in the Secret. required: - - secretName - - certificate - description: Trusted certificates for TLS connection to the OAuth server. - tokenEndpointUri: - type: string - description: "URI of the Token Endpoint to use with SASL_PLAIN mechanism when the client authenticates with `clientId` and a `secret`. If set, the client can authenticate over SASL_PLAIN by either setting `username` to `clientId`, and setting `password` to client `secret`, or by setting `username` to account username, and `password` to access token prefixed with `$accessToken:`. If this option is not set, the `password` is always interpreted as an access token (without a prefix), and `username` as the account username (a so called 'no-client-credentials' mode)." - type: - type: string - enum: - - tls - - scram-sha-512 - - oauth - - custom - description: Authentication type. `oauth` type uses SASL OAUTHBEARER Authentication. `scram-sha-512` type uses SASL SCRAM-SHA-512 Authentication. `tls` type uses TLS Client Authentication. `tls` type is supported only on TLS listeners.`custom` type allows for any authentication type to be used. - userInfoEndpointUri: - type: string - description: 'URI of the User Info Endpoint to use as a fallback to obtaining the user id when the Introspection Endpoint does not return information that can be used for the user id. ' - userNameClaim: - type: string - description: "Name of the claim from the JWT authentication token, Introspection Endpoint response or User Info Endpoint response which will be used to extract the user id. Defaults to `sub`." - validIssuerUri: - type: string - description: URI of the token issuer used for authentication. - validTokenType: - type: string - description: "Valid value for the `token_type` attribute returned by the Introspection Endpoint. No default value, and not checked by default." - required: - - type - description: Authentication configuration for this listener. - configuration: - type: object - properties: - brokerCertChainAndKey: - type: object - properties: - key: - type: string - description: The name of the private key in the Secret. - secretName: - type: string - description: The name of the Secret containing the certificate. - certificate: - type: string - description: The name of the file certificate in the Secret. - required: - - key - - secretName - - certificate - description: Reference to the `Secret` which holds the certificate and private key pair which will be used for this listener. The certificate can optionally contain the whole chain. This field can be used only with listeners with enabled TLS encryption. - class: - type: string - description: "Configures a specific class for `Ingress` and `LoadBalancer` that defines which controller will be used. This field can only be used with `ingress` and `loadbalancer` type listeners. If not specified, the default controller is used. For an `ingress` listener, set the `ingressClassName` property in the `Ingress` resources. For a `loadbalancer` listener, set the `loadBalancerClass` property in the `Service` resources." - externalTrafficPolicy: - type: string - enum: - - Local - - Cluster - description: "Specifies whether the service routes external traffic to node-local or cluster-wide endpoints. `Cluster` may cause a second hop to another node and obscures the client source IP. `Local` avoids a second hop for LoadBalancer and Nodeport type services and preserves the client source IP (when supported by the infrastructure). If unspecified, Kubernetes will use `Cluster` as the default.This field can be used only with `loadbalancer` or `nodeport` type listener." - loadBalancerSourceRanges: - type: array - items: + - key + - secretName + - certificate + description: Reference to the `Secret` which holds the certificate and private key pair which will be used for this listener. The certificate can optionally contain the whole chain. This field can be used only with listeners with enabled TLS encryption. + class: type: string - description: "A list of CIDR ranges (for example `10.0.0.0/8` or `130.211.204.1/32`) from which clients can connect to load balancer type listeners. If supported by the platform, traffic through the loadbalancer is restricted to the specified CIDR ranges. This field is applicable only for loadbalancer type services and is ignored if the cloud provider does not support the feature. This field can be used only with `loadbalancer` type listener." - bootstrap: - type: object - properties: - alternativeNames: - type: array - items: - type: string - description: Additional alternative names for the bootstrap service. The alternative names will be added to the list of subject alternative names of the TLS certificates. - host: - type: string - description: The bootstrap host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. - nodePort: - type: integer - description: Node port for the bootstrap service. This field can be used only with `nodeport` type listener. - loadBalancerIP: + description: "Configures a specific class for `Ingress` and `LoadBalancer` that defines which controller will be used. This field can only be used with `ingress` and `loadbalancer` type listeners. If not specified, the default controller is used. For an `ingress` listener, set the `ingressClassName` property in the `Ingress` resources. For a `loadbalancer` listener, set the `loadBalancerClass` property in the `Service` resources." + externalTrafficPolicy: + type: string + enum: + - Local + - Cluster + description: "Specifies whether the service routes external traffic to node-local or cluster-wide endpoints. `Cluster` may cause a second hop to another node and obscures the client source IP. `Local` avoids a second hop for LoadBalancer and Nodeport type services and preserves the client source IP (when supported by the infrastructure). If unspecified, Kubernetes will use `Cluster` as the default.This field can be used only with `loadbalancer` or `nodeport` type listener." + loadBalancerSourceRanges: + type: array + items: type: string - description: The loadbalancer is requested with the IP address specified in this field. This feature depends on whether the underlying cloud provider supports specifying the `loadBalancerIP` when a load balancer is created. This field is ignored if the cloud provider does not support the feature.This field can be used only with `loadbalancer` type listener. - annotations: - additionalProperties: - type: string - type: object - description: "Annotations that will be added to the `Ingress`, `Route`, or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." - labels: - additionalProperties: - type: string - type: object - description: "Labels that will be added to the `Ingress`, `Route`, or `Service` resource. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." - externalIPs: - type: array - items: - type: string - description: External IPs associated to the nodeport service. These IPs are used by clients external to the Kubernetes cluster to access the Kafka brokers. This field is helpful when `nodeport` without `externalIP` is not sufficient. For example on bare-metal Kubernetes clusters that do not support Loadbalancer service types. This field can only be used with `nodeport` type listener. - description: Bootstrap configuration. - brokers: - type: array - items: + description: "A list of CIDR ranges (for example `10.0.0.0/8` or `130.211.204.1/32`) from which clients can connect to load balancer type listeners. If supported by the platform, traffic through the loadbalancer is restricted to the specified CIDR ranges. This field is applicable only for loadbalancer type services and is ignored if the cloud provider does not support the feature. This field can be used only with `loadbalancer` type listener." + bootstrap: type: object properties: - broker: - type: integer - description: ID of the kafka broker (broker identifier). Broker IDs start from 0 and correspond to the number of broker replicas. - advertisedHost: - type: string - description: The host name used in the brokers' `advertised.listeners`. - advertisedPort: - type: integer - description: The port number used in the brokers' `advertised.listeners`. + alternativeNames: + type: array + items: + type: string + description: Additional alternative names for the bootstrap service. The alternative names will be added to the list of subject alternative names of the TLS certificates. host: type: string - description: The broker host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. + description: The bootstrap host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. nodePort: type: integer - description: Node port for the per-broker service. This field can be used only with `nodeport` type listener. + description: Node port for the bootstrap service. This field can be used only with `nodeport` type listener. loadBalancerIP: type: string description: The loadbalancer is requested with the IP address specified in this field. This feature depends on whether the underlying cloud provider supports specifying the `loadBalancerIP` when a load balancer is created. This field is ignored if the cloud provider does not support the feature.This field can be used only with `loadbalancer` type listener. @@ -370,7 +332,7 @@ spec: additionalProperties: type: string type: object - description: "Annotations that will be added to the `Ingress` or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, or `ingress` type listeners." + description: "Annotations that will be added to the `Ingress`, `Route`, or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." labels: additionalProperties: type: string @@ -381,57 +343,96 @@ spec: items: type: string description: External IPs associated to the nodeport service. These IPs are used by clients external to the Kubernetes cluster to access the Kafka brokers. This field is helpful when `nodeport` without `externalIP` is not sufficient. For example on bare-metal Kubernetes clusters that do not support Loadbalancer service types. This field can only be used with `nodeport` type listener. - required: - - broker - description: Per-broker configurations. - ipFamilyPolicy: - type: string - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." - ipFamilies: - type: array - items: + description: Bootstrap configuration. + brokers: + type: array + items: + type: object + properties: + broker: + type: integer + description: ID of the kafka broker (broker identifier). Broker IDs start from 0 and correspond to the number of broker replicas. + advertisedHost: + type: string + description: The host name used in the brokers' `advertised.listeners`. + advertisedPort: + type: integer + description: The port number used in the brokers' `advertised.listeners`. + host: + type: string + description: The broker host. This field will be used in the Ingress resource or in the Route resource to specify the desired hostname. This field can be used only with `route` (optional) or `ingress` (required) type listeners. + nodePort: + type: integer + description: Node port for the per-broker service. This field can be used only with `nodeport` type listener. + loadBalancerIP: + type: string + description: The loadbalancer is requested with the IP address specified in this field. This feature depends on whether the underlying cloud provider supports specifying the `loadBalancerIP` when a load balancer is created. This field is ignored if the cloud provider does not support the feature.This field can be used only with `loadbalancer` type listener. + annotations: + additionalProperties: + type: string + type: object + description: "Annotations that will be added to the `Ingress` or `Service` resource. You can use this field to configure DNS providers such as External DNS. This field can be used only with `loadbalancer`, `nodeport`, or `ingress` type listeners." + labels: + additionalProperties: + type: string + type: object + description: "Labels that will be added to the `Ingress`, `Route`, or `Service` resource. This field can be used only with `loadbalancer`, `nodeport`, `route`, or `ingress` type listeners." + externalIPs: + type: array + items: + type: string + description: External IPs associated to the nodeport service. These IPs are used by clients external to the Kubernetes cluster to access the Kafka brokers. This field is helpful when `nodeport` without `externalIP` is not sufficient. For example on bare-metal Kubernetes clusters that do not support Loadbalancer service types. This field can only be used with `nodeport` type listener. + required: + - broker + description: Per-broker configurations. + ipFamilyPolicy: type: string enum: - - IPv4 - - IPv6 - description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." - createBootstrapService: - type: boolean - description: Whether to create the bootstrap service or not. The bootstrap service is created by default (if not specified differently). This field can be used with the `loadBalancer` type listener. - finalizers: - type: array - items: + - SingleStack + - PreferDualStack + - RequireDualStack + description: "Specifies the IP Family Policy used by the service. Available options are `SingleStack`, `PreferDualStack` and `RequireDualStack`. `SingleStack` is for a single IP family. `PreferDualStack` is for two IP families on dual-stack configured clusters or a single IP family on single-stack clusters. `RequireDualStack` fails unless there are two IP families on dual-stack configured clusters. If unspecified, Kubernetes will choose the default value based on the service type." + ipFamilies: + type: array + items: + type: string + enum: + - IPv4 + - IPv6 + description: "Specifies the IP Families used by the service. Available options are `IPv4` and `IPv6`. If unspecified, Kubernetes will choose the default value based on the `ipFamilyPolicy` setting." + createBootstrapService: + type: boolean + description: Whether to create the bootstrap service or not. The bootstrap service is created by default (if not specified differently). This field can be used with the `loadBalancer` type listener. + finalizers: + type: array + items: + type: string + description: "A list of finalizers which will be configured for the `LoadBalancer` type Services created for this listener. If supported by the platform, the finalizer `service.kubernetes.io/load-balancer-cleanup` to make sure that the external load balancer is deleted together with the service.For more information, see https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#garbage-collecting-load-balancers. This field can be used only with `loadbalancer` type listeners." + useServiceDnsDomain: + type: boolean + description: "Configures whether the Kubernetes service DNS domain should be used or not. If set to `true`, the generated addresses will contain the service DNS domain suffix (by default `.cluster.local`, can be configured using environment variable `KUBERNETES_SERVICE_DNS_DOMAIN`). Defaults to `false`.This field can be used only with `internal` and `cluster-ip` type listeners." + maxConnections: + type: integer + description: The maximum number of connections we allow for this listener in the broker at any time. New connections are blocked if the limit is reached. + maxConnectionCreationRate: + type: integer + description: The maximum connection creation rate we allow in this listener at any time. New connections will be throttled if the limit is reached. + preferredNodePortAddressType: type: string - description: "A list of finalizers which will be configured for the `LoadBalancer` type Services created for this listener. If supported by the platform, the finalizer `service.kubernetes.io/load-balancer-cleanup` to make sure that the external load balancer is deleted together with the service.For more information, see https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#garbage-collecting-load-balancers. This field can be used only with `loadbalancer` type listeners." - useServiceDnsDomain: - type: boolean - description: "Configures whether the Kubernetes service DNS domain should be used or not. If set to `true`, the generated addresses will contain the service DNS domain suffix (by default `.cluster.local`, can be configured using environment variable `KUBERNETES_SERVICE_DNS_DOMAIN`). Defaults to `false`.This field can be used only with `internal` and `cluster-ip` type listeners." - maxConnections: - type: integer - description: The maximum number of connections we allow for this listener in the broker at any time. New connections are blocked if the limit is reached. - maxConnectionCreationRate: - type: integer - description: The maximum connection creation rate we allow in this listener at any time. New connections will be throttled if the limit is reached. - preferredNodePortAddressType: - type: string - enum: - - ExternalIP - - ExternalDNS - - InternalIP - - InternalDNS - - Hostname - description: |- - Defines which address type should be used as the node address. Available types are: `ExternalDNS`, `ExternalIP`, `InternalDNS`, `InternalIP` and `Hostname`. By default, the addresses will be used in the following order (the first one found will be used): + enum: + - ExternalIP + - ExternalDNS + - InternalIP + - InternalDNS + - Hostname + description: |- + Defines which address type should be used as the node address. Available types are: `ExternalDNS`, `ExternalIP`, `InternalDNS`, `InternalIP` and `Hostname`. By default, the addresses will be used in the following order (the first one found will be used): - * `ExternalDNS` - * `ExternalIP` - * `InternalDNS` - * `InternalIP` - * `Hostname` + * `ExternalDNS` + * `ExternalIP` + * `InternalDNS` + * `InternalIP` + * `Hostname` This field is used to select the preferred address type, which is checked first. If no address is found for this address type, the other types are checked in the default order. This field can only be used with `nodeport` type listener. description: Additional listener configuration. @@ -6839,4 +6840,4 @@ spec: - PreKRaft - KRaft description: "Defines where cluster metadata are stored. Possible values are: ZooKeeper if the metadata are stored in ZooKeeper; KRaftMigration if the controllers are connected to ZooKeeper, brokers are being rolled with Zookeeper migration enabled and connection information to controllers, and the metadata migration process is running; KRaftDualWriting if the metadata migration process finished and the cluster is in dual-write mode; KRaftPostMigration if the brokers are fully KRaft-based but controllers being rolled to disconnect from ZooKeeper; PreKRaft if brokers and controller are fully KRaft-based, metadata are stored in KRaft, but ZooKeeper must be deleted; KRaft if the metadata are stored in KRaft." - description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." + description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." \ No newline at end of file From 124d9043b024f2f675d1460daad64b8dab19dc31 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Tue, 2 Jul 2024 08:32:44 +0000 Subject: [PATCH 15/62] revert gitignore changes Signed-off-by: Casper Thygesen --- .gitignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitignore b/.gitignore index 5592926cc5f..1bb05f3edc7 100644 --- a/.gitignore +++ b/.gitignore @@ -44,8 +44,6 @@ docker-images/operator/tmp/** # Connect plugin (tests) systemtest/*.tar.gz -systemtest/bin/ -cluster-operator/bin/ systemtest/my-plugins/ systemtest/scripts/results.json From c51139663418f8b1e8a1ba688285503262d30eff Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Tue, 2 Jul 2024 08:37:50 +0000 Subject: [PATCH 16/62] missing endline Signed-off-by: Casper Thygesen --- .../helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml b/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml index fb9dc22b708..f5c2382b4f4 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml @@ -6840,4 +6840,4 @@ spec: - PreKRaft - KRaft description: "Defines where cluster metadata are stored. Possible values are: ZooKeeper if the metadata are stored in ZooKeeper; KRaftMigration if the controllers are connected to ZooKeeper, brokers are being rolled with Zookeeper migration enabled and connection information to controllers, and the metadata migration process is running; KRaftDualWriting if the metadata migration process finished and the cluster is in dual-write mode; KRaftPostMigration if the brokers are fully KRaft-based but controllers being rolled to disconnect from ZooKeeper; PreKRaft if brokers and controller are fully KRaft-based, metadata are stored in KRaft, but ZooKeeper must be deleted; KRaft if the metadata are stored in KRaft." - description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." \ No newline at end of file + description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." From 7d75c9c7994f31818d21528e85df309f23c6ec22 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Tue, 2 Jul 2024 08:41:15 +0000 Subject: [PATCH 17/62] checkJsonInclude should only check strimzi api models Signed-off-by: Casper Thygesen --- .../src/main/java/io/strimzi/crdgenerator/CrdGenerator.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java index e6e0801efc4..2d44e065547 100644 --- a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java +++ b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java @@ -630,7 +630,6 @@ private ArrayNode buildSchemaOneOf(Class crdClass) { } private void checkClass(Class crdClass) { - checkJsonInclude(crdClass); checkJsonPropertyOrder(crdClass); if (!isAbstract(crdClass.getModifiers())) { @@ -648,6 +647,7 @@ private void checkClass(Class crdClass) { } if (crdClass.getName().startsWith("io.strimzi.api.")) { + checkJsonInclude(crdClass); checkInherits(crdClass, "io.strimzi.api.kafka.model.common.UnknownPropertyPreserving"); } @@ -656,7 +656,7 @@ private void checkClass(Class crdClass) { private void checkJsonInclude(Class crdClass) { if (!crdClass.isAnnotationPresent(JsonInclude.class)) { - warn(crdClass + " is missing @JsonInclude"); // Changed temporarily to allow compilation of io.fabric8.kubernetes.api.model.Quantity + err(crdClass + " is missing @JsonInclude"); } else if (!crdClass.getAnnotation(JsonInclude.class).value().equals(JsonInclude.Include.NON_NULL) && !crdClass.getAnnotation(JsonInclude.class).value().equals(JsonInclude.Include.NON_DEFAULT)) { err(crdClass + " has a @JsonInclude value other than Include.NON_NULL"); @@ -666,7 +666,7 @@ private void checkJsonInclude(Class crdClass) { private void checkJsonPropertyOrder(Class crdClass) { if (!isAbstract(crdClass.getModifiers()) && !crdClass.isAnnotationPresent(JsonPropertyOrder.class)) { - warn(crdClass + " is missing @JsonPropertyOrder"); // Changed temporarily to allow compilation of io.fabric8.kubernetes.api.model.Quantity + err(crdClass + " is missing @JsonPropertyOrder"); } } From 1703c3e6c54011d7835c6d5e8edf0fa2aeedfcbd Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Tue, 2 Jul 2024 09:03:58 +0000 Subject: [PATCH 18/62] checkJsonPropertyOrder should only be run for io.strimzi.api models Signed-off-by: Casper Thygesen --- .../src/main/java/io/strimzi/crdgenerator/CrdGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java index 2d44e065547..830c9be7ec8 100644 --- a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java +++ b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java @@ -630,7 +630,6 @@ private ArrayNode buildSchemaOneOf(Class crdClass) { } private void checkClass(Class crdClass) { - checkJsonPropertyOrder(crdClass); if (!isAbstract(crdClass.getModifiers())) { checkForBuilderClass(crdClass, crdClass.getName() + "Builder"); @@ -648,6 +647,7 @@ private void checkClass(Class crdClass) { if (crdClass.getName().startsWith("io.strimzi.api.")) { checkJsonInclude(crdClass); + checkJsonPropertyOrder(crdClass); checkInherits(crdClass, "io.strimzi.api.kafka.model.common.UnknownPropertyPreserving"); } From 775e028c36314f3cc6177f7dbd5192decf68cb15 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Tue, 2 Jul 2024 12:48:26 +0000 Subject: [PATCH 19/62] move checkJsonPropertyOrder and checkJsonInclude to check all io.strimzi.* Signed-off-by: Casper Thygesen --- .../src/main/java/io/strimzi/crdgenerator/CrdGenerator.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java index 830c9be7ec8..5416fddf539 100644 --- a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java +++ b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java @@ -645,11 +645,14 @@ private void checkClass(Class crdClass) { } } - if (crdClass.getName().startsWith("io.strimzi.api.")) { + if (crdClass.getName().startsWith("io.strimzi.")) { checkJsonInclude(crdClass); checkJsonPropertyOrder(crdClass); checkInherits(crdClass, "io.strimzi.api.kafka.model.common.UnknownPropertyPreserving"); } + if (crdClass.getName().startsWith("io.strimzi.api.")) { + checkInherits(crdClass, "io.strimzi.api.kafka.model.common.UnknownPropertyPreserving"); + } checkClassOverrides(crdClass, "equals", Object.class); } From ba3c1ea60c7dad6746255b3a6775d702f2a487ed Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Tue, 2 Jul 2024 18:29:14 +0200 Subject: [PATCH 20/62] Suggestion to CHANGELOG.md and documentation in con-configuration-points-common.adoc Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- CHANGELOG.md | 7 +++ .../con-configuration-points-common.adoc | 51 +++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14158575549..dfcec7176c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # CHANGELOG +## x.xx.x +Added support for additional volumes in CRDs: +* Users can specify volumes and volumeMounts fields in the Kafka, KafkaConnect, KafkaBridge, KafkaMirrorMaker2, EntityOperator, CruiseControl, KafkaExporter, and Zookeeper CRDs. +* Supported volume types include Secret, ConfigMap, EmptyDir, and PersistentVolumeClaims. +* All additional mounted paths is mounted inside /mnt to ensure backwards compatibility for the evolution of kafka and this operator. +* Example configurations and guidelines have been added to the documentation. + ## 0.42.0 * The `UseKRaft` feature gate moves to GA stage and is permanently enabled without the possibility to disable it. diff --git a/documentation/modules/overview/con-configuration-points-common.adoc b/documentation/modules/overview/con-configuration-points-common.adoc index 59347676dfe..0f18800ff73 100644 --- a/documentation/modules/overview/con-configuration-points-common.adoc +++ b/documentation/modules/overview/con-configuration-points-common.adoc @@ -65,3 +65,54 @@ spec: - fast-network # ... ---- + +== Additional Volumes + +Strimzi supports specifying additional volumes and volume mounts in the following components: +Kafka, KafkaConnect, KafkaBridge, KafkaMirrorMaker2, EntityOperator, CruiseControl, +KafkaExporter, and Zookeeper. All additional mounted paths are located +inside `/mnt` to ensure compatibility with future Kafka and Strimzi updates. + +This feature enables users to: + +- Access log files for enhanced monitoring and debugging. +- Use additional configurations or secret management tools that require mounting extra volumes. +- Analyze JVM issues (for example, heap dumps). + +Supported Volume Types + +- Secret +- ConfigMap +- EmptyDir +- PersistentVolumeClaims + +[discrete] +== Example configuration for additional volumes: +[source,yaml,subs=attributes+] +---- +kind: Kafka +spec: + kafka: + template: + pod: + volumes: + - name: example-secret + secret: + secretName: secret-name + - name: example-configmap + configMap: + name: config-map-name + - name: temp + emptyDir: {} + - name: example-pvc-volume + persistentVolumeClaim: + claimName: myclaim + kafkaContainer: + volumeMounts: + - name: example-secret + mountPath: /mnt/secret-volume + - name: example-configmap + mountPath: /mnt/cm-volume + - name: example-pvc-volume + mountPath: /mnt/data +---- From 55443915d24f33554794ce3a57784f997d288162 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Tue, 2 Jul 2024 20:10:36 +0000 Subject: [PATCH 21/62] revert CrdGeneratorTest Signed-off-by: Casper Thygesen --- .../io/strimzi/crdgenerator/CrdGenerator.java | 1 - .../strimzi/crdgenerator/CrdGeneratorTest.java | 18 +++++++----------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java index 5416fddf539..b2c6f4b2be4 100644 --- a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java +++ b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java @@ -648,7 +648,6 @@ private void checkClass(Class crdClass) { if (crdClass.getName().startsWith("io.strimzi.")) { checkJsonInclude(crdClass); checkJsonPropertyOrder(crdClass); - checkInherits(crdClass, "io.strimzi.api.kafka.model.common.UnknownPropertyPreserving"); } if (crdClass.getName().startsWith("io.strimzi.api.")) { checkInherits(crdClass, "io.strimzi.api.kafka.model.common.UnknownPropertyPreserving"); diff --git a/crd-generator/src/test/java/io/strimzi/crdgenerator/CrdGeneratorTest.java b/crd-generator/src/test/java/io/strimzi/crdgenerator/CrdGeneratorTest.java index 3bba9356cb7..c09cbf16540 100644 --- a/crd-generator/src/test/java/io/strimzi/crdgenerator/CrdGeneratorTest.java +++ b/crd-generator/src/test/java/io/strimzi/crdgenerator/CrdGeneratorTest.java @@ -26,10 +26,7 @@ class CrdGeneratorTest { private final CrdGenerator.Reporter crdGeneratorReporter = new CrdGenerator.Reporter() { @Override - public void warn(String warning) { - if (warning.contains("@JsonInclude") || warning.contains("@JsonPropertyOrder")) { - warnings.add(warning); - } + public void warn(String s) { } @Override @@ -42,7 +39,6 @@ public void err(String err) { } }; private final Set errors = new HashSet<>(); - private final Set warnings = new HashSet<>(); @BeforeEach public void beforeEachTest() { @@ -130,10 +126,10 @@ void simpleTestWithErrors() throws IOException { StringWriter w = new StringWriter(); crdGenerator.generate(ExampleCrdWithErrors.class, w); - assertTrue(warnings.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors is missing @JsonInclude"), warnings.toString()); - assertFalse(warnings.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors$ObjectProperty is missing @JsonInclude"), warnings.toString()); - assertTrue(warnings.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors is missing @JsonPropertyOrder"), warnings.toString()); - assertFalse(warnings.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors$ObjectProperty is missing @JsonPropertyOrder"), warnings.toString()); - assertTrue(warnings.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors$ObjectProperty has a property bar which is not in the @JsonPropertyOrder"), errors.toString()); + assertTrue(errors.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors is missing @JsonInclude"), errors.toString()); + assertFalse(errors.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors$ObjectProperty is missing @JsonInclude"), errors.toString()); + assertTrue(errors.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors is missing @JsonPropertyOrder"), errors.toString()); + assertFalse(errors.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors$ObjectProperty is missing @JsonPropertyOrder"), errors.toString()); + assertTrue(errors.contains("class io.strimzi.crdgenerator.ExampleCrdWithErrors$ObjectProperty has a property bar which is not in the @JsonPropertyOrder"), errors.toString()); } -} +} \ No newline at end of file From a13d01a70a13e281d91af06b013be5a56b896c98 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Tue, 2 Jul 2024 22:13:31 +0200 Subject: [PATCH 22/62] Update crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java Signed-off-by: Casper Thygesen --- .../src/main/java/io/strimzi/crdgenerator/CrdGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java index b2c6f4b2be4..a03adc947ed 100644 --- a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java +++ b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java @@ -761,7 +761,7 @@ private void checkPropertiesInJsonPropertyOrder(Class crdClass, Set p List expectedOrder = asList(order.value()); for (String property : properties) { if (!expectedOrder.contains(property)) { - warn(crdClass + " has a property " + property + " which is not in the @JsonPropertyOrder"); + err(crdClass + " has a property " + property + " which is not in the @JsonPropertyOrder"); } } } From 2049a29946910b41a84adbf8797de91075fdbb53 Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Tue, 2 Jul 2024 23:29:06 +0200 Subject: [PATCH 23/62] Fixed some test Signed-off-by: KastTrifork --- .../strimzi/operator/cluster/model/CruiseControlTest.java | 2 +- .../strimzi/operator/cluster/model/EntityOperatorTest.java | 2 +- .../operator/cluster/model/KafkaBridgeClusterTest.java | 4 ++-- .../io/strimzi/operator/cluster/model/KafkaClusterTest.java | 2 +- .../operator/cluster/model/KafkaConnectBuildTest.java | 2 +- .../operator/cluster/model/KafkaConnectClusterTest.java | 6 +++--- .../strimzi/operator/cluster/model/KafkaExporterTest.java | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.java index ae205769e1f..ca5050e5420 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.java @@ -708,7 +708,7 @@ public void testTemplate() { List additionalVolumeMounts = singletonList(new VolumeMountBuilder() .withName("secret-volume-name") - .withMountPath("/abc") + .withMountPath("/mnt/secret-volume-path") .withSubPath("def") .build()); diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java index a1ce217f5b6..a6f905b1a90 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java @@ -260,7 +260,7 @@ public void testTemplate() { List additionalVolumeMounts = singletonList(new VolumeMountBuilder() .withName("secret-volume-name") - .withMountPath("/abc") + .withMountPath("/mnt/secret") .withSubPath("def") .build()); diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java index b0cf5ae0626..4d177d51d1e 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java @@ -469,7 +469,7 @@ public void testTemplate() { List additionalVolumeMounts = singletonList(new VolumeMountBuilder() .withName("secret-volume-name") - .withMountPath("/abc") + .withMountPath("/mnt/secret") .withSubPath("def") .build()); @@ -851,7 +851,7 @@ public void testGenerateDeploymentWithRackAndInitVolumeMounts() { VolumeMount additionalVolumeMount = new VolumeMountBuilder() .withName("config-map-volume-name") - .withMountPath("/abc") + .withMountPath("/mnt/config-map") .withSubPath("def") .build(); diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java index aaad4053ae6..845eafab539 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java @@ -539,7 +539,7 @@ public void testTemplate() { VolumeMount additionalVolumeMount = new VolumeMountBuilder() .withName("secret-volume-name") - .withMountPath("/abc") + .withMountPath("/etc/secret-volume") .withSubPath("def") .build(); diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.java index 49c3931cdb6..2cc3485e5ee 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.java @@ -445,7 +445,7 @@ public void testTemplate() { VolumeMount additionalVolumeMount = new VolumeMountBuilder() .withName("secret-volume-name") - .withMountPath("/abc") + .withMountPath("/mnt/secret-volume") .withSubPath("def") .build(); diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.java index 3aae08a35a1..bcf26a481e6 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.java @@ -789,19 +789,19 @@ public void testTemplate() { VolumeMount additionalVolumeMountConfigMap = new VolumeMountBuilder() .withName("config-map-volume-name") - .withMountPath("/abc") + .withMountPath("/mnt/config") .withSubPath("def") .build(); VolumeMount additionalVolumeMountSecret = new VolumeMountBuilder() .withName("secret-volume-name") - .withMountPath("/def") + .withMountPath("/mnt/secret") .withSubPath("abc") .build(); VolumeMount additionalVolumeMountEmptyDir = new VolumeMountBuilder() .withName("empty-dir-volume-name") - .withMountPath("/hij") + .withMountPath("/mnt/empty-dir") .withSubPath("def") .build(); diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java index af6de091040..4d912adba7c 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java @@ -406,7 +406,7 @@ public void testTemplate() { VolumeMount additionalVolumeMountConfigMap = new VolumeMountBuilder() .withName("config-map-volume-name") - .withMountPath("/abc") + .withMountPath("/mnt/config-map-path") .withSubPath("def") .build(); From 6815a007d6c14b72464babca23aa605db1650b4c Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Wed, 3 Jul 2024 06:23:13 +0000 Subject: [PATCH 24/62] s/pvc/persistentVolumeClaim Signed-off-by: Casper Thygesen --- .../model/common/template/AdditionalVolume.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java index b9e017dff39..5d1be85948f 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java @@ -9,7 +9,6 @@ import io.fabric8.kubernetes.api.model.ConfigMapVolumeSource; import io.fabric8.kubernetes.api.model.EmptyDirVolumeSource; import io.fabric8.kubernetes.api.model.PersistentVolumeClaimVolumeSource; -//import io.fabric8.kubernetes.api.model.EmptyDirVolumeSource; import io.fabric8.kubernetes.api.model.SecretVolumeSource; import io.strimzi.api.kafka.model.common.Constants; import io.strimzi.api.kafka.model.common.UnknownPropertyPreserving; @@ -27,7 +26,7 @@ */ @Buildable(editableEnabled = false, builderPackage = Constants.FABRIC8_KUBERNETES_API) @JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({ "name", "path", "subPath", "secret", "configMap", "emptyDir", "pvc" }) +@JsonPropertyOrder({ "name", "path", "subPath", "secret", "configMap", "emptyDir", "persistentVolumeClaim" }) @EqualsAndHashCode @ToString public class AdditionalVolume implements UnknownPropertyPreserving { @@ -35,7 +34,7 @@ public class AdditionalVolume implements UnknownPropertyPreserving { private SecretVolumeSource secret; private ConfigMapVolumeSource configMap; private EmptyDirVolumeSource emptyDir; - private PersistentVolumeClaimVolumeSource pvc; + private PersistentVolumeClaimVolumeSource persistentVolumeClaim; private Map additionalProperties = new HashMap<>(0); @Description("Name to use for the volume. Required.") @@ -81,15 +80,15 @@ public void setEmptyDir(EmptyDirVolumeSource emptyDir) { this.emptyDir = emptyDir; } - @Description("PVC object to use to populate the volume.") + @Description("PersistentVolumeClaim object to use to populate the volume.") @KubeLink(group = "core", version = "v1", kind = "persistentvolumeclaimvolumesource") @JsonInclude(JsonInclude.Include.NON_EMPTY) - public PersistentVolumeClaimVolumeSource getPvc() { - return pvc; + public PersistentVolumeClaimVolumeSource getPersistentVolumeClaim() { + return persistentVolumeClaim; } - public void setPvc(PersistentVolumeClaimVolumeSource pvc) { - this.pvc = pvc; + public void setPersistentVolumeClaim(PersistentVolumeClaimVolumeSource persistentVolumeClaim) { + this.persistentVolumeClaim = persistentVolumeClaim; } @Override From ea2044c2bb120fca80a5fbfe4a1c50cdf980a380 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Wed, 3 Jul 2024 07:00:57 +0000 Subject: [PATCH 25/62] s/getPvc/getPersistentVolumeClaim Signed-off-by: Casper Thygesen --- .../java/io/strimzi/operator/cluster/model/TemplateUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index 9f4b1a2e82f..3b1699e95dc 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -103,8 +103,8 @@ private static Volume createVolumeFromConfig(AdditionalVolume volumeConfig) { volumeBuilder.withNewSecret().withSecretName(volumeConfig.getSecret().getSecretName()).endSecret(); } else if (volumeConfig.getEmptyDir() != null) { volumeBuilder.withNewEmptyDir().withMedium(volumeConfig.getEmptyDir().getMedium()).endEmptyDir(); - } else if (volumeConfig.getPvc() != null) { - volumeBuilder.withPersistentVolumeClaim(volumeConfig.getPvc()); + } else if (volumeConfig.getPersistentVolumeClaim() != null) { + volumeBuilder.withPersistentVolumeClaim(volumeConfig.getPersistentVolumeClaim()); } return volumeBuilder.build(); From 0205e92cfe3c7b86737147705772ba74b1c10cb8 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Wed, 3 Jul 2024 07:34:05 +0000 Subject: [PATCH 26/62] withPersistentVolumeClaim Signed-off-by: Casper Thygesen --- .../operator/cluster/model/KafkaMirrorMaker2ClusterTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java index 7899594c5b5..1e9935707fc 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java @@ -939,7 +939,7 @@ public void testTemplate() { AdditionalVolume additionalVolumePvc = new AdditionalVolumeBuilder() .withName("pvc-volume-name") - .withPvc(pvc) + .withPersistentVolumeClaim(pvc) .build(); VolumeMount additionalVolumeMountConfigMap = new VolumeMountBuilder() From 7588fb48988002e1a55cfc68b1421259b75245c4 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Wed, 3 Jul 2024 08:24:53 +0000 Subject: [PATCH 27/62] update packing and documentation with new naming convention for PVCs Signed-off-by: Casper Thygesen --- documentation/modules/appendix_crds.adoc | 4 ++-- .../cluster-operator/040-Crd-kafka.yaml | 24 +++++++++---------- .../041-Crd-kafkaconnect.yaml | 8 +++---- .../045-Crd-kafkamirrormaker.yaml | 4 ++-- .../cluster-operator/046-Crd-kafkabridge.yaml | 4 ++-- .../048-Crd-kafkamirrormaker2.yaml | 8 +++---- .../04A-Crd-kafkanodepool.yaml | 4 ++-- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/documentation/modules/appendix_crds.adoc b/documentation/modules/appendix_crds.adoc index 36d7a7f5ab5..63b8c04bed7 100644 --- a/documentation/modules/appendix_crds.adoc +++ b/documentation/modules/appendix_crds.adoc @@ -1234,9 +1234,9 @@ Used in: xref:type-PodTemplate-{context}[`PodTemplate`] |emptyDir |https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#emptydirvolumesource-v1-core[EmptyDirVolumeSource] |EmptyDir to use to populate the volume. -|pvc +|persistentVolumeClaim |https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimvolumesource-v1-core[PersistentVolumeClaimVolumeSource] -|PVC object to use to populate the volume. +|PersistentVolumeClaim object to use to populate the volume. |==== [id='type-InternalServiceTemplate-{context}'] diff --git a/packaging/install/cluster-operator/040-Crd-kafka.yaml b/packaging/install/cluster-operator/040-Crd-kafka.yaml index 3f714711e94..b47d1c59271 100644 --- a/packaging/install/cluster-operator/040-Crd-kafka.yaml +++ b/packaging/install/cluster-operator/040-Crd-kafka.yaml @@ -1521,14 +1521,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. bootstrapService: @@ -2965,14 +2965,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for ZooKeeper `Pods`. clientService: @@ -4265,14 +4265,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Entity Operator `Pods`. topicOperatorContainer: @@ -5532,14 +5532,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Cruise Control `Pods`. apiService: @@ -6581,14 +6581,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for JmxTrans `Pods`. container: @@ -7411,14 +7411,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Exporter `Pods`. service: diff --git a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml index 1abb8a1fad5..749264b39c9 100644 --- a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml +++ b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml @@ -1067,14 +1067,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: @@ -1970,14 +1970,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: diff --git a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml index 95c47756a7e..37b8cf9efd9 100644 --- a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml +++ b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml @@ -1205,14 +1205,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka MirrorMaker `Pods`. podDisruptionBudget: diff --git a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml index fbf8f956b3b..95af00facf5 100644 --- a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml +++ b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml @@ -1056,14 +1056,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Bridge `Pods`. apiService: diff --git a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml index 7cd9d9aa495..026eb4d6880 100644 --- a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml +++ b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml @@ -1212,14 +1212,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: @@ -2115,14 +2115,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: diff --git a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml index fe307361c25..633eda9af38 100644 --- a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml +++ b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml @@ -821,14 +821,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. perPodService: From c67502581cc5ed933c88ced2f776572956069844 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Wed, 3 Jul 2024 09:36:44 +0000 Subject: [PATCH 28/62] try withPersistentVolumeClaim() again Signed-off-by: Casper Thygesen --- .../operator/cluster/model/KafkaMirrorMaker2ClusterTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java index 1e9935707fc..7899594c5b5 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java @@ -939,7 +939,7 @@ public void testTemplate() { AdditionalVolume additionalVolumePvc = new AdditionalVolumeBuilder() .withName("pvc-volume-name") - .withPersistentVolumeClaim(pvc) + .withPvc(pvc) .build(); VolumeMount additionalVolumeMountConfigMap = new VolumeMountBuilder() From 1ee00a482e75ec4c354f5fccf919b8abc69e57c6 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Wed, 3 Jul 2024 11:48:40 +0000 Subject: [PATCH 29/62] packing was not updated Signed-off-by: Casper Thygesen --- .../crds/040-Crd-kafka.yaml | 24 +++++++++---------- .../crds/041-Crd-kafkaconnect.yaml | 8 +++---- .../crds/045-Crd-kafkamirrormaker.yaml | 4 ++-- .../crds/046-Crd-kafkabridge.yaml | 4 ++-- .../crds/048-Crd-kafkamirrormaker2.yaml | 8 +++---- .../crds/04A-Crd-kafkanodepool.yaml | 4 ++-- 6 files changed, 26 insertions(+), 26 deletions(-) diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml index 94a958a0a1f..b3a8d2fcdd7 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml @@ -1522,14 +1522,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. bootstrapService: @@ -2966,14 +2966,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for ZooKeeper `Pods`. clientService: @@ -4266,14 +4266,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Entity Operator `Pods`. topicOperatorContainer: @@ -5533,14 +5533,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Cruise Control `Pods`. apiService: @@ -6582,14 +6582,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for JmxTrans `Pods`. container: @@ -7412,14 +7412,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Exporter `Pods`. service: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml index a7cfcffd945..01cdbeb4654 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml @@ -1068,14 +1068,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: @@ -1971,14 +1971,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml index a9ed8fe58d1..4358cf32321 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml @@ -1206,14 +1206,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka MirrorMaker `Pods`. podDisruptionBudget: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml index 2438c9800bd..58c969d4b2e 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml @@ -1057,14 +1057,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Bridge `Pods`. apiService: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml index 80c6ca68520..9f011fae873 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml @@ -1213,14 +1213,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: @@ -2116,14 +2116,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml index fe307361c25..633eda9af38 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml @@ -821,14 +821,14 @@ spec: format: type: string description: EmptyDir to use to populate the volume. - pvc: + persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean - description: PVC object to use to populate the volume. + description: PersistentVolumeClaim object to use to populate the volume. description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. perPodService: From e42e79598ce14ca26924cf9f773dc19880fece21 Mon Sep 17 00:00:00 2001 From: pegtrifork Date: Thu, 4 Jul 2024 09:55:05 +0200 Subject: [PATCH 30/62] Fix method name Signed-off-by: pegtrifork --- .../operator/cluster/model/KafkaMirrorMaker2ClusterTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java index 7899594c5b5..1e9935707fc 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java @@ -939,7 +939,7 @@ public void testTemplate() { AdditionalVolume additionalVolumePvc = new AdditionalVolumeBuilder() .withName("pvc-volume-name") - .withPvc(pvc) + .withPersistentVolumeClaim(pvc) .build(); VolumeMount additionalVolumeMountConfigMap = new VolumeMountBuilder() From 8085b20bf7c412b7d2ef08828bd7fc89ccf4d50d Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Thu, 4 Jul 2024 11:19:31 +0200 Subject: [PATCH 31/62] Changed mount path for additionalVolume in Test Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../io/strimzi/operator/cluster/model/KafkaClusterTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java index 845eafab539..99bf5c7a987 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java @@ -539,7 +539,7 @@ public void testTemplate() { VolumeMount additionalVolumeMount = new VolumeMountBuilder() .withName("secret-volume-name") - .withMountPath("/etc/secret-volume") + .withMountPath("/mnt/secret-volume") .withSubPath("def") .build(); From ae3de84aa59cff70d3229eeb95dd8c0e3168ef9c Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Thu, 4 Jul 2024 09:19:52 +0000 Subject: [PATCH 32/62] wrong path Signed-off-by: Casper Thygesen --- .devcontainer/Dockerfile | 40 + .devcontainer/devcontainer.json | 44 + .devcontainer/maven-settings.xml | 6 + .devcontainer/settings.xml | 25 + cluster-operator/bin/Makefile | 14 + cluster-operator/bin/pom.xml | 379 +++++ .../bin/scripts/cluster_operator_run.sh | 38 + .../operator/cluster/ClusterOperator.class | Bin 0 -> 9059 bytes ...rConfig$ClusterOperatorConfigBuilder.class | Bin 0 -> 5403 bytes .../cluster/ClusterOperatorConfig.class | Bin 0 -> 11411 bytes .../io/strimzi/operator/cluster/Main.class | Bin 0 -> 9853 bytes .../PlatformFeaturesAvailability.class | Bin 0 -> 6706 bytes .../operator/cluster/ShutdownHook.class | Bin 0 -> 4298 bytes .../LeaderElectionManager.class | Bin 0 -> 6128 bytes .../LeaderElectionManagerConfig.class | Bin 0 -> 7958 bytes .../cluster/model/AbstractConfiguration.class | Bin 0 -> 7690 bytes .../cluster/model/AbstractModel.class | Bin 0 -> 8075 bytes .../cluster/model/AuthenticationUtils.class | Bin 0 -> 12378 bytes .../operator/cluster/model/CertUtils.class | Bin 0 -> 10259 bytes .../operator/cluster/model/ClusterCa.class | Bin 0 -> 9868 bytes .../cluster/model/ConfigMapUtils.class | Bin 0 -> 3672 bytes .../cluster/model/ContainerUtils.class | Bin 0 -> 9880 bytes .../CruiseControl$CruiseControlUser.class | Bin 0 -> 4855 bytes .../cluster/model/CruiseControl.class | Bin 0 -> 11151 bytes .../DefaultSharedEnvironmentProvider.class | Bin 0 -> 4036 bytes .../cluster/model/DnsNameGenerator.class | Bin 0 -> 5669 bytes .../cluster/model/EntityOperator.class | Bin 0 -> 9371 bytes .../cluster/model/EntityTopicOperator.class | Bin 0 -> 10656 bytes .../cluster/model/EntityUserOperator.class | Bin 0 -> 10730 bytes .../cluster/model/ImagePullPolicy.class | Bin 0 -> 1901 bytes .../cluster/model/JvmOptionUtils.class | Bin 0 -> 8375 bytes .../operator/cluster/model/KRaftUtils.class | Bin 0 -> 5021 bytes .../KafkaBridgeAdminClientConfiguration.class | Bin 0 -> 536 bytes .../cluster/model/KafkaBridgeCluster.class | Bin 0 -> 13611 bytes .../KafkaBridgeConsumerConfiguration.class | Bin 0 -> 530 bytes .../KafkaBridgeProducerConfiguration.class | Bin 0 -> 530 bytes .../KafkaBrokerConfigurationBuilder.class | Bin 0 -> 14383 bytes .../operator/cluster/model/KafkaCluster.class | Bin 0 -> 20654 bytes .../cluster/model/KafkaConfiguration.class | Bin 0 -> 10062 bytes .../cluster/model/KafkaConnectBuild.class | Bin 0 -> 9631 bytes .../model/KafkaConnectBuildUtils.class | Bin 0 -> 3227 bytes .../cluster/model/KafkaConnectCluster.class | Bin 0 -> 14940 bytes .../model/KafkaConnectConfiguration.class | Bin 0 -> 516 bytes .../model/KafkaConnectDockerfile$Cmd.class | Bin 0 -> 6482 bytes .../model/KafkaConnectDockerfile.class | Bin 0 -> 9223 bytes .../model/KafkaConnectorConfiguration.class | Bin 0 -> 520 bytes .../cluster/model/KafkaExporter.class | Bin 0 -> 10164 bytes ...KafkaListenerCustomAuthConfiguration.class | Bin 0 -> 400 bytes .../KafkaMetadataConfigurationState.class | Bin 0 -> 3522 bytes .../model/KafkaMirrorMaker2Cluster.class | Bin 0 -> 11895 bytes .../KafkaMirrorMaker2Configuration.class | Bin 0 -> 526 bytes .../model/KafkaMirrorMaker2Connectors.class | Bin 0 -> 9872 bytes .../model/KafkaMirrorMakerCluster.class | Bin 0 -> 13861 bytes ...afkaMirrorMakerConsumerConfiguration.class | Bin 0 -> 540 bytes ...afkaMirrorMakerProducerConfiguration.class | Bin 0 -> 540 bytes .../operator/cluster/model/KafkaPool.class | Bin 0 -> 9781 bytes .../cluster/model/KafkaSpecChecker.class | Bin 0 -> 9398 bytes .../cluster/model/KafkaUpgradeException.class | Bin 0 -> 855 bytes .../cluster/model/KafkaVersion$Lookup.class | Bin 0 -> 8953 bytes ...ion$UnsupportedKafkaVersionException.class | Bin 0 -> 5175 bytes .../operator/cluster/model/KafkaVersion.class | Bin 0 -> 8164 bytes .../cluster/model/KafkaVersionChange.class | Bin 0 -> 1796 bytes .../cluster/model/ListenersUtils.class | Bin 0 -> 12504 bytes .../cluster/model/ListenersValidator.class | Bin 0 -> 11879 bytes .../cluster/model/MetricsAndLogging.class | Bin 0 -> 1076 bytes .../operator/cluster/model/ModelUtils.class | Bin 0 -> 10244 bytes .../cluster/model/NetworkPolicyUtils.class | Bin 0 -> 5028 bytes .../cluster/model/NoImageException.class | Bin 0 -> 768 bytes .../model/NoSuchResourceException.class | Bin 0 -> 803 bytes .../operator/cluster/model/NodeRef.class | Bin 0 -> 1534 bytes .../model/PersistentVolumeClaimUtils.class | Bin 0 -> 5954 bytes .../model/PodDisruptionBudgetUtils.class | Bin 0 -> 3361 bytes .../operator/cluster/model/PodRevision.class | Bin 0 -> 3499 bytes .../operator/cluster/model/PodSetUtils.class | Bin 0 -> 5328 bytes .../operator/cluster/model/ProbeUtils.class | Bin 0 -> 4310 bytes .../operator/cluster/model/Quantities.class | Bin 0 -> 3069 bytes .../operator/cluster/model/RbacUtils.class | Bin 0 -> 4658 bytes .../cluster/model/RestartReason.class | Bin 0 -> 3448 bytes .../cluster/model/RestartReasons.class | Bin 0 -> 8500 bytes .../cluster/model/ServiceAccountUtils.class | Bin 0 -> 1880 bytes .../operator/cluster/model/ServiceUtils.class | Bin 0 -> 10075 bytes ...SharedEnvironmentProvider$EnvVarName.class | Bin 0 -> 1438 bytes .../model/SharedEnvironmentProvider.class | Bin 0 -> 1446 bytes .../operator/cluster/model/StorageDiff.class | Bin 0 -> 7910 bytes .../operator/cluster/model/StorageUtils.class | Bin 0 -> 4119 bytes .../cluster/model/TemplateUtils.class | Bin 0 -> 4535 bytes .../model/UnsupportedVersionException.class | Bin 0 -> 801 bytes .../operator/cluster/model/VolumeUtils.class | Bin 0 -> 10064 bytes .../cluster/model/WorkloadUtils.class | Bin 0 -> 11662 bytes .../cluster/model/ZooKeeperSpecChecker.class | Bin 0 -> 2610 bytes .../cluster/model/ZookeeperCluster.class | Bin 0 -> 11680 bytes .../model/ZookeeperConfiguration.class | Bin 0 -> 510 bytes .../model/cruisecontrol/BrokerCapacity.class | Bin 0 -> 3929 bytes .../Capacity$ResourceRequirementType.class | Bin 0 -> 5421 bytes .../model/cruisecontrol/Capacity.class | Bin 0 -> 11466 bytes .../model/cruisecontrol/CpuCapacity.class | Bin 0 -> 2382 bytes .../CruiseControlConfiguration.class | Bin 0 -> 1595 bytes .../CruiseControlMetricsReporter.class | Bin 0 -> 5271 bytes .../model/cruisecontrol/DiskCapacity.class | Bin 0 -> 3759 bytes .../operator/cluster/model/jmx/JmxModel.class | Bin 0 -> 8222 bytes .../cluster/model/jmx/SupportsJmx.class | Bin 0 -> 610 bytes .../cluster/model/logging/LoggingModel.class | Bin 0 -> 3225 bytes .../cluster/model/logging/LoggingUtils.class | Bin 0 -> 8041 bytes .../model/logging/SupportsLogging.class | Bin 0 -> 642 bytes .../cluster/model/metrics/MetricsModel.class | Bin 0 -> 5766 bytes .../model/metrics/SupportsMetrics.class | Bin 0 -> 642 bytes .../model/nodepools/NodeIdAssignment.class | Bin 0 -> 1637 bytes .../model/nodepools/NodeIdAssignor.class | Bin 0 -> 9442 bytes .../model/nodepools/NodeIdRange$IdRange.class | Bin 0 -> 5912 bytes ...eIdRange$InvalidNodeIdRangeException.class | Bin 0 -> 5190 bytes .../cluster/model/nodepools/NodeIdRange.class | Bin 0 -> 6634 bytes .../model/nodepools/NodePoolUtils.class | Bin 0 -> 9758 bytes .../nodepools/VirtualNodePoolConverter.class | Bin 0 -> 2941 bytes ...ContainerSecurityProviderContextImpl.class | Bin 0 -> 2530 bytes .../PodSecurityProviderContextImpl.class | Bin 0 -> 2497 bytes .../PodSecurityProviderFactory.class | Bin 0 -> 4202 bytes .../operator/cluster/operator/VertxUtil.class | Bin 0 -> 10727 bytes .../assembly/AbstractAssemblyOperator.class | Bin 0 -> 7398 bytes ...perator$ConnectorStatusAndConditions.class | Bin 0 -> 6262 bytes .../assembly/AbstractConnectOperator.class | Bin 0 -> 18377 bytes ...perator$UnableToAcquireLockException.class | Bin 0 -> 5180 bytes .../operator/assembly/AbstractOperator.class | Bin 0 -> 11508 bytes .../operator/assembly/BrokersInUseCheck.class | Bin 0 -> 5290 bytes .../CaReconciler$CaReconciliationResult.class | Bin 0 -> 5258 bytes .../operator/assembly/CaReconciler.class | Bin 0 -> 9660 bytes .../ConnectBuildOperator$BuildInfo.class | Bin 0 -> 5418 bytes .../assembly/ConnectBuildOperator.class | Bin 0 -> 10728 bytes .../ConnectOperatorMetricsHolder.class | Bin 0 -> 9222 bytes .../assembly/ConnectRestException.class | Bin 0 -> 5283 bytes .../assembly/CruiseControlReconciler.class | Bin 0 -> 8302 bytes .../assembly/DefaultKafkaQuotasManager.class | Bin 0 -> 9934 bytes .../assembly/EntityOperatorReconciler.class | Bin 0 -> 9576 bytes .../assembly/KRaftMetadataManager.class | Bin 0 -> 6999 bytes .../assembly/KRaftMigrationUtils.class | Bin 0 -> 6823 bytes .../assembly/KRaftVersionChangeCreator.class | Bin 0 -> 9230 bytes ...AssemblyOperator$ReconciliationState.class | Bin 0 -> 10536 bytes .../assembly/KafkaAssemblyOperator.class | Bin 0 -> 9090 bytes .../KafkaAssemblyOperatorMetricsHolder.class | Bin 0 -> 5344 bytes .../KafkaBridgeAssemblyOperator.class | Bin 0 -> 10618 bytes ...afkaClusterCreator$KafkaAndNodePools.class | Bin 0 -> 5330 bytes .../assembly/KafkaClusterCreator.class | Bin 0 -> 9879 bytes .../operator/assembly/KafkaConnectApi.class | Bin 0 -> 7089 bytes .../assembly/KafkaConnectApiImpl.class | Bin 0 -> 13811 bytes .../KafkaConnectAssemblyOperator.class | Bin 0 -> 16427 bytes .../assembly/KafkaConnectMigration.class | Bin 0 -> 9676 bytes .../assembly/KafkaConnectRoller.class | Bin 0 -> 7093 bytes .../assembly/KafkaExporterReconciler.class | Bin 0 -> 9135 bytes ...enersReconciler$ReconciliationResult.class | Bin 0 -> 5546 bytes .../assembly/KafkaListenersReconciler.class | Bin 0 -> 8282 bytes .../assembly/KafkaMetadataStateManager.class | Bin 0 -> 11139 bytes ...yOperator$ConnectorsComparatorByName.class | Bin 0 -> 8515 bytes .../KafkaMirrorMaker2AssemblyOperator.class | Bin 0 -> 14025 bytes .../KafkaMirrorMakerAssemblyOperator.class | Bin 0 -> 10206 bytes ...AssemblyOperator$CruiseControlIssues.class | Bin 0 -> 6649 bytes ...balanceAssemblyOperator$MapAndStatus.class | Bin 0 -> 6867 bytes .../KafkaRebalanceAssemblyOperator.class | Bin 0 -> 13102 bytes .../operator/assembly/KafkaReconciler.class | Bin 0 -> 13816 bytes .../operator/assembly/ManualPodCleaner.class | Bin 0 -> 6577 bytes .../assembly/MetricsAndLoggingUtils.class | Bin 0 -> 4261 bytes .../cluster/operator/assembly/Operator.class | Bin 0 -> 4172 bytes .../operator/assembly/PvcReconciler.class | Bin 0 -> 7973 bytes .../operator/assembly/ReconcilerUtils.class | Bin 0 -> 11074 bytes .../assembly/ReconnectingWatcher.class | Bin 0 -> 5571 bytes .../StrimziPodSetController$PodCounter.class | Bin 0 -> 5096 bytes ...imziPodSetController$PodEventHandler.class | Bin 0 -> 5684 bytes ...iPodSetController$PodSetEventHandler.class | Bin 0 -> 5753 bytes ...tController$SimplifiedReconciliation.class | Bin 0 -> 5634 bytes .../assembly/StrimziPodSetController.class | Bin 0 -> 10802 bytes .../assembly/VersionChangeCreator.class | Bin 0 -> 891 bytes .../operator/assembly/ZooKeeperEraser.class | Bin 0 -> 9084 bytes .../assembly/ZooKeeperReconciler.class | Bin 0 -> 12018 bytes .../ZooKeeperVersionChangeCreator.class | Bin 0 -> 8669 bytes .../operator/resource/BrokerState.class | Bin 0 -> 3706 bytes .../ConcurrentDeletionException.class | Bin 0 -> 863 bytes .../DefaultKafkaAgentClientProvider.class | Bin 0 -> 1776 bytes .../DefaultZooKeeperAdminProvider.class | Bin 0 -> 2478 bytes .../DefaultZookeeperScalerProvider.class | Bin 0 -> 2562 bytes .../operator/resource/HttpClientUtils.class | Bin 0 -> 2114 bytes .../resource/KRaftMigrationState.class | Bin 0 -> 1880 bytes .../operator/resource/KafkaAgentClient.class | Bin 0 -> 8699 bytes .../resource/KafkaAgentClientProvider.class | Bin 0 -> 969 bytes .../operator/resource/KafkaAvailability.class | Bin 0 -> 9575 bytes .../KafkaBrokerConfigurationDiff.class | Bin 0 -> 9421 bytes ...oggingConfigurationDiff$LoggingLevel.class | Bin 0 -> 6630 bytes ...nfigurationDiff$LoggingLevelResolver.class | Bin 0 -> 6070 bytes .../KafkaBrokerLoggingConfigurationDiff.class | Bin 0 -> 9281 bytes .../operator/resource/KafkaQuorumCheck.class | Bin 0 -> 5632 bytes .../resource/KafkaRoller$FatalProblem.class | Bin 0 -> 5027 bytes .../KafkaRoller$ForceableProblem.class | Bin 0 -> 5368 bytes .../resource/KafkaRoller$RestartContext.class | Bin 0 -> 6069 bytes .../KafkaRoller$UnforceableProblem.class | Bin 0 -> 5045 bytes .../operator/resource/KafkaRoller.class | Bin 0 -> 13314 bytes .../resource/ResourceOperatorSupplier.class | Bin 0 -> 12599 bytes .../resource/ZooKeeperAdminProvider.class | Bin 0 -> 1164 bytes ...erRoller$ZookeeperClusterRollContext.class | Bin 0 -> 5905 bytes .../ZooKeeperRoller$ZookeeperPodContext.class | Bin 0 -> 4582 bytes .../operator/resource/ZooKeeperRoller.class | Bin 0 -> 6041 bytes .../resource/ZookeeperLeaderFinder.class | Bin 0 -> 8954 bytes .../operator/resource/ZookeeperScaler.class | Bin 0 -> 9730 bytes .../resource/ZookeeperScalerProvider.class | Bin 0 -> 1538 bytes .../resource/ZookeeperScalingException.class | Bin 0 -> 969 bytes ...ions$AbstractRebalanceOptionsBuilder.class | Bin 0 -> 6312 bytes .../AbstractRebalanceOptions.class | Bin 0 -> 4486 bytes ...rokerOptions$AddBrokerOptionsBuilder.class | Bin 0 -> 3453 bytes .../cruisecontrol/AddBrokerOptions.class | Bin 0 -> 2106 bytes .../cruisecontrol/CruiseControlApi.class | Bin 0 -> 3967 bytes .../cruisecontrol/CruiseControlApiImpl.class | Bin 0 -> 12566 bytes .../CruiseControlRebalanceResponse.class | Bin 0 -> 1495 bytes .../cruisecontrol/CruiseControlResponse.class | Bin 0 -> 2327 bytes .../CruiseControlRestException.class | Bin 0 -> 916 bytes ...eControlRetriableConnectionException.class | Bin 0 -> 994 bytes .../resource/cruisecontrol/PathBuilder.class | Bin 0 -> 8676 bytes ...lanceOptions$RebalanceOptionsBuilder.class | Bin 0 -> 2718 bytes .../cruisecontrol/RebalanceOptions.class | Bin 0 -> 1543 bytes ...erOptions$RemoveBrokerOptionsBuilder.class | Bin 0 -> 3504 bytes .../cruisecontrol/RemoveBrokerOptions.class | Bin 0 -> 2130 bytes .../KubernetesRestartEventPublisher.class | Bin 0 -> 6636 bytes .../AbstractNamespacedResourceOperator.class | Bin 0 -> 13598 bytes ...bstractNonNamespacedResourceOperator.class | Bin 0 -> 11970 bytes ...tractReadyNamespacedResourceOperator.class | Bin 0 -> 4082 bytes .../kubernetes/AbstractResourceOperator.class | Bin 0 -> 7333 bytes ...ctScalableNamespacedResourceOperator.class | Bin 0 -> 5006 bytes ...tWatchableNamespacedResourceOperator.class | Bin 0 -> 5763 bytes ...leStatusedNamespacedResourceOperator.class | Bin 0 -> 2937 bytes .../kubernetes/BuildConfigOperator.class | Bin 0 -> 6947 bytes .../resource/kubernetes/BuildOperator.class | Bin 0 -> 2280 bytes .../ClusterRoleBindingOperator.class | Bin 0 -> 2681 bytes .../kubernetes/ClusterRoleOperator.class | Bin 0 -> 3509 bytes .../kubernetes/ConfigMapOperator.class | Bin 0 -> 5350 bytes .../resource/kubernetes/CrdOperator.class | Bin 0 -> 6803 bytes .../kubernetes/DeploymentConfigOperator.class | Bin 0 -> 7137 bytes .../kubernetes/DeploymentOperator.class | Bin 0 -> 7792 bytes .../kubernetes/EndpointOperator.class | Bin 0 -> 2465 bytes .../kubernetes/ImageStreamOperator.class | Bin 0 -> 2496 bytes .../resource/kubernetes/IngressOperator.class | Bin 0 -> 5397 bytes .../kubernetes/NetworkPolicyOperator.class | Bin 0 -> 3082 bytes .../resource/kubernetes/NodeOperator.class | Bin 0 -> 2401 bytes .../PodDisruptionBudgetOperator.class | Bin 0 -> 2663 bytes .../resource/kubernetes/PodOperator.class | Bin 0 -> 4470 bytes .../resource/kubernetes/PvcOperator.class | Bin 0 -> 5503 bytes .../resource/kubernetes/ResourceSupport.class | Bin 0 -> 9849 bytes .../kubernetes/RoleBindingOperator.class | Bin 0 -> 2503 bytes .../resource/kubernetes/RoleOperator.class | Bin 0 -> 2363 bytes .../resource/kubernetes/RouteOperator.class | Bin 0 -> 3904 bytes .../resource/kubernetes/SecretOperator.class | Bin 0 -> 2403 bytes .../kubernetes/ServiceAccountOperator.class | Bin 0 -> 3809 bytes .../resource/kubernetes/ServiceOperator.class | Bin 0 -> 10211 bytes .../resource/kubernetes/StatefulSetDiff.class | Bin 0 -> 6036 bytes .../kubernetes/StatefulSetOperator.class | Bin 0 -> 11346 bytes .../kubernetes/StorageClassOperator.class | Bin 0 -> 2561 bytes .../kubernetes/StrimziPodSetOperator.class | Bin 0 -> 3922 bytes .../src/main/resources-filtered/.properties | 2 + ...1-ClusterRole-strimzi-entity-operator.yaml | 56 + .../default-logging/CruiseControl.properties | 12 + .../EntityTopicOperator.properties | 23 + .../EntityUserOperator.properties | 16 + .../KafkaBridgeCluster.properties | 24 + .../default-logging/KafkaCluster.properties | 19 + .../KafkaConnectCluster.properties | 6 + .../KafkaMirrorMaker2Cluster.properties | 7 + .../KafkaMirrorMakerCluster.properties | 5 + .../ZookeeperCluster.properties | 5 + .../resources/kafka-3.6.0-config-model.json | 1271 ++++++++++++++++ .../resources/kafka-3.6.1-config-model.json | 1271 ++++++++++++++++ .../resources/kafka-3.6.2-config-model.json | 1276 ++++++++++++++++ .../resources/kafka-3.7.0-config-model.json | 1302 +++++++++++++++++ .../resources/kafka-3.7.1-config-model.json | 1302 +++++++++++++++++ .../bin/src/main/resources/log4j2.properties | 21 + .../cluster/ClusterOperatorConfigTest.class | Bin 0 -> 8413 bytes .../cluster/ClusterOperatorTest.class | Bin 0 -> 8696 bytes .../operator/cluster/JSONObjectMatchers.class | Bin 0 -> 2910 bytes .../cluster/KafkaVersionTestUtils.class | Bin 0 -> 8582 bytes .../PlatformFeaturesAvailabilityTest.class | Bin 0 -> 9267 bytes .../operator/cluster/ResourceUtils.class | Bin 0 -> 10619 bytes .../cluster/ShutdownHookTest$MyVerticle.class | Bin 0 -> 4559 bytes .../operator/cluster/ShutdownHookTest.class | Bin 0 -> 7037 bytes .../strimzi/operator/cluster/TestUtils.class | Bin 0 -> 3190 bytes .../LeaderElectionManagerConfigTest.class | Bin 0 -> 10478 bytes .../LeaderElectionManagerIT.class | Bin 0 -> 8824 bytes .../LeaderElectionManagerMockTest.class | Bin 0 -> 8244 bytes .../model/AbstractConfigurationTest.class | Bin 0 -> 10992 bytes .../model/AbstractModelTest$Model.class | Bin 0 -> 2778 bytes .../cluster/model/AbstractModelTest.class | Bin 0 -> 4252 bytes .../model/AuthenticationUtilsTest.class | Bin 0 -> 8621 bytes .../cluster/model/CertUtilsTest.class | Bin 0 -> 9337 bytes ...ClusterCaRenewalTest$MockedClusterCa.class | Bin 0 -> 6675 bytes .../cluster/model/ClusterCaRenewalTest.class | Bin 0 -> 8697 bytes .../cluster/model/ClusterCaTest.class | Bin 0 -> 8881 bytes ...UtilsTest$ModelWithMetricsAndLogging.class | Bin 0 -> 6066 bytes ...lsTest$ModelWithoutMetricsAndLogging.class | Bin 0 -> 5073 bytes .../cluster/model/ConfigMapUtilsTest.class | Bin 0 -> 7653 bytes .../cluster/model/ContainerUtilsTest.class | Bin 0 -> 9116 bytes .../cluster/model/CruiseControlTest.class | Bin 0 -> 11513 bytes .../cluster/model/DnsNameGeneratorTest.class | Bin 0 -> 3968 bytes .../cluster/model/EntityOperatorTest.class | Bin 0 -> 9200 bytes .../model/EntityTopicOperatorTest.class | Bin 0 -> 7653 bytes .../model/EntityUserOperatorTest.class | Bin 0 -> 8252 bytes .../cluster/model/JvmOptionUtilsTest.class | Bin 0 -> 12208 bytes .../cluster/model/KRaftUtilsTest.class | Bin 0 -> 12027 bytes .../model/KafkaBridgeClusterTest.class | Bin 0 -> 11715 bytes ...onfigurationBuilderTest$IsEquivalent.class | Bin 0 -> 6426 bytes .../KafkaBrokerConfigurationBuilderTest.class | Bin 0 -> 13402 bytes .../model/KafkaClusterMigrationTest.class | Bin 0 -> 6583 bytes .../KafkaClusterOAuthValidationTest.class | Bin 0 -> 11181 bytes .../model/KafkaClusterPodSetTest.class | Bin 0 -> 7204 bytes .../cluster/model/KafkaClusterTest.class | Bin 0 -> 18364 bytes .../model/KafkaClusterWithKRaftTest.class | Bin 0 -> 7133 bytes .../model/KafkaClusterWithPoolsTest.class | Bin 0 -> 6580 bytes .../model/KafkaConfigurationTests.class | Bin 0 -> 7102 bytes .../cluster/model/KafkaConnectBuildTest.class | Bin 0 -> 9297 bytes .../model/KafkaConnectBuildUtilsTest.class | Bin 0 -> 2620 bytes .../model/KafkaConnectClusterTest.class | Bin 0 -> 14143 bytes .../model/KafkaConnectDockerfileTest.class | Bin 0 -> 10609 bytes .../cluster/model/KafkaExporterTest.class | Bin 0 -> 8334 bytes .../model/KafkaMirrorMaker2ClusterTest.class | Bin 0 -> 14077 bytes .../KafkaMirrorMaker2ConnectorsTest.class | Bin 0 -> 11758 bytes .../model/KafkaMirrorMakerClusterTest.class | Bin 0 -> 12916 bytes .../cluster/model/KafkaPoolTest.class | Bin 0 -> 8954 bytes .../cluster/model/KafkaSpecCheckerTest.class | Bin 0 -> 10045 bytes .../KafkaSpecCheckerWithNodePoolsTest.class | Bin 0 -> 8631 bytes .../cluster/model/KafkaVersionTest.class | Bin 0 -> 12043 bytes .../cluster/model/ListenersUtilsTest.class | Bin 0 -> 9554 bytes .../model/ListenersValidatorTest.class | Bin 0 -> 9562 bytes .../model/MockSharedEnvironmentProvider.class | Bin 0 -> 4487 bytes ...delUtilsResourcesTest$ResourcesCombo.class | Bin 0 -> 7175 bytes .../model/ModelUtilsResourcesTest.class | Bin 0 -> 12356 bytes .../cluster/model/ModelUtilsTest.class | Bin 0 -> 10134 bytes .../model/NetworkPolicyUtilsTest.class | Bin 0 -> 8143 bytes .../cluster/model/NodePoolUtilsTest.class | Bin 0 -> 8909 bytes .../PersistentVolumeClaimUtilsTest.class | Bin 0 -> 8108 bytes .../model/PodDisruptionBudgetUtilsTest.class | Bin 0 -> 9922 bytes .../cluster/model/PodRevisionTest.class | Bin 0 -> 8371 bytes .../cluster/model/PodSetUtilsTest.class | Bin 0 -> 1849 bytes .../cluster/model/ProbeUtilsTest.class | Bin 0 -> 10740 bytes .../cluster/model/QuantitiesTest.class | Bin 0 -> 13723 bytes .../cluster/model/RbacUtilsTest.class | Bin 0 -> 8130 bytes .../cluster/model/ResourceTester.class | Bin 0 -> 8687 bytes .../cluster/model/RestartReasonTest.class | Bin 0 -> 1611 bytes .../model/ServiceAccountUtilsTest.class | Bin 0 -> 5971 bytes .../cluster/model/ServiceUtilsTest.class | Bin 0 -> 9880 bytes .../cluster/model/StatusDiffTest.class | Bin 0 -> 7656 bytes .../cluster/model/StorageDiffTest.class | Bin 0 -> 10259 bytes .../cluster/model/StorageUtilsTest.class | Bin 0 -> 9906 bytes .../cluster/model/TemplateUtilsTest.class | Bin 0 -> 4889 bytes .../cluster/model/TestConfiguration.class | Bin 0 -> 5852 bytes .../TestConfigurationWithoutDefaults.class | Bin 0 -> 5790 bytes .../cluster/model/VolumeUtilsTest.class | Bin 0 -> 9550 bytes .../cluster/model/WorkloadUtilsTest.class | Bin 0 -> 8491 bytes .../model/ZooKeeperSpecCheckerTest.class | Bin 0 -> 9905 bytes .../model/ZookeeperClusterPodSetTest.class | Bin 0 -> 7710 bytes .../cluster/model/ZookeeperClusterTest.class | Bin 0 -> 9636 bytes .../CruiseControlMetricsReporterTest.class | Bin 0 -> 10702 bytes .../cluster/model/jmx/JmxModelTest.class | Bin 0 -> 9447 bytes .../model/logging/LoggingModelTest.class | Bin 0 -> 3693 bytes .../model/logging/LoggingUtilsTest.class | Bin 0 -> 9695 bytes .../model/metrics/MetricsModelTest.class | Bin 0 -> 9002 bytes .../model/nodepools/NodeIdAssignorTest.class | Bin 0 -> 11379 bytes .../model/nodepools/NodeIdRangeTest.class | Bin 0 -> 8548 bytes .../VirtualNodePoolConverterTest.class | Bin 0 -> 11177 bytes .../BaselinePodSecurityProviderTest.class | Bin 0 -> 9092 bytes .../PodSecurityProviderFactoryTest.class | Bin 0 -> 2607 bytes .../RestrictedPodSecurityProviderTest.class | Bin 0 -> 10279 bytes .../cluster/operator/VertxUtilTest.class | Bin 0 -> 9118 bytes ...stractConnectOperatorAutoRestartTest.class | Bin 0 -> 10513 bytes ...AbstractOperatorTest$DefaultOperator.class | Bin 0 -> 6800 bytes ...ultWatchableStatusedResourceOperator.class | Bin 0 -> 6193 bytes .../assembly/AbstractOperatorTest.class | Bin 0 -> 8031 bytes .../AbstractResourceStateMatchers.class | Bin 0 -> 3250 bytes .../assembly/BrokersInUseCheckTest.class | Bin 0 -> 8024 bytes .../CaReconcilerTest$MockCaReconciler.class | Bin 0 -> 6801 bytes .../operator/assembly/CaReconcilerTest.class | Bin 0 -> 10822 bytes .../assembly/CertificateRenewalTest.class | Bin 0 -> 8873 bytes .../operator/assembly/ConnectCluster.class | Bin 0 -> 6139 bytes .../ConnectorMockTest$ConnectorStatus.class | Bin 0 -> 5068 bytes .../operator/assembly/ConnectorMockTest.class | Bin 0 -> 12657 bytes .../CruiseControlReconcilerTest.class | Bin 0 -> 6523 bytes .../DefaultKafkaQuotasManagerTest.class | Bin 0 -> 10300 bytes .../EntityOperatorReconcilerTest.class | Bin 0 -> 7006 bytes .../assembly/JbodStorageMockTest.class | Bin 0 -> 8391 bytes .../assembly/KRaftMetadataManagerTest.class | Bin 0 -> 9590 bytes .../assembly/KRaftMigrationMockTest.class | Bin 0 -> 7649 bytes .../KRaftVersionChangeCreatorTest.class | Bin 0 -> 10808 bytes ...kaAssemblyOperatorCustomCertMockTest.class | Bin 0 -> 9293 bytes ...mblyOperator$MockReconciliationState.class | Bin 0 -> 6089 bytes ...pdatesTest$MockKafkaAssemblyOperator.class | Bin 0 -> 6370 bytes ...llingUpdatesTest$MockKafkaReconciler.class | Bin 0 -> 7179 bytes ...gUpdatesTest$MockZooKeeperReconciler.class | Bin 0 -> 6585 bytes ...mblyOperatorManualRollingUpdatesTest.class | Bin 0 -> 7998 bytes ...fkaAssemblyOperatorMetricsHolderTest.class | Bin 0 -> 6233 bytes .../KafkaAssemblyOperatorMockTest.class | Bin 0 -> 9221 bytes ...atcherTest$MockKafkaAssemblyOperator.class | Bin 0 -> 5774 bytes ...aAssemblyOperatorNodePoolWatcherTest.class | Bin 0 -> 7759 bytes ...aAssemblyOperatorNonParametrizedTest.class | Bin 0 -> 8006 bytes ...mblyOperator$MockReconciliationState.class | Bin 0 -> 5983 bytes ...PodSetTest$MockKafkaAssemblyOperator.class | Bin 0 -> 6300 bytes ...eratorPodSetTest$MockKafkaReconciler.class | Bin 0 -> 6512 bytes ...orPodSetTest$MockZooKeeperReconciler.class | Bin 0 -> 6272 bytes .../KafkaAssemblyOperatorPodSetTest.class | Bin 0 -> 7690 bytes .../KafkaAssemblyOperatorTest$Params.class | Bin 0 -> 5896 bytes .../assembly/KafkaAssemblyOperatorTest.class | Bin 0 -> 10353 bytes ...mblyOperator$MockReconciliationState.class | Bin 0 -> 6207 bytes ...hKRaftTest$MockKafkaAssemblyOperator.class | Bin 0 -> 5961 bytes ...torWithKRaftTest$MockKafkaReconciler.class | Bin 0 -> 6712 bytes .../KafkaAssemblyOperatorWithKRaftTest.class | Bin 0 -> 7949 bytes ...semblyOperatorWithPoolsKRaftMockTest.class | Bin 0 -> 8173 bytes ...fkaAssemblyOperatorWithPoolsMockTest.class | Bin 0 -> 8442 bytes ...mblyOperator$MockReconciliationState.class | Bin 0 -> 5905 bytes ...hPoolsTest$MockKafkaAssemblyOperator.class | Bin 0 -> 6259 bytes ...torWithPoolsTest$MockKafkaReconciler.class | Bin 0 -> 6649 bytes ...ithPoolsTest$MockZooKeeperReconciler.class | Bin 0 -> 6188 bytes .../KafkaAssemblyOperatorWithPoolsTest.class | Bin 0 -> 7909 bytes .../KafkaBridgeAssemblyOperatorTest.class | Bin 0 -> 7350 bytes .../assembly/KafkaClusterCreatorTest.class | Bin 0 -> 9174 bytes .../operator/assembly/KafkaConnectApiIT.class | Bin 0 -> 7938 bytes .../assembly/KafkaConnectApiImplTest.class | Bin 0 -> 7387 bytes ...nnectApiMockTest$MockKafkaConnectApi.class | Bin 0 -> 5583 bytes .../assembly/KafkaConnectApiMockTest.class | Bin 0 -> 8602 bytes ...mblyOperatorConnectorAutoRestartTest.class | Bin 0 -> 8836 bytes ...KafkaConnectAssemblyOperatorMockTest.class | Bin 0 -> 8012 bytes ...fkaConnectAssemblyOperatorPodSetTest.class | Bin 0 -> 8181 bytes ...ConnectBuildAssemblyOperatorKubeTest.class | Bin 0 -> 7066 bytes ...ctBuildAssemblyOperatorOpenShiftTest.class | Bin 0 -> 7109 bytes .../assembly/KafkaConnectMigrationTest.class | Bin 0 -> 8668 bytes .../assembly/KafkaConnectRollerTest.class | Bin 0 -> 7667 bytes .../operator/assembly/KafkaConnectorIT.class | Bin 0 -> 8824 bytes .../KafkaExporterReconcilerTest.class | Bin 0 -> 6860 bytes ...rIPTest$MockKafkaListenersReconciler.class | Bin 0 -> 5967 bytes ...KafkaListenerReconcilerClusterIPTest.class | Bin 0 -> 8210 bytes ...cerTest$MockKafkaListenersReconciler.class | Bin 0 -> 6161 bytes ...oncilerSkipBootstrapLoadBalancerTest.class | Bin 0 -> 8774 bytes .../KafkaMetadataStateManagerTest.class | Bin 0 -> 10107 bytes ...mblyOperatorConnectorAutoRestartTest.class | Bin 0 -> 6895 bytes ...MirrorMaker2AssemblyOperatorMockTest.class | Bin 0 -> 7822 bytes ...rrorMaker2AssemblyOperatorPodSetTest.class | Bin 0 -> 8058 bytes ...KafkaMirrorMakerAssemblyOperatorTest.class | Bin 0 -> 7103 bytes ...ceAssemblyOperatorTest$StateMatchers.class | Bin 0 -> 5199 bytes .../KafkaRebalanceAssemblyOperatorTest.class | Bin 0 -> 16992 bytes ...alanceStateMachineTest$StateMatchers.class | Bin 0 -> 5032 bytes .../KafkaRebalanceStateMachineTest.class | Bin 0 -> 24990 bytes .../assembly/KafkaRebalanceStatusTest.class | Bin 0 -> 10059 bytes ...aftMigrationTest$MockKafkaReconciler.class | Bin 0 -> 6240 bytes .../KafkaReconcilerKRaftMigrationTest.class | Bin 0 -> 6780 bytes ...afkaReconcilerFailsWithVersionUpdate.class | Bin 0 -> 5740 bytes ...sTest$MockKafkaReconcilerStatusTasks.class | Bin 0 -> 5964 bytes .../assembly/KafkaReconcilerStatusTest.class | Bin 0 -> 7712 bytes ...adeDowngradeTest$MockKafkaReconciler.class | Bin 0 -> 5640 bytes .../KafkaReconcilerUpgradeDowngradeTest.class | Bin 0 -> 6118 bytes ...est$MockFailingKafkaAssemblyOperator.class | Bin 0 -> 5804 bytes ...ckInitialStatusKafkaAssemblyOperator.class | Bin 0 -> 5730 bytes ...est$MockWorkingKafkaAssemblyOperator.class | Bin 0 -> 5712 bytes .../operator/assembly/KafkaStatusTest.class | Bin 0 -> 8449 bytes .../KafkaUpgradeDowngradeMockTest.class | Bin 0 -> 8749 bytes ...fkaUpgradeDowngradeWithKRaftMockTest.class | Bin 0 -> 8182 bytes .../assembly/ManualPodCleanerTest.class | Bin 0 -> 8288 bytes .../assembly/MetricsAndLoggingUtilsTest.class | Bin 0 -> 9353 bytes .../assembly/OperatorMetricsTest$Foo.class | Bin 0 -> 6158 bytes .../OperatorMetricsTest$MyResource.class | Bin 0 -> 4952 bytes ...MetricsTest$ReconcileAllMockOperator.class | Bin 0 -> 6475 bytes .../assembly/OperatorMetricsTest.class | Bin 0 -> 9195 bytes .../PartialRollingUpdateMockTest.class | Bin 0 -> 8789 bytes .../operator/assembly/PvcReconcilerTest.class | Bin 0 -> 9342 bytes .../ReconcilerUtilsTest$MockJmxCluster.class | Bin 0 -> 5478 bytes .../assembly/ReconcilerUtilsTest.class | Bin 0 -> 8745 bytes .../ReconnectingWatcherMockTest.class | Bin 0 -> 8925 bytes .../assembly/StrimziPodSetControllerIT.class | Bin 0 -> 8509 bytes .../StrimziPodSetControllerMockTest.class | Bin 0 -> 9856 bytes .../TestingConnector$TestingTask.class | Bin 0 -> 7300 bytes .../operator/assembly/TestingConnector.class | Bin 0 -> 8049 bytes .../operator/assembly/TolerationsIT.class | Bin 0 -> 5028 bytes .../assembly/ZooKeeperEraserTest.class | Bin 0 -> 7609 bytes .../ZooKeeperVersionChangeCreatorTest.class | Bin 0 -> 11501 bytes ...igrationTest$MockZooKeeperReconciler.class | Bin 0 -> 5966 bytes ...ookeeperReconcilerKRaftMigrationTest.class | Bin 0 -> 6613 bytes .../resource/KafkaAgentClientTest.class | Bin 0 -> 5644 bytes .../KafkaAvailabilityTest$KSB$BSB.class | Bin 0 -> 4905 bytes .../KafkaAvailabilityTest$KSB$TSB$PSB.class | Bin 0 -> 5958 bytes .../KafkaAvailabilityTest$KSB$TSB.class | Bin 0 -> 6264 bytes .../resource/KafkaAvailabilityTest$KSB.class | Bin 0 -> 7929 bytes .../resource/KafkaAvailabilityTest.class | Bin 0 -> 6139 bytes .../KafkaBrokerConfigurationDiffTest.class | Bin 0 -> 10490 bytes ...kaBrokerLoggingConfigurationDiffTest.class | Bin 0 -> 14168 bytes .../resource/KafkaQuorumCheckTest.class | Bin 0 -> 9812 bytes .../KafkaRollerTest$TestingKafkaRoller.class | Bin 0 -> 8345 bytes .../operator/resource/KafkaRollerTest.class | Bin 0 -> 12871 bytes ...KeeperRollerTest$MockZooKeeperRoller.class | Bin 0 -> 5878 bytes .../resource/ZooKeeperRollerTest.class | Bin 0 -> 8996 bytes .../ZookeeperLeaderFinderTest$FakeZk.class | Bin 0 -> 5734 bytes ...derTest$TestingZookeeperLeaderFinder.class | Bin 0 -> 6481 bytes .../resource/ZookeeperLeaderFinderTest.class | Bin 0 -> 8448 bytes .../resource/ZookeeperScalerTest.class | Bin 0 -> 7650 bytes .../CruiseControlClientTest.class | Bin 0 -> 11896 bytes .../cruisecontrol/MockCruiseControl.class | Bin 0 -> 7465 bytes .../cruisecontrol/PathBuilderTest.class | Bin 0 -> 7648 bytes .../KubernetesRestartEventPublisherIT.class | Bin 0 -> 9257 bytes .../KubernetesRestartEventPublisherTest.class | Bin 0 -> 9532 bytes ...rtEventsMockTest$OverridingClusterCa.class | Bin 0 -> 5151 bytes .../KubernetesRestartEventsMockTest.class | Bin 0 -> 11101 bytes .../AbstractCustomResourceOperatorIT.class | Bin 0 -> 9334 bytes ...AbstractNamespacedResourceOperatorIT.class | Bin 0 -> 9248 bytes ...stractNamespacedResourceOperatorTest.class | Bin 0 -> 10948 bytes ...tractNonNamespacedResourceOperatorIT.class | Bin 0 -> 6717 bytes ...actNonNamespacedResourceOperatorTest.class | Bin 0 -> 11649 bytes .../AbstractReadyResourceOperatorTest.class | Bin 0 -> 12268 bytes .../kubernetes/BuildConfigOperatorTest.class | Bin 0 -> 6958 bytes .../kubernetes/BuildOperatorTest.class | Bin 0 -> 5309 bytes .../ClusterRoleBindingOperatorIT.class | Bin 0 -> 5900 bytes .../ClusterRoleBindingOperatorTest.class | Bin 0 -> 6795 bytes .../kubernetes/ClusterRoleOperatorIT.class | Bin 0 -> 5277 bytes .../kubernetes/ClusterRoleOperatorTest.class | Bin 0 -> 6501 bytes .../kubernetes/ConfigMapOperatorTest.class | Bin 0 -> 6462 bytes .../DeploymentConfigOperatorTest.class | Bin 0 -> 6222 bytes .../kubernetes/DeploymentOperatorTest.class | Bin 0 -> 6331 bytes .../kubernetes/EndpointOperatorTest.class | Bin 0 -> 5274 bytes .../kubernetes/ImageStreamOperatorTest.class | Bin 0 -> 5772 bytes .../kubernetes/IngressOperatorTest.class | Bin 0 -> 8643 bytes .../kubernetes/KafkaBridgeCrdOperatorIT.class | Bin 0 -> 6957 bytes .../KafkaConnectCrdOperatorIT.class | Bin 0 -> 6827 bytes .../KafkaConnectorCrdOperatorIT.class | Bin 0 -> 6939 bytes .../kubernetes/KafkaCrdOperatorIT.class | Bin 0 -> 6739 bytes .../kubernetes/KafkaCrdOperatorTest.class | Bin 0 -> 9966 bytes .../KafkaMirrorMaker2CrdOperatorIT.class | Bin 0 -> 7107 bytes .../KafkaMirrorMakerCrdOperatorIT.class | Bin 0 -> 7181 bytes .../resource/kubernetes/NodeOperatorIT.class | Bin 0 -> 4583 bytes .../kubernetes/NodeOperatorTest.class | Bin 0 -> 5778 bytes .../PodDisruptionBudgetOperatorTest.class | Bin 0 -> 7549 bytes .../kubernetes/PodOperatorMockTest.class | Bin 0 -> 5248 bytes .../resource/kubernetes/PodOperatorTest.class | Bin 0 -> 5170 bytes .../resource/kubernetes/PvcOperatorTest.class | Bin 0 -> 9823 bytes .../kubernetes/RoleBindingOperatorIT.class | Bin 0 -> 5647 bytes .../kubernetes/RoleBindingOperatorTest.class | Bin 0 -> 7412 bytes .../resource/kubernetes/RoleOperatorIT.class | Bin 0 -> 5024 bytes .../kubernetes/RoleOperatorTest.class | Bin 0 -> 6770 bytes .../kubernetes/RouteOperatorTest.class | Bin 0 -> 5550 bytes .../ScalableResourceOperatorTest.class | Bin 0 -> 2212 bytes .../kubernetes/SecretOperatorTest.class | Bin 0 -> 6327 bytes .../kubernetes/ServiceAccountOperatorIT.class | Bin 0 -> 7024 bytes .../ServiceAccountOperatorTest.class | Bin 0 -> 10775 bytes .../kubernetes/ServiceOperatorIT.class | Bin 0 -> 5466 bytes .../kubernetes/ServiceOperatorTest.class | Bin 0 -> 10387 bytes .../kubernetes/StatefulSetDiffTest.class | Bin 0 -> 10711 bytes .../kubernetes/StatefulSetOperatorTest.class | Bin 0 -> 10053 bytes .../StatefulSetRollingUpdateTest.class | Bin 0 -> 10138 bytes .../kubernetes/StorageClassOperatorIT.class | Bin 0 -> 5205 bytes .../kubernetes/StorageClassOperatorTest.class | Bin 0 -> 7616 bytes .../StrimziPodSetCrdOperatorIT.class | Bin 0 -> 10020 bytes .../test/resources/current-kafka-broker.conf | 202 +++ .../test/resources/desired-kafka-broker.conf | 55 + ...nityAndTolerations-DeploymentAffinity.yaml | 18 + ...yAndTolerations-DeploymentTolerations.yaml | 9 + ...Test.withAffinityAndTolerations-Kafka.yaml | 44 + ...terTest.withAffinityWithoutRack-Kafka.yaml | 32 + ...kaClusterTest.withAffinityWithoutRack.yaml | 18 + ...ClusterTest.withRackAndAffinity-Kafka.yaml | 34 + .../KafkaClusterTest.withRackAndAffinity.yaml | 29 + ...ithRackAndAffinityWithMoreTerms-Kafka.yaml | 40 + ...Test.withRackAndAffinityWithMoreTerms.yaml | 37 + ...terTest.withRackWithoutAffinity-Kafka.yaml | 14 + ...kaClusterTest.withRackWithoutAffinity.yaml | 16 + ...afkaClusterTest.withTolerations-Kafka.yaml | 23 + .../KafkaClusterTest.withTolerations.yaml | 9 + ...ClusterTest.withAffinity-KafkaConnect.yaml | 25 + ...lusterTest.withAffinity-StrimziPodSet.yaml | 18 + ...sterTest.withTolerations-KafkaConnect.yaml | 16 + ...terTest.withTolerations-StrimziPodSet.yaml | 9 + ...erTest.withAffinity-KafkaMirrorMaker2.yaml | 27 + ...lusterTest.withAffinity-StrimziPodSet.yaml | 18 + ...est.withTolerations-KafkaMirrorMaker2.yaml | 18 + ...terTest.withTolerations-StrimziPodSet.yaml | 9 + ...cOperatorTest.withAffinity-Deployment.yaml | 18 + .../TopicOperatorTest.withAffinity-Kafka.yaml | 31 + ...okeeperClusterTest.withAffinity-Kafka.yaml | 27 + .../ZookeeperClusterTest.withAffinity.yaml | 18 + ...eperClusterTest.withTolerations-Kafka.yaml | 18 + .../ZookeeperClusterTest.withTolerations.yaml | 9 + .../strimzi/operator/cluster/model/fbfd.json | 38 + .../CC-Broker-not-exist.json | 5 + ...Rebalance-NotEnoughValidWindows-error.json | 1 + .../CC-Rebalance-bad-goals-error.json | 1 + .../CC-Rebalance-no-goals-in-progress.json | 1 + .../CC-Rebalance-no-goals-verbose.json | 1 + .../CC-Rebalance-no-goals.json | 1 + .../CC-State-proposal-not-ready.json | 1 + .../CruiseControlJSON/CC-State-verbose.json | 1 + .../assembly/CruiseControlJSON/CC-State.json | 1 + .../assembly/CruiseControlJSON/CC-Stop.json | 1 + ...C-User-task-rebalance-no-goals-Active.json | 1 + ...ser-task-rebalance-no-goals-completed.json | 1 + ...r-task-rebalance-no-goals-inExecution.json | 1 + ...ask-rebalance-no-goals-verbose-Active.json | 1 + ...-rebalance-no-goals-verbose-completed.json | 1 + ...ebalance-no-goals-verbose-inExecution.json | 1 + ...User-task-status-completed-with-error.json | 1 + .../CC-User-task-status-empty.json | 1 + .../CC-User-task-status-fetch-error.json | 1 + .../cluster/operator/assembly/clients-ca.crt | 19 + .../cluster/operator/assembly/clients-ca.key | 28 + .../cluster/operator/assembly/cluster-ca.crt | 19 + .../cluster/operator/assembly/cluster-ca.key | 28 + .../kafka-versions-duplicates.yaml | 62 + .../kafka-versions-nodefault.yaml | 53 + .../kafka-versions-twodefaults.yaml | 53 + .../kafka-versions/kafka-versions-valid.yaml | 55 + .../src/test/resources/log4j2-test.properties | 27 + ...-operator-helm-3-chart-0.43.0-snapshot.tgz | Bin 0 -> 134588 bytes 604 files changed, 8410 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/maven-settings.xml create mode 100644 .devcontainer/settings.xml create mode 100644 cluster-operator/bin/Makefile create mode 100644 cluster-operator/bin/pom.xml create mode 100755 cluster-operator/bin/scripts/cluster_operator_run.sh create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperatorConfig$ClusterOperatorConfigBuilder.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperatorConfig.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/Main.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/PlatformFeaturesAvailability.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ShutdownHook.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManager.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerConfig.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/AbstractConfiguration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/AbstractModel.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/AuthenticationUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CertUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ClusterCa.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ConfigMapUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ContainerUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CruiseControl$CruiseControlUser.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/DefaultSharedEnvironmentProvider.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/DnsNameGenerator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ImagePullPolicy.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/JvmOptionUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KRaftUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeAdminClientConfiguration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeConsumerConfiguration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeProducerConfiguration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBrokerConfigurationBuilder.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConfiguration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuildUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectConfiguration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectDockerfile$Cmd.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectDockerfile.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectorConfiguration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaListenerCustomAuthConfiguration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMetadataConfigurationState.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Configuration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Connectors.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerCluster.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerConsumerConfiguration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerProducerConfiguration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaPool.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaSpecChecker.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaUpgradeException.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion$Lookup.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion$UnsupportedKafkaVersionException.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersionChange.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ListenersUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ListenersValidator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/MetricsAndLogging.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ModelUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NetworkPolicyUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NoImageException.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NoSuchResourceException.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NodeRef.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PersistentVolumeClaimUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodDisruptionBudgetUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodRevision.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodSetUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ProbeUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/Quantities.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RbacUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RestartReason.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RestartReasons.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ServiceAccountUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ServiceUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/SharedEnvironmentProvider$EnvVarName.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/SharedEnvironmentProvider.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/StorageDiff.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/StorageUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/UnsupportedVersionException.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/VolumeUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/WorkloadUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ZooKeeperSpecChecker.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ZookeeperConfiguration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/BrokerCapacity.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/Capacity$ResourceRequirementType.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/Capacity.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CpuCapacity.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlConfiguration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlMetricsReporter.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/DiskCapacity.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/jmx/JmxModel.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/jmx/SupportsJmx.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/LoggingModel.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/LoggingUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/SupportsLogging.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/metrics/MetricsModel.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/metrics/SupportsMetrics.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdAssignment.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdAssignor.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRange$IdRange.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRange$InvalidNodeIdRangeException.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRange.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodePoolUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/VirtualNodePoolConverter.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/ContainerSecurityProviderContextImpl.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderContextImpl.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderFactory.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/VertxUtil.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractAssemblyOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperator$ConnectorStatusAndConditions.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperator$UnableToAcquireLockException.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/BrokersInUseCheck.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CaReconciler$CaReconciliationResult.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CaReconciler.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectBuildOperator$BuildInfo.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectBuildOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectOperatorMetricsHolder.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectRestException.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CruiseControlReconciler.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/DefaultKafkaQuotasManager.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/EntityOperatorReconciler.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftMetadataManager.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftMigrationUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftVersionChangeCreator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator$ReconciliationState.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMetricsHolder.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaBridgeAssemblyOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreator$KafkaAndNodePools.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApi.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiImpl.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectMigration.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectRoller.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaExporterReconciler.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenersReconciler$ReconciliationResult.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenersReconciler.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMetadataStateManager.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperator$ConnectorsComparatorByName.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMakerAssemblyOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperator$CruiseControlIssues.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperator$MapAndStatus.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconciler.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ManualPodCleaner.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/MetricsAndLoggingUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/Operator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/PvcReconciler.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconnectingWatcher.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodCounter.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodEventHandler.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodSetEventHandler.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$SimplifiedReconciliation.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/VersionChangeCreator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperEraser.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperReconciler.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperVersionChangeCreator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/BrokerState.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ConcurrentDeletionException.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultKafkaAgentClientProvider.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultZooKeeperAdminProvider.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultZookeeperScalerProvider.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/HttpClientUtils.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KRaftMigrationState.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClient.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClientProvider.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailability.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerConfigurationDiff.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiff$LoggingLevel.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiff$LoggingLevelResolver.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiff.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaQuorumCheck.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$FatalProblem.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$ForceableProblem.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$RestartContext.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$UnforceableProblem.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ResourceOperatorSupplier.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperAdminProvider.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller$ZookeeperClusterRollContext.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller$ZookeeperPodContext.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperLeaderFinder.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScaler.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalerProvider.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalingException.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AbstractRebalanceOptions$AbstractRebalanceOptionsBuilder.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AbstractRebalanceOptions.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AddBrokerOptions$AddBrokerOptionsBuilder.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AddBrokerOptions.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlApi.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlApiImpl.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlRebalanceResponse.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlResponse.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlRestException.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlRetriableConnectionException.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/PathBuilder.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RebalanceOptions$RebalanceOptionsBuilder.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RebalanceOptions.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RemoveBrokerOptions$RemoveBrokerOptionsBuilder.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RemoveBrokerOptions.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventPublisher.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNamespacedResourceOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractReadyNamespacedResourceOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractResourceOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractScalableNamespacedResourceOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractWatchableNamespacedResourceOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractWatchableStatusedNamespacedResourceOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildConfigOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ConfigMapOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/CrdOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentConfigOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/EndpointOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ImageStreamOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/IngressOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NetworkPolicyOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodDisruptionBudgetOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PvcOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ResourceSupport.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RouteOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/SecretOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetDiff.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StorageClassOperator.class create mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StrimziPodSetOperator.class create mode 100644 cluster-operator/bin/src/main/resources-filtered/.properties create mode 100644 cluster-operator/bin/src/main/resources/cluster-roles/031-ClusterRole-strimzi-entity-operator.yaml create mode 100644 cluster-operator/bin/src/main/resources/default-logging/CruiseControl.properties create mode 100644 cluster-operator/bin/src/main/resources/default-logging/EntityTopicOperator.properties create mode 100644 cluster-operator/bin/src/main/resources/default-logging/EntityUserOperator.properties create mode 100644 cluster-operator/bin/src/main/resources/default-logging/KafkaBridgeCluster.properties create mode 100644 cluster-operator/bin/src/main/resources/default-logging/KafkaCluster.properties create mode 100644 cluster-operator/bin/src/main/resources/default-logging/KafkaConnectCluster.properties create mode 100644 cluster-operator/bin/src/main/resources/default-logging/KafkaMirrorMaker2Cluster.properties create mode 100644 cluster-operator/bin/src/main/resources/default-logging/KafkaMirrorMakerCluster.properties create mode 100644 cluster-operator/bin/src/main/resources/default-logging/ZookeeperCluster.properties create mode 100644 cluster-operator/bin/src/main/resources/kafka-3.6.0-config-model.json create mode 100644 cluster-operator/bin/src/main/resources/kafka-3.6.1-config-model.json create mode 100644 cluster-operator/bin/src/main/resources/kafka-3.6.2-config-model.json create mode 100644 cluster-operator/bin/src/main/resources/kafka-3.7.0-config-model.json create mode 100644 cluster-operator/bin/src/main/resources/kafka-3.7.1-config-model.json create mode 100644 cluster-operator/bin/src/main/resources/log4j2.properties create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ClusterOperatorConfigTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ClusterOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/JSONObjectMatchers.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/KafkaVersionTestUtils.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/PlatformFeaturesAvailabilityTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ResourceUtils.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ShutdownHookTest$MyVerticle.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ShutdownHookTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/TestUtils.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerConfigTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AbstractConfigurationTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AbstractModelTest$Model.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AbstractModelTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AuthenticationUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/CertUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ClusterCaRenewalTest$MockedClusterCa.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ClusterCaRenewalTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ClusterCaTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest$ModelWithMetricsAndLogging.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest$ModelWithoutMetricsAndLogging.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ContainerUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/DnsNameGeneratorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/EntityTopicOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/EntityUserOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/JvmOptionUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KRaftUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaBrokerConfigurationBuilderTest$IsEquivalent.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaBrokerConfigurationBuilderTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterMigrationTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterOAuthValidationTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterPodSetTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterWithKRaftTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterWithPoolsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConfigurationTests.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectDockerfileTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ConnectorsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerClusterTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaPoolTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaSpecCheckerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaSpecCheckerWithNodePoolsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaVersionTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ListenersUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ListenersValidatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/MockSharedEnvironmentProvider.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsResourcesTest$ResourcesCombo.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsResourcesTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/NetworkPolicyUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/NodePoolUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PersistentVolumeClaimUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodDisruptionBudgetUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodRevisionTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodSetUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ProbeUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/QuantitiesTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/RbacUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ResourceTester.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/RestartReasonTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ServiceAccountUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ServiceUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/StatusDiffTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/StorageDiffTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/StorageUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/TestConfiguration.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/TestConfigurationWithoutDefaults.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/VolumeUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/WorkloadUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ZooKeeperSpecCheckerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ZookeeperClusterPodSetTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ZookeeperClusterTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlMetricsReporterTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/jmx/JmxModelTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/logging/LoggingModelTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/logging/LoggingUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/metrics/MetricsModelTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/NodeIdAssignorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRangeTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/VirtualNodePoolConverterTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/securityprofiles/BaselinePodSecurityProviderTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderFactoryTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/securityprofiles/RestrictedPodSecurityProviderTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/VertxUtilTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperatorAutoRestartTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperatorTest$DefaultOperator.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperatorTest$DefaultWatchableStatusedResourceOperator.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractResourceStateMatchers.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/BrokersInUseCheckTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CaReconcilerTest$MockCaReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CaReconcilerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CertificateRenewalTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectCluster.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectorMockTest$ConnectorStatus.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectorMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CruiseControlReconcilerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/DefaultKafkaQuotasManagerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/EntityOperatorReconcilerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/JbodStorageMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftMetadataManagerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftMigrationMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftVersionChangeCreatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorCustomCertMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockKafkaAssemblyOperator$MockReconciliationState.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockKafkaAssemblyOperator.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockKafkaReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockZooKeeperReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMetricsHolderTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNodePoolWatcherTest$MockKafkaAssemblyOperator.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNodePoolWatcherTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNonParametrizedTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockKafkaAssemblyOperator$MockReconciliationState.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockKafkaAssemblyOperator.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockKafkaReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockZooKeeperReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorTest$Params.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaAssemblyOperator$MockReconciliationState.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaAssemblyOperator.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsKRaftMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaAssemblyOperator$MockReconciliationState.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaAssemblyOperator.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockZooKeeperReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaBridgeAssemblyOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiImplTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiMockTest$MockKafkaConnectApi.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorConnectorAutoRestartTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorPodSetTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectBuildAssemblyOperatorKubeTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectBuildAssemblyOperatorOpenShiftTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectMigrationTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectRollerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaExporterReconcilerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerClusterIPTest$MockKafkaListenersReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerClusterIPTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerSkipBootstrapLoadBalancerTest$MockKafkaListenersReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerSkipBootstrapLoadBalancerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMetadataStateManagerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperatorConnectorAutoRestartTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperatorMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperatorPodSetTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMakerAssemblyOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperatorTest$StateMatchers.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStateMachineTest$StateMatchers.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStateMachineTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStatusTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerKRaftMigrationTest$MockKafkaReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerKRaftMigrationTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest$MockKafkaReconcilerFailsWithVersionUpdate.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest$MockKafkaReconcilerStatusTasks.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerUpgradeDowngradeTest$MockKafkaReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerUpgradeDowngradeTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockFailingKafkaAssemblyOperator.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockInitialStatusKafkaAssemblyOperator.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockWorkingKafkaAssemblyOperator.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaUpgradeDowngradeMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaUpgradeDowngradeWithKRaftMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ManualPodCleanerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/MetricsAndLoggingUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/OperatorMetricsTest$Foo.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/OperatorMetricsTest$MyResource.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/OperatorMetricsTest$ReconcileAllMockOperator.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/OperatorMetricsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/PartialRollingUpdateMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/PvcReconcilerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtilsTest$MockJmxCluster.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtilsTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconnectingWatcherMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetControllerIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetControllerMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TestingConnector$TestingTask.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TestingConnector.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TolerationsIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperEraserTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperVersionChangeCreatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZookeeperReconcilerKRaftMigrationTest$MockZooKeeperReconciler.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZookeeperReconcilerKRaftMigrationTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClientTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB$BSB.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB$TSB$PSB.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB$TSB.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerConfigurationDiffTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiffTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaQuorumCheckTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaRollerTest$TestingKafkaRoller.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaRollerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRollerTest$MockZooKeeperRoller.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRollerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZookeeperLeaderFinderTest$FakeZk.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZookeeperLeaderFinderTest$TestingZookeeperLeaderFinder.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZookeeperLeaderFinderTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalerTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlClientTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/MockCruiseControl.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/PathBuilderTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventPublisherIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventPublisherTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventsMockTest$OverridingClusterCa.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventsMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractCustomResourceOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNamespacedResourceOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNamespacedResourceOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractReadyResourceOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildConfigOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ConfigMapOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentConfigOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/EndpointOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ImageStreamOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/IngressOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaBridgeCrdOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaConnectCrdOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaConnectorCrdOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaCrdOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaCrdOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaMirrorMaker2CrdOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaMirrorMakerCrdOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodDisruptionBudgetOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperatorMockTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PvcOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RouteOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ScalableResourceOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/SecretOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetDiffTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetRollingUpdateTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StorageClassOperatorIT.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StorageClassOperatorTest.class create mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StrimziPodSetCrdOperatorIT.class create mode 100644 cluster-operator/bin/src/test/resources/current-kafka-broker.conf create mode 100644 cluster-operator/bin/src/test/resources/desired-kafka-broker.conf create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentAffinity.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentTolerations.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-Kafka.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack-Kafka.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity-Kafka.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms-Kafka.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity-Kafka.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations-Kafka.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-KafkaConnect.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-StrimziPodSet.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-KafkaConnect.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-StrimziPodSet.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-KafkaMirrorMaker2.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-StrimziPodSet.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-KafkaMirrorMaker2.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-StrimziPodSet.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Deployment.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Kafka.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity-Kafka.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations-Kafka.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations.yaml create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/fbfd.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Broker-not-exist.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-NotEnoughValidWindows-error.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-bad-goals-error.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-in-progress.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-verbose.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-proposal-not-ready.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-verbose.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Stop.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-Active.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-completed.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-inExecution.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-Active.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-completed.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-inExecution.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-completed-with-error.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-empty.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-fetch-error.json create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.crt create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.key create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.crt create mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.key create mode 100644 cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-duplicates.yaml create mode 100644 cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-nodefault.yaml create mode 100644 cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-twodefaults.yaml create mode 100644 cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-valid.yaml create mode 100644 cluster-operator/bin/src/test/resources/log4j2-test.properties create mode 100644 strimzi-kafka-operator-helm-3-chart-0.43.0-snapshot.tgz diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000000..906942ce248 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,40 @@ +# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.195.0/containers/java/.devcontainer/base.Dockerfile +# [Choice] Java version (use -bullseye variants on local arm64/Apple Silicon): 8, 11, 16, 8-bullseye, 11-bullseye, 16-bullseye, 8-buster, 11-buster, 16-buster +ARG VARIANT=11-bullseye +FROM mcr.microsoft.com/vscode/devcontainers/java:0-${VARIANT} + +ARG MAVEN_VERSION="" +RUN su vscode -c "umask 0002 && . /usr/local/sdkman/bin/sdkman-init.sh && sdk install maven \"${MAVEN_VERSION}\""; +COPY --chown=vscode:vscode settings.xml /home/vscode/.m2/ +COPY maven-settings.xml /usr/share/maven/ref/ + +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y install --no-install-recommends git openssh-client less iproute2 procps curl lsb-release exa wget unzip shellcheck ruby-full + +# Install helm +RUN curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \ + && chmod 700 get_helm.sh \ + && ./get_helm.sh + +# Install ASCIIDOCTOR +RUN gem install asciidoctor \ + && gem install asciidoctor-pdf + +# Clean up +RUN export DEBIAN_FRONTEND=noninteractive \ + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + +# Allow for a consistant java home location for settings - image is changing over time +RUN if [ ! -d "/docker-java-home" ]; then ln -s "${JAVA_HOME}" /docker-java-home; fi + +# [Optional] Uncomment this line to install global node packages. +# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1 + +# make docu_html +# make java_build or make MVN_ARGS='-DskipTests -DskipITs' all or mvn install -DskipTests -DskipITs +# make docker_build + +USER vscode +RUN curl -sS https://webi.sh/yq | sh \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000000..6af9666e137 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,44 @@ +// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.195.0/containers/java +{ + "name": "Java", + "build": { + "dockerfile": "Dockerfile", + "args": { + "java.home": "/docker-java-home", + "VARIANT": "17-bullseye", + // Options + "MAVEN_VERSION": "3.6.3", + "INSTALL_GRADLE": "false" + } + }, + // Add the IDs of extensions you want installed when the container is created. + "customizations": { + "vscode": { + "extensions": [ + "vscjava.vscode-java-pack", + "DotJoshJohnson.xml", + "ms-azuretools.vscode-docker", + "VisualStudioExptTeam.vscodeintellicode", + "vscjava.vscode-maven", + "vscjava.vscode-java-dependency", + "redhat.vscode-yaml", + "ms-vscode.makefile-tools" + ], + // Set *default* container specific settings.json values on container create. + "settings": { + "java.home": "/docker-java-home", + "maven.executable.path": "/usr/local/sdkman/candidates/maven/current/bin/mvn" + } + } + }, + "features": { + "ghcr.io/devcontainers/features/docker-in-docker:2": {} + }, + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "java -version", + // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode" +} \ No newline at end of file diff --git a/.devcontainer/maven-settings.xml b/.devcontainer/maven-settings.xml new file mode 100644 index 00000000000..50439abb029 --- /dev/null +++ b/.devcontainer/maven-settings.xml @@ -0,0 +1,6 @@ + + /usr/share/maven/ref/repository + \ No newline at end of file diff --git a/.devcontainer/settings.xml b/.devcontainer/settings.xml new file mode 100644 index 00000000000..98a19426835 --- /dev/null +++ b/.devcontainer/settings.xml @@ -0,0 +1,25 @@ + + + false + + + + github + ${env.GITHUB_ACTOR} + ${env.GITHUB_TOKEN} + + + cheetah-lib-processing-local-dev-repo + + 6000 + + + 5000 + 5000 + + + + + + + \ No newline at end of file diff --git a/cluster-operator/bin/Makefile b/cluster-operator/bin/Makefile new file mode 100644 index 00000000000..1607e4de9da --- /dev/null +++ b/cluster-operator/bin/Makefile @@ -0,0 +1,14 @@ +PROJECT_NAME=cluster-operator + +docker_build: java_build + +docker_tag: + +docker_push: + +all: docker_build docker_push +clean: java_clean + +include ../Makefile.maven + +.PHONY: build clean release diff --git a/cluster-operator/bin/pom.xml b/cluster-operator/bin/pom.xml new file mode 100644 index 00000000000..3abf384019d --- /dev/null +++ b/cluster-operator/bin/pom.xml @@ -0,0 +1,379 @@ + + + + io.strimzi + strimzi + 0.43.0-SNAPSHOT + + 4.0.0 + cluster-operator + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + + + + + + ${basedir}${file.separator}.. + + + + + io.strimzi + api + + + io.strimzi + config-model + + + io.strimzi + operator-common + + + io.fabric8 + openshift-client + runtime + + + io.fabric8 + openshift-client-api + + + io.fabric8 + kubernetes-client + runtime + + + io.fabric8 + kubernetes-httpclient-jdk + runtime + + + io.fabric8 + kubernetes-client-api + + + io.fabric8 + kubernetes-model-core + + + io.fabric8 + kubernetes-model-common + + + io.fabric8 + kubernetes-model-events + + + io.fabric8 + kubernetes-model-policy + + + io.fabric8 + kubernetes-model-rbac + + + io.fabric8 + kubernetes-model-apps + + + io.fabric8 + kubernetes-model-storageclass + + + io.fabric8 + kubernetes-model-networking + + + io.fabric8 + kubernetes-model-coordination + + + io.fabric8 + openshift-model + + + io.fabric8 + zjsonpatch + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.core + jackson-annotations + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + + + io.vertx + vertx-core + + + io.strimzi + certificate-manager + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-slf4j-impl + + + io.strimzi + kafka-oauth-server + + + io.strimzi + kafka-oauth-server-plain + + + io.strimzi + kafka-oauth-client + + + io.strimzi + kafka-oauth-common + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-params + test + + + org.hamcrest + hamcrest + test + + + io.vertx + vertx-junit5 + test + + + org.apache.kafka + connect-file + test + + + org.apache.kafka + connect-api + test + + + io.strimzi + strimzi-test-container + + + org.apache.kafka + connect-runtime + test + + + org.mockito + mockito-core + + + io.strimzi + test + test + + + io.strimzi + mockkube + + + io.strimzi + operator-common + tests + test-jar + test + + + com.github.spotbugs + spotbugs-annotations + + + org.apache.kafka + kafka-clients + + + + org.apache.kafka + kafka-server-common + + + org.apache.zookeeper + zookeeper + + + + org.apache.zookeeper + zookeeper-jute + + + io.netty + netty-transport + + + io.netty + netty-transport-native-epoll + linux-x86_64 + + + io.netty + netty-transport-native-epoll + linux-aarch_64 + + + io.micrometer + micrometer-core + + + io.micrometer + micrometer-registry-prometheus + + + io.vertx + vertx-micrometer-metrics + + + org.mock-server + mockserver-netty + ${mockserver.version} + test + + + org.mock-server + mockserver-core + ${mockserver.version} + test + + + org.mock-server + mockserver-client-java + ${mockserver.version} + test + + + + + + + org.apache.maven.plugins + maven-resources-plugin + ${maven.resources.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.version} + + + + true + true + io.strimzi.operator.cluster.Main + + + + + + org.apache.maven.plugins + maven-dependency-plugin + ${maven.dependency.version} + + + copy-dependencies + package + + + set-classpath + package + + + analyze + + analyze-only + + + true + + + io.fabric8:kubernetes-client + io.fabric8:openshift-client + io.fabric8:kubernetes-httpclient-jdk + + org.apache.logging.log4j:log4j-core + + org.apache.logging.log4j:log4j-slf4j-impl + + io.netty:netty-transport-native-epoll:jar + + org.apache.kafka:connect-file + + + + io.fabric8:kubernetes-model-common + + io.fabric8:kubernetes-model-coordination + + org.apache.zookeeper:zookeeper-jute + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.version} + + + make-dist-assembly + package + + + + + + + src/main/resources + + + + src/main/resources-filtered + true + + + .. + + kafka-versions.yaml + + + + + diff --git a/cluster-operator/bin/scripts/cluster_operator_run.sh b/cluster-operator/bin/scripts/cluster_operator_run.sh new file mode 100755 index 00000000000..675c8fb33f6 --- /dev/null +++ b/cluster-operator/bin/scripts/cluster_operator_run.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +set -e + +# Clean-up /tmp directory from files which might have remained from previous container restart +# We ignore any errors which might be caused by files injected by different agents which we do not have the rights to delete +rm -rfv /tmp/* || true + +export JAVA_CLASSPATH=$JAVA_CLASSPATH:lib/io.strimzi.@project.build.finalName@.@project.packaging@:@project.dist.classpath@ +export JAVA_MAIN=io.strimzi.operator.cluster.Main + +if [ -z "$KUBERNETES_SERVICE_DNS_DOMAIN" ]; then + KUBERNETES_SERVICE_DNS_DOMAIN=$(getent hosts kubernetes.default | head -1 | sed "s/.*\skubernetes.default.svc//" | sed "s/\.//") + if [ -n "$KUBERNETES_SERVICE_DNS_DOMAIN" ]; then + echo "Auto-detected KUBERNETES_SERVICE_DNS_DOMAIN: $KUBERNETES_SERVICE_DNS_DOMAIN" + export KUBERNETES_SERVICE_DNS_DOMAIN + else + echo "Auto-detection of KUBERNETES_SERVICE_DNS_DOMAIN failed. The default value cluster.local will be used." + fi +else + echo "KUBERNETES_SERVICE_DNS_DOMAIN is already set. Skipping auto-detection." +fi + +if [ -f /opt/strimzi/custom-config/log4j2.properties ]; then + # if ConfigMap was not mounted and thus this file was not created, use properties file from the classpath + export JAVA_OPTS="${JAVA_OPTS} -Dlog4j2.configurationFile=file:/opt/strimzi/custom-config/log4j2.properties" +else + echo "Configuration file log4j2.properties not found. Using default static logging setting. Dynamic updates of logging configuration will not work." +fi + +# Used to identify cluster operator instance when publishing events +if [[ -z "$STRIMZI_OPERATOR_NAME" ]]; then + STRIMZI_OPERATOR_NAME="$(cat /proc/sys/kernel/hostname)" + export STRIMZI_OPERATOR_NAME +fi + +export JAVA_OPTS="${JAVA_OPTS} -Dvertx.cacheDirBase=/tmp/vertx-cache" + +exec "${STRIMZI_HOME}/bin/launch_java.sh" diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..da4630a670a3a312e896df5d58d2328bb04dc1b9 GIT binary patch literal 9059 zcmeHNZBrCS5bi}_xzqT98sE)|DFu_)Nkn&O#iTBSZiT|h zSD5SPpRrYzcY}Nw3Agf_n-8j7uqY6D$E$@A7y0qHo!#g+soS8VipyhuDL-3y#+}HZ zUVHZb{fRk)`fNKWmADu-DC4sV539`K2KC#oc;@jgzXXC_C-9ful0jp3#{!Kj2!I{@ zl|@eZ-ukrb7Y*vMXINFrFz=Rp7S#k~xGwufS_QG^I0W%A4~VrSQMeenHaa{C{=-6! zIj+YS+zJ;484nFQxx$uL*jO0yO2J#NFO5N`>}lNqV9qNJ$SU8`%6KtmOc)2hrTAxD zAp$YOR=8-z7>F^pp#jdNW}F+XK$ly9T8MyjP9fbBZn4B$F)qXy`eATiRNQmCz+gp= z2Ed8|5-EUjTJSKa35VAeFkh=yJy$B}EL5r=1K+6)TYnrB=Xr!Rk3`^klI@HwO%vOo zc?eu5!ZH)QxD*Ji{=^!0YS<;%3ij3>P@bEs`4Nm|%3pOux8U(H-wz@dxq%&s?vZ#&o0T;jcPH6iJi47#wNSL0OH7hr z4e?;IrjvC!v}jQGcu?dfT{Gy&D-Sav_emdpX!PHG;!88}R(a8Kf=bo(lp?IE2%wot zc-zWm7Rua;)~no-06FQ_aFTX<9J8xj;BeY5gg!>b?uPBC76TW@hnB-YW3+pHR<$ED8r%%;ND3w%CeB1#AWn5H^z$y1STYVo-&lwwE{XgQQQiz1DMPBp)JN>;yQcuh0y zI6&+&ao9!5()reJkh!C5rPBbhL*2bGpPwGMGxemxPu!^4OyW@E9!}u{;c}xj%?8P4 z_Sze#T9GtFSsJ3;A-Y0&T>EM+<>VFA5gUH?QLR$oVu9gSNnY{=4)Ye7aOLwxXLnR~ zaRE5o`CYfXDGa4cH0aQvy%D;Gr3fcBA4hDdDBNAk?yOy3_~AafW%N8saT`|W(CD$z z9QFg}e&F0TA=;tyO`9U@2hKe>S?y4FX&h;$6UC(m{$Bzo>S=A$R5;!Ys>n%sUavIdk6 zIypwfqvle~aLIg$ydyl&DIiiP!kRlnagX&ObpSg$6{ zfLXgsOqxYmQ4Q&naFf19jad;SYy^|$VXcZ{yKLN~Cnz>IlQowNO>+LQFIYERK=)t&*S96v|rReOOhqV1yh$WrYk8bI3v>??E? zzk_(X32Ee8voC1qY5xb$>7&0D?Z^1-1r6cvI)0@@prRY}iR!yapMo=%@iV%NK1uyK z+B#~Nq*th4Xiy6p)GoSB!;m*d9oa-uZ&pZmG)RAFkPN!J1Npwxp#G^rCAvp>%(8Wc z;~IpQ8iWHhfmP|ENxF}g=o$Xrr(^Vh9+FLu=rPUF0xi-v^euf)Khn=spdu|(`9Ip1 B?mhqj literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperatorConfig$ClusterOperatorConfigBuilder.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperatorConfig$ClusterOperatorConfigBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..1b272c568063d8233ee7aeea90f62ab9f37ab549 GIT binary patch literal 5403 zcmeHLTW=IM6h00Mdm$wdE~S)$Nx5ve?7Z;Arm4beTM(1oNSj7NLLl#~vuiRl9@*Yd zc;-JT8-q9t>f<;AD?qBn1ZV)ImWRDkNj=;#&IKyhlA5M8anVt)`KZU7rW~7Oj-m2b}h}=QD*u5%acKpVI{)YoqO` zz1fc1Xgd~YPjXE|X=uQVH=qU)_^%NNMAPRlm)YV0bUWWR7o`*+ph&Ms|^z6!VkSLRW@qNBDRJ z&S#_BZv8xgGpDY3dyh?gy%RP0{GIK{iHcu7rC%y)@>x02!n6ICPw8zbea^yNQy|IY zoS5yl+gxewius?4ox1^Em)3^9zb1X*J>7LtAL1zcY{eVkK-x#E()=A=)kV6gWDvhi zEj&%VnPFmX;=A3ZrG3N(LTh~U$JbH%&c5Mcpt+j-Xvk5MS#h&~O@*{;O!VCyJ zPq8+|{!eR73CKXjB*XYZ1Dj(vd^u@t=gmqzl;KzM(N(9cPDtt?zT_$imh1n`X6=^gK$Rb?*7sZxD8k)MAWYIci9mY|q z#kIL3wSfzO6OjO%fq6Ixhp<#^LzKl*DD#sB~S literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperatorConfig.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperatorConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..3a46e282590d41d1df7a4385e843297cd52ce1cd GIT binary patch literal 11411 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/PlatformFeaturesAvailability.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/PlatformFeaturesAvailability.class new file mode 100644 index 0000000000000000000000000000000000000000..3ea39a007a7cb671f55ce673416561afd68b50d4 GIT binary patch literal 6706 zcmeHLOLH4V5bjZIuU0mBI8TxQn}mmyfCM4DVkh7j+YymtV>^Zz0<2bJY2tmTW=AfY zBURk_1>Ct)l>(~51rFrIfg1;I9QX@VQS|Jtq_sU+ttf@!z`-7A)cwsjJv}|${ot=} z?*qUUsB4fRFza)xQcDmRsVvOR%`6efRw`b-PWc4Rajzw)Pk^l9 zmuidIHT*Kd9J4NG4{fxnl)Dr~Rw?(H=Mp$vxv_gv0$CiXPy*-j6%-X)6EU%An^9Lx z6e_bV$ri=+Wmb0s>I9tL8k3d5m}cTCu01sE)u;xC2^{DeX@+x;XW=Lz7jC&|P|x0^ zHN*0pCfZft#*HTTsy21}%SKKQ_hDG3>w3bdQlq0GJi|1^c9Z7xzzjWPx~2?m)I)rc zdk*vIKbA_*T%L8=UH6ig%E34sAA=L{IC{V&bD6kG;Apbt)oflLQD{OyeIh4Lsy5JVnTZ0Ul&Jb3BS8PwQ$a z8HVSPe5(5LHU=3-A(Y@hIepROKAqXJXfwDk$(LiPGIau{cgCJs47c3~orMB{A5u8WfUhhXRBRw^E{iHZV=RqgyaTg{|L8-T?cP_J=Hx- zBSc_dzOb5wm&ov+DXg;6phk^aw#hNEX`0psrg+9#<`w-g$t<>$%wm*eo;7M7^$nTf zIHs@~hCl?m)x=~nj)0k2Q6{ZL`REsu@N&B3z?`PXg~3#*#s3mJ)5#t7@OWL}t^JAw zrzGf>=!F#swjTB#>@GkQXz@oOP59MOXx?RD)izkx=}KE zqUuaU-Z?JW2Dc}QyeS=d`GGBH#na{A2o04U5P&Fg1T%~Os zEXyt<&E&UAme*~C^zlmQL0!Kg=LE*eK+4Clu|hsR()${h%#4#FWE&m&3($J}=? zetZ1LJvjD#@aswZKZ0uj6yQ`a1BiAyrvHRO|4D`ZotVCXyfbhX@rDrlTn9m}6Eb*4 zf#Agup6kINuh9QIrhgtTbS&_EXZ@kh`Y$N-zv$>^uz^=X=F)PP&~jbgFDmqg1HG|O z3NFISs6`OrQVcbpnlk0%R7E%JTrb~{LjCC`~?8t!R-KM2;9nb z9Hvaj@EPl~P^d6BTBN^-P-R>*qjVT2MQ*qb+r7ec)X(yvQhNc+5jf|TBusY0t=(rl zHUt);tp^X*9}}oVk?MB2ZV@<}4;Qu#i}wfwksIKjYFl(AGlk{^E(~VxM2`z8*>1vH zcTr;Dj*!CKB`{lW>=2l{r#d`+_3bWNz{aNo_*zMI2+uhEX;IhD%Ll$p3k4I=RU4EH;Z zfPQRRKQ^sl%~#6< zh3xR3gyfwj-NdtDv%xJ(4ycfQwZ|#Li1v;mOw~}IJ#Y27)}q5taE(_8eDrzxc#2S7 zrk}o9J6xOnX?XpfDx~=VDK~P&bDSu~Q+y)fZISXP$gD55vd^@zEbMtiHzZaFU1Ug! z>-#a!9PPf^Ua#PJ3HkWDja5yS5$U)Ky|hi_=ZS>hq@dJb2`((c8F-7p#d>sDtp|Z< z*=oKVA%{LH(p|2%ZLSemiB!yzonh_`C+AF0f8CnAc8gx@4qK`ybqSC*&) z=Xv`Qv1N`cqv#!{8W+z7ADG7T=C&$y%GR|FP4=q8sQG!r~ zHMlxNxQ08j9vC2eRD#fQ2v$oKK7mii*3G?GS1(!j^u@YaxQ3E5@ELrLUx07$SweqZ NhY)VSSE&E%{{W{NTUh`A literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManager.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManager.class new file mode 100644 index 0000000000000000000000000000000000000000..a8a1947258fdd771bf96683084ff86b42cca5eba GIT binary patch literal 6128 zcmdT|TT>iG6h4h4%dQXz7!pxq2X7E{*Gs%*F;SLM~Jp}v* zzWWb+@gHc#Dt-6Ge`I-jW{2H{!Rf79O!Bfj({uVer_bqg{p+76e*nOjaIXL(1U5qD zRRWib$|Lu{t#DZhwc^1Kydv97xmv1<=SQJts^T-Z!4&hEr@0grCw{GWUe{gWHkm5G zD1oUM%6CPx@?iH7k`uV-JXl++ZxR@D9N9#|DuJt^c9l+G!WM7WT;Jbyy?p{DXEPGQ z-Srug&4yaGv#DxQgi#QK6}Na(xH?jdz!fL`u;eUDiE@kT9Ynf@Pk4fuR|}9@|L*Z`VN5~7o2aRU8V%nEUfvQ30-xDYe3Z89&c8=1~^tswfnTV zL*SREDNCTcKDe{R7sZ9vX}LuDRf} ztt8qk2yfF;al6H6gL%HIkf@E96fZlS=d#@KmU8MX<&L+MliQGb%RFsJ7E&QK4P5QD zs763`*hc5*1w>nxjWd>woaF)F6A5|HmP%7DspksAYnRdVXwM{tRLwk5El6TzMVkA0 zSVJOAB3K49swH))K5Da45s5l6F@vyFOaolT$6k~)kmZndqFfG@C0G*maf5 z2$(~E9|I=$xTax*IS74HpqE7+<|3NplZ8dfLmG(&+v9>Y%5)twlyRqcn}0;PIFS2{ zy66L~euPr-WCYC-=6N^N^Dh4&7p;dD19+0kmLu+C($BH7iSGf^E!m(=W@?g&pf_uQj5VLq34QS$07!(Y!Bfb5B#4(bDm~@6N z&i{1kem3_TShjF|G;H1WbBQ&*5@7|4H(^+;QoJOWcJIq36YTK{7MDJTqw{B`)zL$y zxNHocRdT=6x;V_ardEk?(CFXeVi@pG7c%|n@kDK%Lw`O3#|_Oh%Xv`!*IeN-KdFK1 zhaPLk#qfXI!Ah@IM3(8w3d^$Iu`8bJsv?`KU@4Xj!xGHF>*FvB6uaJq)BTU>ekL6Z zN*hstedD%iLJ3S`26Fu!S8?;+Ssc|Z9ujyszA!)0mU z0o}hlvd9Z9*fpBD!x+3v$ln(74(es+b3U8v_w+aqs-yFYMDa|iZ}fD}6%C)^IG{{G zSXkRihjyV19k+kLbu7z=1b!NpES53HDiq@6&Ob3oJC^wtf!{1-wux<~gT_H&PF}S< zm<>amJ8sEHd2E%NC^^?th+qxbsrBQ@OaVS8Q0OSD0JjNTK6SSXu!PgjRJ;P<_-^WC z>sf%W2u$?wkvKqIHq+Ah=ml6oi1Zp2V6|_wnjDG1_5~kvBm+?8Jn?c%_;0mr^#I;$tith=+HFz0U zZy`6srSv<@eK-B;uW!37~!1^gnA~z z;u#1xGZ5A@5Jup=GZ5a-Kxk$nRL(&7AOoSDfdKFk&>lUE7#+oW_&5XMFau!(KEXXB Z@F}d}|1?_qGx!3kIN!euUqcP*{{kU6(BA+6 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerConfig.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..68ddc634e3973ae960f5005fda17d62c902921da GIT binary patch literal 7958 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

0o#QjCtNwT%s>&gh(4=elj_hG}S? zVOy%*?Q#cv*>bhq^asq)Nk+MS?cTn&YFGvoT=L(wYU*}H2}MpbdK8B3uMTZ<(Bq6w zM`bFt?P@ba%ZyIJGhV?bD+FXuDb-fHRjju+i|d=kw%@H@EN!-%wXGV|+-YwrI~jT$ zloQR2E++J@)^3f|x&TAQkkOTq^sODZvRrE4R*G9~c(<6pxcHq`MGU!Kt5=HEl7iV4JwL5 z6`1k`MwdTahSB*%vcMGuOm(ckXa?ueE=NuHGQxS(FaD0vNhcQOh~XoFkC2zbb%L0& zv>tc+nvOs|q1(N_ZE?%1q7h8?D;9U^{2q6>B?Ok#TC4?3$4qUPn=Ye_s`~%XcHZ67 z9Ntl^q2bt84}4pWJv2JpVYI2vnn)TCBEv|J7(J~k6zl3@IU_$PmbPp14kLCKOZon= zSL=(#4h4^^cg6@^vkrIdfunQ05~(2ob^h|eaJbOfh0s}tYaPSlt_urx`It*meGG|Z z(-`tefhCvg1IO?V4lO^cZrPp2k!CQQ^LVdsY94QJXK3iWsO$E?Lhd;;)~XpwK>GAZ z8cEPYIu<^COdW%W)d4Y=ar)YFqu_TwS*IVGzjK6qt{!E7E9PMBtphMb(s7W z$FZFZHQC84+m@I)bI3cgh*txy!vxEHOpwWY?z3_(+uY-FhwG+@LK(5Wk06n+8g@S1 zCi0{0As?=TyuW8%l{+?fWy|*Dp62O$vIidiY9Cuwlm`Kv7dv5IsF$D48t7wSX*r&3 z*s`u!Vu)QXj|}-l;^XU&;8>C{sj_Fwn(Q6)c`loD@|aJTT()Ftu6rYP+`2i1JC)9# z2xULEE{Mn5M=KiQM~Er91zXM(p;Xg!xcN_EOF9Zn>Ea&-<{>kAK$yll*<&4-F55Xs z=qU0~aLgGU6B2}?X=~zGF-5+NgN&gYp6m{ADa7`Sdzv#4>d3*3Z{@mdxbnd2@OwDA zbn(enP3@bf(DvC@nuG~~Y^9%on%v82Kj@r#boBUMfZHltdD8af3y3I3E(hL^6 zPA2FRjh9pwrV>gOc{66hSvIX4y-2O&RHbj@`o1!GuN7C!Qz~|!>Y%sFou()kh`Y9} zYi3Jx41vSOMQ_hQb>R7#FSxP8I4E4GcmA8ny0AoVA%Tu|`q5QNqIbX^ zj~xHKNZ2B1^!$FuK+(C!Jh|S zjo>`+7bEyfv`k;2XJFSdeHHEE`L*!*_3-%(`ljFhEUo#^8~6}Ov`9Do_lxvAeapv1 zdcl8|=$8LfXx)EqgwNYl_VFFs^q(qK@XUd!N;PSjx-=ptG7{o{cLpwo-HxhJUq|t67gPy?f zW+DThL5H^!8Sc%%@IfL&m-Zr7ER6kNBv|ps1cof_lNmBRjoCc(WG{i?PdIYh&q)~XuL&A2kcaUXXh84bd6`bqkY1(N=tuMudV_vOzo1{yuj#k+ JdwQGR{V$vUu9g4* literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/AuthenticationUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/AuthenticationUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..3d727951c072c4cc3b2e84c517403f52efced91d GIT binary patch literal 12378 zcmeHNOLH5?5$>TSVF5{&CC82>KeCctHfcM6<2>vbG!uvdB}fZWCP2z!5;4QYkX&gW z@IGkC&cjJnE;*zshurfIa!FOHoGSb1s$B99@;h=$rDqoyEWJCsV+xX`L>G{|n6KZ{ zJ>8gp{O8lp0N`EtZ3SisEC#;WaH!=rZqhy4u)IbP`j+#N)$oSQr=jOJOgjof<~JN~ z!0bjV3U`?sS|$xG&s_^GJE*`R0#C$vo4PxVm93l13<(_XwR*Y;3$D( z;?$1kL+0=+p|8hXFay(Iep-S$e^-5#O=({#{Fb?&7) z7q4DUHIc`1hMphlmZzK4im%-su`eUsL1pfFw6HLG@3(n6&d|0@E7XGs zb0lU2OkjRwVy@Ja)Hge)TY(pW*SnZm`8T*qr!L?33E>pU zS~W?PIWeM#o=)}f&X7IKi=yEWb5d}P`Yu+4U>bT}q1(6UqHSTF+F!2jDe=BtCVa=; zqqa3z#aa^iCTrg|*^pP!60xM}^h}>RCEx?{lm=a`YIr8KnUw7w^(~5Ju~wDJebvTN zCMA#r^a16T@?7DOP{NbfaEFDv-awBXMMIVsMKP(_Vor1Vw(mJ{HRt;1`{OV^Heo5= zW`4kTF)#X#6$H2e;{B`_6E85Wikij5OKfyNzqEXx-Z3mpciE%JSI%Rq#2y4$r5h=& zb;k|a4lgB{V_JHZs@h5{l@_VVC5@*NeH6lB-LoS{o@>5B?RzMMRC0<`lkx&2g{ov^ zDOjZpNx>=!>%Ioc-T7czA>Z{PcPhD3NuB8}lKT1o-7sIjiKVVl*@9gF2+_eG%ZDR_< zG8}n5S9G`}@W!kmbyag?E~^QFXIC*>SPsJjj}=&`NQ*bj@sJATK4tX2)MTL$hfxSV zZ+nG2_9un$)|V-i1cQo$ZQ;h1gbr2$E9K9W5szlg`3af7K&+U@Ero5D)?5&HjU&eO*`p! zRjGNzYM8OWbavPuKZZ+|&)K-HYfg5+Bt3szr;0&HD5>-3fnLZ9XYOYz< z7yCN6PP|G{t3p~DypPxL%2h6%uVPy%^dj)OR1JPzrV(G%OZHYA!>f0xPcG5t#bM+k zbD3|MJ!bkW6iwUNoUv?j$ip#b+_MolFIzKj>?7KXuTte?<5XIKA%Q1z!l42_fy!tQ zQ31S@dRm$#E3il41?ksuVyVDwye!HivjQLC}5vPU1Uh6HdHkQCm@Jp!lUFn*%Q_%s7}_Y|tB=Ng=Wqp9a(_wCgYOawFXvEb#uWG(4Q633g`04GH3zqz!o3dPMlN-vF$0ZQa?Y1q zEaCe`4&F)O-#h?55cn#57cDjB|9!##kl_D=9R8o|!@n)?KNR>Q0{>19{tp7L!93p9 z9`j!i_zC|X<>3D!@KtERd4XRP_zC|DIrz`_;gcSv+}B;5F#On!v9M{Dl9t9Q;BGe;qai{wIp~3j$w-pTf@s z{zeXdGlzdKg{QD3@TMZ(P2mT?1b$oKC;K*!|L+BU26oWXGq4N4!M|rP8(44)9Pr=+ Q2q1zF;SPKZzl2}^7a|hFjsO4v literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CertUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CertUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..c0820a6d130cedbb83d87211e98f3a30837a0a47 GIT binary patch literal 10259 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 P@ENQ?1y*4l9)k4;DP2s5 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ConfigMapUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ConfigMapUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..0e3a497179f0bf4d4921ba1df04d7cff2167ae79 GIT binary patch literal 3672 zcmeHKTW`}a6h1B+X~WoH-0!B`Ixfu%PZY)-fs}&81`?01>ve|2j%;UK-uM~(5+o4t z&VK@Nl9bSDg%&X(1iYkia?axsDSVF({DN*&^eX9=<##K9;uvnVt( zdd=~u1s@qF+BhmT?!6_ga5|;GWf+2T-Jqhafm_{ z_7d`Pg4tQJ{%$h=OWUAUmGPQL+6dHp0!13jt=~9TRTq1=M7hBnBk-yb4(n3ur>p#G z$2!Bf%Nz6O-G|s^%7WFDl{JA6e=4^LyP^t*2>CQYCrlu|8#dmDvpuHuekZZNataaf zmvm~lxFxgkvZL(2{G5`1*L!djRl9uQ!7)6j6ngK$2|TM{5-A6aaDsIuoJCz;e7>m=SZg!X&ToB(w-4W^&F{^`|pGOrT>A_KVw+< f9~|L-x%98V;e6*Ka29`Oktu~b9EX$8fYV<9?Nq(0 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ContainerUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ContainerUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..9f965a02b472cf06dcf233bcb15693ab2783d0a5 GIT binary patch literal 9880 zcmeHN&2to05bw7Fv%3Vsw}^@lMBO0niXti-B7%uTClHfBmB-2K%jV&Htn-l~{t5mG z`~e<3c(n>kxqI{E-SY0;DlPlX?7p4N4w>E}v4ZBZ*_rL{>HfX$&iwrM!=C`)D%>%k z#9%56?1pPeuW`>>vl`NGgi#>fuVlmTh`@^cpkX_47>S_a`Yqu!Zunk=M!j2g1o0Oi6rWia^o4Cth&kf`?pu%9hPdgn1eo%(}Z2Z_AFA$;c ztce!4eYYbWE0Vs)JAuFK2sgaKtCgiy!CS(1tN@8Rmi>j*7W}OA>s@>6J$vh2d+Uk4 zXL-vPA@}@shpGA4aprw&?ACFHSrI{~&J{H+xiSn@$Ci+$5~>x`x2;WpbIl5* zg|k~a1#N@=?Q*NQrPSF=Jq8Ns9#d7-DwN^C80>|E435{#{@k2Cf~K0Q$4zX>Z^iDi z2$od185~I-47QR<_`5gvM5{7naLs(OVZVtA?Lc6`>KHJ1lw;bkv8M8}X)X?S+D$XB znQnH8Q8CgsB}spDK&8?O9PAVEF!`dowxg<Lbq@X8nI>G_+`d?p;Up_b!ZJpOuOPQc2t^`N0ooE}gBe&LGA}&~SO|ua4h@1F z{S*j|CP7>#%?f;^G}i0Ui4hG5Bdr-wl}VdHe4b_j%QZ$!%Q z0xSK#3o3d6whJnHNuFI@5CEgHRW!PG3xG}|ENPlzaCAd^q=1>hxg128&GaD2Xw^K>x!^`>P*~uf1u?%lA_K*<$ zL0byIl+c2vAuEtGWN`s~@y>^o*iX^=h{4I0z<=4hxExERtu81Mmu1Nu@mN(Ow$ z;IO{cgIxn|;M*@Lju|kGLUgZbz{mI|j55lASq6KPX4ZgD85|tMQ3K`}9LpOM47iOu zxD8u013qK0KQp}>usHBiPFgz*#^%yZ?h@{NLpTHYb`HJ?1W?6qdto1b8hCXH?=p4w z2Pl7jr20LKJ;JLJjN_-G0i->IpJOQ%9EKx!Re_^$45^Oe_Y#~)B%Mb|`|&!J^lXl# zi;1LCm;X7%okI{ENhwo8_?*hD`<5So1>FaIe@c*j$%Wx6i%GleF&)YeCe`>x8 zyaSiD-gmX$eulg^%+C&M{t{fl$dsT7OZfK`X3Zo_!8N!JAHfXVgipYPTQCm`{{T*s B-~j*t literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CruiseControl$CruiseControlUser.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CruiseControl$CruiseControlUser.class new file mode 100644 index 0000000000000000000000000000000000000000..aad94e369b833215c038251b3680045a5cb1a1b6 GIT binary patch literal 4855 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/DefaultSharedEnvironmentProvider.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/DefaultSharedEnvironmentProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..543b8e2bb198d684d8c0581013cae5dba28fb47b GIT binary patch literal 4036 zcmdT{ZExH}5S~4f_|6SU8z>Z7V4J>Opx6`&LL^iwC5T84t(s7Yk9+oBZX0{o+FhRr ze+-FA@QE+{D8#INr)v~fcB|8&ez4cKH~Z|&GcP;)&%b~C2>{>1R~~c-JTf{CGbUvC zl#N*^RA{Ug*>56LIoHf89mZ*4EZ1SC5}t84P@gw$Y4YA_)+C`sLc{>h`**WlWwa4r&EJoQL@yd zup(`OeEkJ6nre)sR#8UnNzVOV6<`fQRrECo?PYl?VqvK%Fb6T%B!*8BV=mGvoBCT+ z7+T1L4~67OK=(02UBHyf(i1A=SRHf9(9NUM2!3yomi)-fXiodN)XKOWsf0?Faf2KT zwaUs=aSotOg$aXw$hC1UbLo`{W3V8U&ZChq7Cm@^buO!Mj^C^N_FW-TEO9jwrvl-{ zFmvLfRTMo?X^I5|OO&Zm*zY|YbFHyr*ZldsHIAAFkyep^Uu$+!ugR_~>RE58;>^+p zMd!lXB7NABfL0D@CA3K67PyxWYw*@8oP)OsTVV1Rh5(+sri8Cu~TT%gRQe+uw>@-r>}h$!AR~<64-@j|*u<#`mxh zGXk}|?~eAeF+nB$Xc|D57I_`X9>zHhSZUPte9SBxqIukdjNMCU#~G zUl*UAqS7>Hw*7MKAy>vH96`gEaB$npG`ZB?pT2`#Y3EV8k})ILy! zj`$lA?w-2HReTdz-LE>Q zLu|SXTm_WIXBnRj@Suxh5AT;9@L>tR&%r9b-^7`_r5u3&4Ay?xIR86r{8h?b#PzUaLX9U5k1H pZldLNI(D2*rRBG3(C*ZrbzlqEbl_w76310!=M(r8LbwB8{0I6B11JCh literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/DnsNameGenerator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/DnsNameGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..11eabecc71a9810c329286cac8eb12de6e857492 GIT binary patch literal 5669 zcmeHL&2k$>5bjZorQIlT5OIK*BohUQ9blKgK#IR2v6Pg-R;nV|6erhscPve^yR$XB zGBL#yaO1=SP~13ifGVg8cWyic55a|^_XkU|Mn)pGaZ+5gyQAr^yTATsrgwk+^QQ*@ z@IG8CLV>`Ck#cOGiNLh$I6+{h=f19# zR3(@p#_DRIcqF|o?ovnkq3~ENWI#hDH$3h~?@-fdbvSjo<1vMkFqeC*&1qFgD<{eN zn_?bSHyY zQbyzLkniiHZ7jU6ac3G!e&`8D#5C%nPLRL=Dd{?>7n&(xeu0XJb_17hih#QoT|pHk zB&25EHWk5^yvHfSOge)I`F<6-IC|=HuJ8lcGu@YT)*$|FqPh+)pb;q znc{sOcce@6^_eettmmeZek$ceXLR>QfLh$-DoS`w+S5mD7PtGNBAlmcf7ufmuzf zmNaHF%h(Y#y8Z@NErz{T(jZEQd239G;eNjpX(ag)a2{5z5>kKLZ^dfs=#XG=bCe zT7@hS`0c<+JnX}lz?IL0=Q>Qe&FrN=-*R--D8b7FzI&87AaF*X9)ap$*>(96xHi@n zqm|2R1im_OswUqnE)1u=Ydx4v*;Nj|DU#!VcK5qv`bDG&Zw-7|%FX}+<(2H!vW0J< z5nKcU$MA#JF{r>3FpYN=D5lr5P)e^SaLfP`=N-qpH*sb%-~1WMpH@!(2&aC*rvf~M zztcDe5al%fmeYF^X5kDz8SpeblOtR~`vQ(-2+wK|E~N;`90GIjTyB?m?%AEw*j?3n zo`Va0o_n!V4MMHYb9IF0OB%bD)^l|N&(4l#174WGF5I!h{sS)eah22}<9J>Z@fVti zai1B1@RA1MOD)1HBM@{ke62;WMj+^7_*R2pfCYA6#e150Rg=Z{DMB*GfY&Fmd$40y SfH%;(fGgu|yiTF#tA7F2yU$+$ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..207a709ec65119458b6a2726aebb63f676773d4b GIT binary patch literal 9371 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 Sn0`t>r(e>q>9_P8J^wE){L+g6 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..d546eaca51e059d40cc576d1e37bca5d1bbd3f8a GIT binary patch literal 10730 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 vz?0}t_xJXyLPa>5#=}d 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 bHFDpd%C+DfM7E#@ALJ6yhIM!s-UI({F$8M_ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeAdminClientConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeAdminClientConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..80a5de2501d9222885b269c3f4ef5c368d6ffd7b GIT binary patch literal 536 zcmb7>%TB{E5Jj*1N?Qt)@>rA=J0v9h0R^N!5~(76s3}r+l}X*mkT{i-BEhGz-~;$5 z#54;esxDyT@wI2p%(Xwi-ai1`;><#h!Ap$KBcU{Z5-)cwm0OGkw?$mJj2=z24yg*roFW5q&)Ax|AG zoG{e4EilvuDoM!9^mQc@T!6Ca7xQSMh!QD_R1Rg*l`UPx-p_q4%i7P@1DsMU6XOs^ GIQ|CM6q7Fi literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.class new file mode 100644 index 0000000000000000000000000000000000000000..1b9a88bf97d990a7abdf96b7321b069f29af0b49 GIT binary patch literal 13611 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 Zcou#MzlPty^Y9|P1iypdW7PTMe*q8^C3OG* literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.class new file mode 100644 index 0000000000000000000000000000000000000000..dea4db2351e5db2ce11c241a3b23c69f1442c31b GIT binary patch literal 20654 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..594f94f9ecd5e77ed5b4ff8e23ae70f3f2494564 GIT binary patch literal 10062 zcmeHNTXWM!6h7+&d?64nrCb73(3=gd-1~(9n0```rK0*Zzb~&sw&l#7ZoK$iPfqY_GNZ?RUe*nO3sK+5j zV9^mqwoSQ}eN4A#mfKm!6}i_f`j z#bKI&HYrYS4JV?8y90{ArDCb3RTeAdds?NjS}E7c`Lf=qYn5uTTq1B<@6j}=wVtga zQEPpkz;VQITxz*>YIa!yk_0Yu3n{B>!rsKMj<8+ZuuXM~2?rSyxTu$x8!KA1np@Ty zg>q#jR~t-{fEj#l+UshYISyTCYReXF>iPyRX@%TUA(yX}D+!pz z!A;hpUDH(s>zLf=DM@XithOLrNqRmmLj=JMrI zty0!?)OkhIwR)~pYv6x{;xaxxqF0%m?1KE>1OMnPZgF>kz;arj)DlK5YCcmZFr7zx zi^CfPX1CW|6T%h=xJpj_bl(!pvCS>kR1CY_;bu?I3a<5<$=c3MC6%mgFr~>1lM3wA zp~fbzrgDwjYTw4yfsLzu8&`WaeoblG%uy`cRdC&n4aG$q_N2oM*N=m8s?u{*NlzV* z>ha<2jxAhCSuv<3=U8LPK$0C@wh>?Mo_+Dhk({Jk*X3p?yjQxT7r+AKR9su3iu<&~ zQpp4EBx6Vvj9xYzFUWX1Srt8bPZ_tU;1nZBDjAgs&oDIx+C2$QVitigsbqy2wqTeTGuQ%gapescq(N*iD7C zJML4-G@VhnqjW9Id$@&LBqmI~JyV*hGP=D-=UP#zDJKN&NixRpA~JF>=UtKc^q2{K z+7^s9eFM`yz1F>iHlwrzCKNJH*+b`;VzjWYbZptH%^e4mXRkL(l}bh=S}5!GNkyHq zXfn*tR)tK)T+SS{rk&CRmJ0g`Gy)mrHtJi0F^d=__5!4IAu%Ei-KEaPc&Lc3DtYWPt78gT>bBRIsL8TJp844ZHS7JltpDesnjXg&bQp%=-r)SM)mw2i8(rY@ecabRf$fvN_9?gsXW%s)f3`RN zb!?y8)jp472G1|z4Cu6Q2|q96h)>x-VfmNPmhb_OCSp$3>kblWUwvEM*-vi z4Ui>?I{0*m^jQx{GLf=-vV1;@M5cU9zJ!~@@$&&pZUv0L9KeLY0^AuQeKkbdW|9j) sQUj6lu+-P8T;Xj5EdXI503im;D1Qv@!hQTcfmTq2d$0m!_y(%~1KIBassI20 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.class new file mode 100644 index 0000000000000000000000000000000000000000..d9f04538b624ab8c2cb2eb79386d8bec6be697b6 GIT binary patch literal 9631 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.class new file mode 100644 index 0000000000000000000000000000000000000000..523beccc7cf760442907223a12473684fc27b2f2 GIT binary patch literal 14940 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..ea34ee8c1ecda50a436ea293068722a041091a0d GIT binary patch literal 516 zcmb7>OHRWu6h*K5OIr$*@);Bfi7^shKmn<=i4>83)D)?+$^D--+iB})mPXFGU z)3oZ1#D)%BZ0j$u-|gzf8p1$ds_e>+8m+XW)tZJU z_!qqJJD7nPc;`nkoZYpFLli6z3n5Hi*1PLZpU(Ltopbj5`rD5`1HgOmMhz+iK2A)~ zi6ja4wdn;iO)NLPNQYeZK4HUM*4Ik$z+Tb8E;mCV`GtNI z)}TsYC8v>0je0k>?;?i4nT%15K1_uSxgoGTxHbFY5`jjj6~87-f@tz3fu(na683!p zZ?*q~9qiK=B$sX?M~Uc0G!v2!y3cirE4qslwQp2ADNy5&hd8DiWHi zkPn68VV7=TF3F-{K1}XWp~iZbQ-(2Y=ODv$;ruKqdy$W4);UX4Xqq@s&BnTve8l8s zGfE?_?A3b#kMopvI6)jf9E*5+(y$J-{+<9{gkGRUr1T>60+l|iAK||dE9Us08#)K$ z7fAN7B90tP%|^edmTyd|XRMTmV&p&;dvMH*U|4ZZgWZw9*;Mwq5m=9x2fc~qx%DFT zNBYT_e+PIuG6&>u*g#+c`sG)K=72U>JO|+=L0@Cs&Jw0Osvl{J=Z5ju<)k35 z=&zL2EX+>LWn;yV1@qQ(gN?cJ#Ck2-Nzv+`u=Cgi@|yTqKz{kJFwG0wgcdy1f(EP- zIM;SJIF<)kP+w1@ZEiNRvp`^VpaUkiCK+Y&vTAokLSQf`ug`-GngIyC{dcC+|&-rYLR z8=wSQ>)28@eaVu9CpCD9z_oHh7J>Wn=5!Z3(Fc~J2Cp9IS5JLuZHOenhV>?Pk1%xB zuk*xyq!SAikPCa~6E@;&1aOXnnEz;196!3qDog zVZ1IO25|IQyteZDCY*yu@Co2icx;9to2g)U+`;hn5e(;N7%G1-Jn3Ngz`;P^X>c<< z<6ziwFnkNo9^u8BgW7_`HPwyaGLVJ;z-99lRw{=Kufz literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectDockerfile.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectDockerfile.class new file mode 100644 index 0000000000000000000000000000000000000000..3d4410a8a7b57dd7c8e9825a4b480c75641a97f4 GIT binary patch literal 9223 zcmeHMTXPge6h0lm*({(T5)2?Z0%GE27Zh&2vKq{llMMeFFe* z!Kwy*1TOi)DB6@e#apyRi`*^xf#CK%UUWSsXyA&XVTFFcMA3FlW)-i}kz+kmQRzqG+V~oIl zMDzpd1Pjy(Sq}OMJdP3s#TCh}=viTdJARQs|J=+>eQ~~4p3A{L917PB&dCohn4Uo% zbCrckwLDp#XcIj~VE38Rr_T_`o9p5t@kIGjX}(%toGLAprxz@ad}OvSn!Xs%64)g|hk!q_d2cs1PmNZ$N9iZWZ4-63dmIg; z!C?ZAbu?QR!WB6gQwtW0*{>M4iDZYFr-l7=mKu7${jWx+DlB-DatMV z$Tg_7Kn0iM_GCk`yc$U}*0a)UO)8jKc3NDxj?J84R=6#WPB1pQkb{$C;JFN%tv8u& zGQ*Nkx<`!_+F<%|?iSi%R#*$OLOaX~QJ5XqO_%w)w1!Osqp1go!|r+*R7o84qk;_H zf;2ojZ5nF6U&_O6&lQ2*Ay?Sxf69keOKo3CGkPy%VZg0Sc>hJh?M{9QMd*Jojcy-O zri9#Iu|10$Jkb3Ri$7KitjQuY@DQNK1$|^x=e`~~CR@gIY!>t>JQ~Qn6fLt>b?&s> z6{b^6T+METwfd1wlI^z1&Tvh!U#wGKL6z^XSQcwgt0WqsEIsAB2J@n_oux+ivfBrZ zR-vuU(bdbQG67~HdPult+s40vGKANZW!_Lw z#y;3;pGMb`-F*p@C+cg0qPRR>-M%qk9 zdr)-sPsq7r3d+QIM~Jf3zgVN*udu@Pj)r-R|hCUP6Y~C0X=OVZ18YJg zx&|oFK~;!o&_DwxVpju>IbNO~G+05?cKMeESlsq^1*rxuz9_}%U4z>QmZ(@7;6ZF} zB2+X8aU$XP8rSv1kK0a60@iokcX8^Z^52=s95!i!Y0ve9`Acy08V!Ri} z`xE0wVGssz3^;!vF+Yg&2c!96_!x%Z5F$Q-RL>)qKKz~k8iwB+Jn{uR`EA5U$FJlH z@B+#rIRlQKg5&LVXK~$boQv0;P^{Y%t=ku2M^E0^v&~!WnoufzXlR6$Qc%N`zP8waf@VDG^@pL5AOy2ydilRJEJm zl}K;GxvaY(ni63Q&LVA5}~9(IH5!shlvD2$43=@L5fO*GF(z3 zC^ShfC=n*%a%O}XB|-(RBoOwj$A?OWn@WVMP)#6o^q@j$DG{b%Iy1tjN`x7h&5ZE5 z65(B#OCWSSN@dOOlnAx#5k`JgBGh4CDT7LrKPwOjEWot{g3PLMwo~om7bU{=9uR(2 zAmre^bxq2g-;v>cMP&UEAxLfSf)DW92Oq*mQfgech(8qnx{Kps*b7Tw!ZI}B7Fghb J2Lb|U{RO+(xs?C_ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectorConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectorConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..fc8796431462d3ef53319d4e685e97949742e18a GIT binary patch literal 520 zcmb7B%T5A85Uk;~fT)O%177rO;(P#Tf-sv9mPc4jxRG%kHlxcd*@uaKng>6?k1{rU zFp&@wFVkJq)zw`ypI`4E0B&$*A;&O?Bag47HvCDxNUlR3Cy`#gX&$asB$F`WUXaF# ziufvgQ~@8z<+JRD#wd@9lq|KM5>bc7LV-d2SFrOy6Q!5@l45As zGo!TV4CR^{t~POp*lzi%8>W$`Y#q=d7k|9X^=3N@b%w&mf`tY{o+ep1VW@Af&QKfb xI3^Rb*R_gq31ZW)<do|RbxTd_X4-Zvz44NsHe1|M9n(r{M%#9{m2Q|d zZltfP>zk@{w`E%NPQd7EfXJ*-AFAf$T|kE8StVao3R0m`t=ue13=^`)#Za5|beY&R z>vIgpvS!nE)TXnl8f~7!7&Y8qTwSyq;o za)qT7M23f=zcEY=Y3%E-N~JP&m%Uiz=XaJ z2dOB? ziP!mE5*)LoYk_de`y$val&Qd3dn6xW40-DDUv@K3Xb>Gcz598b4T&0!|%hsYXZf+JyeO+C%bnO{YQ=4vAYh3IM=s@%T&q{$yC78_vP5r=1JFfRV_Yf~awH@7v zGyMNhu@^w&NbZ?t**m>NbSFBdsEW?L79Stmk4oOAJ%+cZbFHl#lu%<-_u~)`IPFW% zOEfLp_pUJx7~03iXwt?tMk5i!L`t-|-Po)C?oo}V5y3oReAy!!E5lMi|GqwgXE-A6 zO4%z&#Q=IbouXBl_SrG|CEED6EsaiRFSd1yyGI8*rb*(6`Cr0Gw0~t`L|R{caPZq*{H#t4YMW&hv?}UaosW--Z{-p+M-8t)jwg= zscM~mxen}};~Khc(|O%X?xJttgljO-Z1lNu=WIT7Q2q`>)@>(7C4T*r`5Zco#^(A2 zoh2G*0-OXYWv*E~Ztw-}+%c`qqG{;by`2p;jv`i$A`dDcoSEKU&u|M1CuA~Hq1{;H zR>k!wx1w!os<9e)SnzVx+0dzU^W3h>8htK6^%KGM&8$TQn}2REpm@r=FP(%Pd`dRW z&30?|AUo7w?sL#7ypJ8S5>#joQpxt}PdL>kNn44Q>wZ-7ocJJ>ge!mHx$lc3$x;aw zj_cg%rh+0>8r>kwkeZ&6-Cq=r&IUi{#JKtP9*Diyd6S8~L!X2vdQ+B0n zI?;7L{}ow^u1gI64uyu_qOIAG%$-ZYVpxo4mL$~qv{p@{-QYxPZ2DGreLUFtJumy; zJ&q@66uy`@+jQJuc(^;1(0fmJvg7+%y1Lfab&V#>_IEn3X}W?CnWZZhA7zf%2ES7H zKr*8w*l3aAJIwpGTnwjZtbMP@O==Pch8j4-nmw`MWRypCxzdE)D^o_y0G--bev;(ZhvaFJFNNf% zNWL7BXGwlzNPZK^Zwbjyll-=j{C1Mx5t5(9DCS89J+B1MtHJZR;Q3Buyzke%Cy))^ zFL=)pNLci2yo6}r^$bRNAg8X;4}CfzJM>` dEBG3|fp6hE_%6PWAL7UODSn1u;8*y~e*oF_P6_}3 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaListenerCustomAuthConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaListenerCustomAuthConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..7440944757686ee5f3346a2daddc057c8d881c1c GIT binary patch literal 400 zcmb7AyH3ME5S$CaCLusXNk>V;eLw&yB(@aAJQSy(Lx;JT1N$zz2NHZ51s{-)Lag0E z1qd?uu`#deq@ zlw+(G{yX8QD%Z>^?YLfGEZ2^&irjN@thCMY+_ECGY);9NCwNaf>TDsqyhNZg^4`0$yjF+~w&hl57YYR0 z9|$SzBLYL|#RFg0FmhR*&W^7WXr04olh8+?@4#SQYo$Bj3~8@Emzo>p?eHRXm0uNJ zO#)igYSZJsnWCxALWR>JcRi-jsLI@JR_1h6s7zhq%)Y{zy26>7!lSgPxS>*6>ND$B zs6`HcTSXb898@wB?pr2wFLOLK)tU9Ho^XYwCcv#lwNl09@geLgT0?$ULWoRBxMmU02l*!P`y%i$tJso^*E2>EOn}B&Heasn(Sv}Oi z?p8THX6or`hi>Elsie|HA(@vxDeq5tja&R%_vlo=zpq~kdf{w0bip|SgE2`f%vpVl z=;u=4Z*pB=n1%=pEGn0I>r9KVU;o%@E5Z=y5@tiG9Osw}2(+ZfH#*=Vf%ivew*AER z$Nta>^a``0d0v$F%8Z)lkzOATD`O*HlEUOxSqZC-p-7Ac)iCLRQ379&4z!WN>yiG8 zmw>>?p#Xo8Xr?@D$p)p5aEFuJ0}0usu4V)Ss9i90_#R; zp9(A_wOiRu!fo8mNI8X72Z8RqFb3g3Bs#b i!i^>fJeF{?34#|xXn|XJLKBdNaclu5@z;uHbm9l|SoF&P literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.class new file mode 100644 index 0000000000000000000000000000000000000000..23c2e8a8ef2c8685d02f6c3e810c28a33e894e4b GIT binary patch literal 11895 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 CWREof literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Connectors.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Connectors.class new file mode 100644 index 0000000000000000000000000000000000000000..175aa48e0825fe0aedace907c88239954d276c2f GIT binary patch literal 9872 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerConsumerConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerConsumerConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..baf5c183894b1c6472113292985d06a79b67f9af GIT binary patch literal 540 zcmb7>%}&BV6ot?5S3p$6p9QYmYT`TqYJ$)v#1;sJgdG`cX-3)(nYJeSXfAvJAIf;? zLKDJ5H*@FA-22^oWa`~rMy57ubpvh3$m@&{|C{j-Y zCk)MP6ATSUCJEV@zOMZQ7ocqV$s*b)qe99cRX~+=ZA;g&_jBLKv-b1#0H+kI#5lwe Gj=urXXq9&W literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerProducerConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerProducerConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..c82f0b9fb1bc91081c1d0b221498aa23c406a4e1 GIT binary patch literal 540 zcmb7>%}&BV6ot?5S433Ap9QYmYT`TqYJ$)v#1;sJgdG{nKt@W3Oj{FuG#5UA4`sY` zVIpCno4Ipl?)~mPGoN4Y9{}!fZXw4oj!nQu9bPDU~Q4Stu~r|3$Z+sJ94`UnqvU(;q%` zI~}_>9Sm)!JF$I+lIyBCX)^5jY7vPfHIku`9p1W`l~6dWbWMWnvuR G7$@JpjFo2q literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaPool.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaPool.class new file mode 100644 index 0000000000000000000000000000000000000000..93b027b3059989bceaa095081bc0e348b32dc531 GIT binary patch literal 9781 zcmeHN-FDkV5FUjzvfVUkQ(9UmAX0wp05(4b+Bz*HZrY}G5)-?DmY<@?8)q9y>#k&% z@(Mfvmt4Xda1NXU_q+j5zy)u>1&7&{?8vd`O2HTWw{*|!nkC9gp3kZC1ud~Q;ik`c$+A11Pk6~;O=6dBnp-<&jWJt? zaSbk|Wnb7teADt*1egX>m9>@H+UnA3<8I@2ZApWfs+7Yv-BziNlDMt121hE)^?cLy zH%z-jGLY5a(2kHpgG?JmSv4J^!6a=icph!J4sm^fw2EUaNBR&+_fR9Vh1A(d@pwvJ$?-{DApLiEj7YZ1coWu!Uwz~nAUi4r!cPf<<{CaP8H z34r7BWxm?~C|REIiPN@CpVSEVkPxNaV0OnL72Bi^^3PP)iN`wJB8`v|v8MW5tcjv% za5&O|Q&g?7W`z7y|105(ob3=^C%j87RORH*r*+ox@xw6BvfJV~FQ|TxXW6Abs^g=@ z5H2+AHzI>i%u^)0tiiW=RK;ShMQv(|*(q10{e%y(K*E&D!;4;Bdw>J1lP$uDYmxHs zVph|dUVYo-q`BmFDQD6~a51~INqD)ip}}|sh0)=84W@T3aEWuqGw`BzEPuKO0i$*Tn*d|7kShg6(Xq(m!8k#XnSuxyF#om@GhFhvAx74iB zWW+OE<{OUbTib?@IOOv-vHU0ws#_ErwJ5|Zs!;=ZsMBWLH;{bG+~m|cZ&;=)hT0@X zPoce(p|}T>2eTBK{D0g+E#8t)dmytp~bWyMi9-v?98 z(>?@EH-Ji9xea<7ymt{%&hFqHYqaG5lcPHA(JmLN5+oE3)+rKl^-i;dlahAc)6ysM zf}?gmqsB|%O1dVeCSKr0%sZO+G||kZb+c+8q^6L`G{qs8z}cw=%E4L4Pl5pj%o^o~ z6FVZ;GF`>&(Q3!pB)lPJU!=U4W!f9zYJ{ER{x-$jQ#o~}M;ek$EMdlPi!-Ofn;QI* zG#Rybb;|uz;ZRm;ggL0cp=AbM*CxJ6kf9oM)Cyx5^>*Alt%~83ZODVz63?!|Wj%;3 zQw6UFv1LE+lQIZNNuD+aNlP!!tAp4wEK>YqV@s@6i2@39@xmSy?&k9GRiVOg^pJtK zH25lkr%M!ujo8Cs7(=~lmN&#ASz>td^r|gU97=j#HZ&AVF`9Ic$-fh9Eo59tA|){&A_4t zl>{=XB3qP8$cLyJ%;%R2`<5vKS2ehrK%xX8I~Inmpd9N3@fB7wQ8qNK8yeKqV+2gQ zb@N9DWms>gUQkZf;IVw+j;OkO;-KctwnahsWQ$Bl=BX*Sp*2_yfuVoL5DA%`rR z>VUV8EXo_y>UH=KEBHfxMhDbO4@c7BV>C<&qr<0oc*)nE$U1z6Meu>HKw%v=aV12S zO9wmyjtYk8ZxM7rE1DXNUUk^UvVJ6Uq{BU&;AqBD2l1nc!FW#x7YEqujCE+^65)kT z2V53C+<`jaF9(k97Py0B5(inK_|plu)xi3X2hRbr;*Ug*z!^9M6WG$RH3k`Y9CFwO zI0}bh5})HpGbNwX*oTuT>1MG1IMVjoC$N1Io{)5>!slstQnsH8+h@Y()8X?Ocox4O z!9PRFGmCHMP^t_*b3ee@+cPhG2QU4EtudIx|3XSYXF#** zF?_$rXsW?wco+GCRd`QoERe*^1d=ZdBWYu?NENseE6Y+0!m(I{Yj8alVL1ljOf14p zs74STt;N|`gq0KsbFm1kuojVFcTM8v;an_2EwU!>CtQ;&u}JItKw61G8iP7o#27T7 ggU?yqxwqg0xD6k{CvX=`uz)}dDC~d(4DN&XC&r6Q9RL6T literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaSpecChecker.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaSpecChecker.class new file mode 100644 index 0000000000000000000000000000000000000000..fc70e8529f7616ec1e1b7ac64bf8d3af6d5db4f2 GIT binary patch literal 9398 zcmeHNOII946ut$7c?1JN!Nm9|2uAQR<0J6_h=CCj!VKX6LCwZf^b|vf?yfo2H5_s0 z&aE!>ANU7yj-I3Y{DEv-xK+2VJ>KeW<`Ft{pK)jiC!6l6p4(sDy05zTRzLXn=U)Nf zV^~f>7lG@pH1akxo%}tv%krkkyGok&*JfT+xnxSnykXT`#bw?WWp3q{*wzkPt8$~T z&5a!{Q_w?Tz#Lb+kH3JE zv7!(=wQ8Fn`-_~|Akb4lDW{;HK!0Ot^HK_#hVx_~bH|a~71k~AbmpVdGn<-3h@Lg_bc=yWu(yBKn~^=PH|7Q%u#|I~Ww)5WV{WF|e`3<~)&VEa@Fd`}~1j zquDv)1*w>JbGT-nN=feuQTE$GDIJCTHDOk`TEndfQ>D4R6(Ou;X7jdvyTqzbyze&2 z2DfS@g=KNsfsogPd!#b&DAUJd=ZP*M!6n8Dz^!&t;)<1-VnH(1wrBcNXERUt6R%p1 z*iTQIO~f*s1etEN(GKq)5$njpIe4}Y&cbs9hQ<%}L3A^rzlep@a?Rf4a-Cs+KsQW; z!K@7?O+5}C_NZ;sB{0`s3#6$Rgw2(1S;M|eX8i6%QE&eEB(r8#989JpPCvZ=e7aaK z1*T@E((p2YKVq~tI+#y%5GrPYMBozUu*Qy86|Qn!)_Tnwl*E=<(L(b@rZqS0|85o2 z#6}t}6Y^)Wf{N*My7?9vPC7-@x6uttUivyG@CGwG*3^; zf9uhAm2D{uxj{u!*Vu9E*l;%3hbVRm8;G*wvt=cPynxoS2HX&zDhwdW8 z5Y=$0i%FloJyJ8J;XOjWNmfj;a)(xXeT3^%SLqSB;#uqRz-3Pgk4b6*5fHf6@cMnj2qLzhHDgs##&qbe5Od7s?!(}3 zIO>8Sy!Ij`Aj&Xa^;<{<&%*`016)MBF1Uohy5L3FN9w|{kMvRq(qt&oD?sZ=BOyqm zAxNKvB8^2Ly&8h#h9bSz2GX~oNaGPm6CphP7>e{p1k#%!NI!)lD$Fo*tF Q!f_vZSOMnY1}wtTf9y8iv;Y7A literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaUpgradeException.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaUpgradeException.class new file mode 100644 index 0000000000000000000000000000000000000000..929bb5c1f1807fcfde85f1befe948c14a8bf3bf6 GIT binary patch literal 855 zcmb_a!EO^V5PeQVHdz8~QwpUg(-T~FFB}jpTu^|D01{0radfaafL>$W;GKsxoM6A~YG+>JGUuFg+1g@4ZD z&Tyi5rerQ0fl47y#aQtjZIcC&#Bl25Qq3E{JXkJxI4@P)nalTg zP>eS2ba4wUQg)z?`Yal|e|d{EPRt*epS zH~OYlmE5s!q%~fX%}jW!$#+gp&LiAs*!q)55w?D_+*}og?tAS$*=tBzc{~Ec3fUc$ zStSR>h^nXb+MpbNL;G_t{)+AuRSn#wSYbfeRf^sE9%BvbRIQ*#v4IWTqYONx)1rD4 G4}Jokkpj#B literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion$Lookup.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion$Lookup.class new file mode 100644 index 0000000000000000000000000000000000000000..d1659d2cc55fa2dd1a4243f706dcd341373b02de GIT binary patch literal 8953 zcmeHMTX$1M6y8%ybD>Jq3VkP)$G& zft<%HS(}}6|3P1##y!(@&KF&G zwNXz%FM)$-dsQ+M)oTgP3Ewu~uye(|Rq~^s;p7mghQ! zn&WbIn@i6TCVENu5F5fZs39KLSvr+N&!n89M@9&i7_BlMA%wR=goJ+!MFK81F)u=VeYYm$@BJQ-ilQS|dB1I9J#1<@?9>$DNylAI-9tkh8WyYCPiDEk* zP0zOZ=ZP%?y3NFjTQ!==#K@?z%rTbA5G{|KG2NEfU|dB$Jjs$Aw@uH(9L1OO)${}I z4nvk2jxcQ&_q4ZMZVmE3eJ3&aw7 zCFz^Pdybpcs0+Q|tWnFXmM~Xq@XF3!J+X|lYlUP|o8wHDNFoxfn5NjZOvF-r7n3kU z#frwn=~TfHtftM?pM5MAnL8&G(=74C(r^q;_roxpAuv1=F2l*{%z>imu-S&a#Q40t zYGpCdtx#)`a#OaOoxNhk#Ijhvt14TwK8XdhGb2Sm-x=>HajB-%>&XU*-BjSod}e4*6mh{_XtcyY7r|l!*aCOsLOg8s|FR@fzB>GUkT){ z%mkj06aFua;U|!wi&!a-p;}aqi_3(Rm~#0P-Xf}geN0QMui)5bV_KE5K5oj=GJ$KF zd12S|{UF>=ARVOD$X6vcm`1BG`o#EXxHAc8j-R60enDv+GN9_`>MsU?OR*TxYzyBI zRH{VJ0)HPZwKPEk>O$3EYhK zgVqF1iqcl*L+G+f@uy6A=?$F9CGJ+hU8{{u#d}CySRzTXL3p;->2fI14xt zA2{&=2=+i9wi4Ltfg}t<8untlU$ysPdp{h&--B?lt$zU9gB|Umj`pDq?IFY*hQqjq zk9-74OUQ?u?OXkFfY=-GbVZ}v-x@@8G<=X>x0O7< zzO8gj|D#2ifX_lYT@Q3xN7U)`pB8ZvJ`W-00>pLRG>BwCi}*$SU6NB;gnSn|jcF05 zwxQEy4FbRoxEa@WB&R_jQ0QV;b6Uh(+t}58Ey8pcI<0CEi!g)!GK*(h#=klI4#%e3 tVUHoM2CWxLIKKzVFfV-t@dzxy9Z10vw)-)*eg*g7YxowvgNl+|_#e57cmn_c literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion$UnsupportedKafkaVersionException.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion$UnsupportedKafkaVersionException.class new file mode 100644 index 0000000000000000000000000000000000000000..d83d2ab123f1c61adead5f3afff8d13efc4b0c35 GIT binary patch literal 5175 zcmeHLS#J|D5FUrpG)tie_iYdl@REJui2_np6%j~VR7xd~5OQ{>iDB1X*-knB7!pYE z&W}Qjvw@~uYe9>+9^#GH-;QTKd&c8=_x{xz0JsKc>ri9x(3&L9g;eolu_4D@- zsBXN{d5no;Fn(1k>8>+4e6hVXdY5Ka-MLHa48|5{vN|*vOl^%X8l%kw>|-+z?kR&- zXPcPvMCXOfgrANVMt3sI?G+w1)_TZOOfq2zREXq>=psKab#rK7^P_>yp@GeTf#-Ru z(Q>67&xK2R+>so7R*>GKa)`F3r>*JLYgS7w^^v(J%d5;2q5K>jY!QsPGAk@ntsgq-IVPEdXBEAQ@&ZAKNm0Y4MVZihiJd$_~;=-ah3S6 zo+Uq?OKa(LDRHHmWx(BGk*j^>WR9V`C5W&c+WI>r=2xoxf3EMkeNf;G;xG(^RdFat z%(AA0YM3E%y-~X4vTo&+p>6XUpB=fL(NEPJ7i#3AfwSk7mU@KXw%?&V&sr~R&Ex%< z6E%J-W&TN{gH|92^iR^aLg$>3Y1M(=Qkx=^=_=)FeUof=q0jCZqd7wm?|(PQC$$R( z{WZ5D!3tc8zniW#HGiZsm~HDsWb496-ygmlb3JJpJZkT1EoqKHbaxQoZb+}n%xJPdD8o=WsihLF zEZvvr!gf#)?@~ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion.class new file mode 100644 index 0000000000000000000000000000000000000000..4798ceb5fcb46aaad935865c086e92f63e42e688 GIT binary patch literal 8164 zcmeHMNpl-T6n?G5l1A|sXD5VA778nX6qc|=#$cS7D3R^p4dN=G+M~AA@yxW+Gh>qc z3w{AVgDR*ZcTTx+ht^oDW6WYMtx~tS z5-xLJh%LsDsTPsOohxjUdL}MO)(ITo&a&5N2Uxqn$WVhyhjnfO zJLe}WON>^TELG-dqm-`3&YTjn*}=a#^aU3^XT%5pG9rw8BZ{#i7N47`F$Z7ce!ltO0VRkH8Ys*O??<~FP9 zhOipkq)I9}8o-9hEa$SG(*nus2DNSB>KjaN&2WWIb@yI_H$J_jq#9pa09b-aWRP`{pOy>1X zDJsR~33zQ7PJ>P$ zJ;iPAP7^pX+3V){HT16vx7mVcZ7{h)(RoyC6$UlesO0K@*m);ndN1JP^{lV=&Qq+N z47Xjjx4FZSml@^CzNcew9jRP*ggq-U1Ph75@%*FIH>sqkS|+=ujr!AWN|lD(dpK`s zo0=ZW!UZz=U4pQpv|D9{NhQXf1~s-Yz36ATC^$iWD>U<4A>}~_|S|<)Bh=R(R1r_xQ@u-2daZ4p96$v8@Q3(=Z!?gj(j-_Q-qxB z&$wTUOd^Y9N2Ta%WF+xXW>%?5dzKx=>q}d&hnrIze zm9*e#qLjyHg50uyM402Mh<32EYUo#U2z=Y&r{TOx`!YKAR~?XJp#jJ+h%fBo%b0&F;oc54)SDizJhNn zUIS$p{K&u}fo}#vTx~zTbV|5&wIQI#kz`;AmDLt}23AnVc!AFV79G>Uy)Oe_cRfKh zqwVl~Q1Vr^aR<%-&cs)*EKI-n3g9c+Tj%WvQ zGz}?4It)kgcM6WdacnQ(SPI+RFL2`4#L1uF)B}I?41TAP4}dq}tltCp?=+l4>hs~) z>)0xc_Yp(GHo(Y7U<~;f!#-XP5#K^;0&hd11FhJBrq&J6F7~342a#w)h=y-fI8*V{ zMtC;@;b9~~W)}#*M5UKO+%xyFmCW65#+!FiMh_A|&~DB*Mrp5dMio z7)`zld>2+0`lxk%2p{cWU2S`hu&z{;t!nTwTn=T@?J=cZnWQFse$*-&zFbGon~s>5 zZ_Oj{8O-d!ecQ65xW5=Fi_c+p2ekgOxD>6c(_(iR~@yAIDhsr5}fuVHG{~tN#Epz{LXq literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersionChange.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersionChange.class new file mode 100644 index 0000000000000000000000000000000000000000..cd3bfd67717b5d67c617462cbbeb69d0c1a866a9 GIT binary patch literal 1796 zcmcgsTTc@~6#k}`wk*{`1yQ`Mcq=}1W8#x2iJ(Mcxdf2J$La3S4(!e}v(rZWU&cfe zefLMHXLnnWlthyf9?s63**TZ*oNvz0Uthlic!?)P^TJKY|o>Fw)4YY{e1P689Z@ZTKh>sm2<==jYmGy-9^#pkR z-(D{q{$@`YBLi^`^>$FfbQxvLFwE4>rck9JmDuP;O<{I9u_Ad^+UMaOH!{)thk4tU zF~jSTn4S#|dZd%9+8-35s}p>U2<`^16&;8h5+&JPCRsyN#z{xI{yK3{{c>?W!pD*Am84-RZ9r z>6#;pGA<*BEA;mnStnM`H&i}Ur@r9o57KhDM&AP61j#IY%jw?1b=)9rj$~$x0)m18 zB@%~Zf`od8Tjbz2?Gp!gXdMJf++~68o)Kv3j6iwZBbyxNai3P8Mp7XC0Ulw2_Acd+ N!OlQukTbw3+&_#>5?BBL literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ListenersUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ListenersUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..4d3ad9ccdc36069c6e94f007478dfcd06410eb8f GIT binary patch literal 12504 zcmeHNOK=-W8U9-dt4ExNorLv1vY9peu(L#hY7hO95_;(C~j17yQ8W)o%dc8TfG=VgzPgVP>k7+nJkmhi15waXrDScX-CBF+n{?WK65>dQ4=h zPK8;S0>_5UgnP~7mK%q|1Wq)d7PU7s%jKKQ^awmQm(5+ho?W@Jx}IBJEM`mjxx)N< zv5?I#trwS9O6yD6#d!i_g*J2*`P!S)1diq$+x4jJtx>Da5|AWt#4~H>O^Y+za|ujn ziI)niZPE!CA#hAVc@_en)B@*UD9x`dWeY0$IDrv~X17sun_2|!o8dP1W(gdcoLVDr zIEU7V!zlvC+bYZp;fMshn~bervjuY*$;dLZ5Kz=Tn8m}}UMXH=em$st7R z!6%3QajIHIdt;`(q1vHg3FAehks3@n$FeZlI>OZqOeOb5$i1N&UG*I*IK|R+Z|Qg7 zsy#?n2ch_u^Jvd3b8k+ydn%Pg2;qGjGDJ<@AILthtoBE#11|fpHa#%%fsyxm|MSj{ zu@szy@ew!y4-hy#*?o#8kEo6paO1pGua=o8$)&qIZgWg(tu>eO&CbK#7RR%(%Z0ag z5{L(Pr?#jo%ck7_UgzFcV;@Q&Ia!ds(^EI_|5d(eQ?D*inn(TqnS#!h)3Z1}0q-Gj zJHk;~gkr5@qS?PG8$ALixlW%4CiN0ad7mWkY6N))7be-UzKXctCotZrfxlyy=meZ2 z@Y=qM8h&Je@oKe>mgjcm0y&6~=|YF{^4s*3A5#RL?-NC#*wDC3K!%Vr5lpiuQMX6u z2VEBI9s9}NJ7)r;-1bk#r4btU0eIftn&>Ux%=Yn(@5COCxJXFs9qWi-ABfX9m>P|| zddpsAVuzc|O~8i;{PX|JMEzp#m~iSIQv&a_<^1&snTj zDD%=?Dx-SXo9|TGuhlvKVy~?>Ugc4%F|9qm!;0x(W*6x+t*;Dr=*WcCiOf%1xE50&xy?G_akH;0#Xc!-Y6B^fu; z1bA(z`8ww~9^PxvT5~4)BWE;Av5>`rPUj+lh5kB6*_RVY_Y!(VPM~GcjEZnAi%iT3 zXPb!*EuYb7nUAa{){b(^c&%VnvCikQ&}=e+!E~(LkfjZp2nndXin>4GR#37; z9<fr+0VvQ{hy*Vq6kwDU+2KrHu<1oHb`ch)fk0X$^JB_4+>39UR>~a(a#W8gy`e zB!n^=#bsFn*Fxd(|H<0NmOx<9Ccp*gH-gyfz9jV3d;5!H0V6|QWlmy+_;AYXmd&pe^ znNZ5}&1VB00QA>*tzNdcyS3zaD~wilvz3ahMN$vk4TVgAImfXWwdDlhwFO$`)^1CJ z$xu+fVc`YXx z^%!c@kvwtjk9WGBkQZwrXHgeLJmUIGoF*gM5hyn1Uf6amq^S= zi`;c_!6$>rg+~EN;M=D|Fb?m6`>++qRtyr@PATmp*gmSXkHPzK>w&gk#VaE?lX#> zBBGtBf_K4-%-2zH^#SyJNx|(zkK5QQ3hvebxOQDm!fn`9^lRr&O@4@}_4E#WHZtxH zikzQQ{1G*7|E%C&g3kwW|AoMxJ@ZoRZvj3AU&IO#gD=6G_;(zRz?b1=_!@izUWM1; N4fr;E7rqZa{4c=A^-ur+ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ListenersValidator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ListenersValidator.class new file mode 100644 index 0000000000000000000000000000000000000000..8cc13cda3e4a1748277cf795d9097aa58827754d GIT binary patch literal 11879 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ModelUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ModelUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..5df0744af2fb4926ee4e210e3ee7df782ee414c5 GIT binary patch literal 10244 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 RQ<(T1U*ao#gKyEq>OWqqXes~z literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NoImageException.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NoImageException.class new file mode 100644 index 0000000000000000000000000000000000000000..e36c694a636a3827bbfd85ab7802206730d8e2ea GIT binary patch literal 768 zcmbtSO>Yx15PeQVHdz8Kf$()QJ<-eh!ifSxpdu=Ta%iZ;(Q!tJ%dWk$ovP)JA%O&U zeiSg9h6XsmfrDo}RH_5NU+Ed`of@i>^)5qOU~74~)NZC;PmakXfzBiAY9x}L_ z?d}{2w4XCxhMvIY`g|`0AG)|K@coSo6n%L@Q)zrv+fp~r$vXH+NmYC(^WJz)a!RJu zfs1Nw-f?4c+xlX~q4>$6SaB$p9Jb}uQ-L;}SY7(8xMESX2`VW6kUZ1|x5Dd8C7F z;#IPp<~9mE8~yK}?h53Gei014u+3}3KR1THQ?G! dw*BQk#}=+}w1ENJ7Ovw4d*BYQ4#z{>`T;?x;s5{u literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NoSuchResourceException.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NoSuchResourceException.class new file mode 100644 index 0000000000000000000000000000000000000000..4c8b976cd024343699b5605210b492e41eb16fc9 GIT binary patch literal 803 zcmb`FO>Yx15Qbl;A)73LmXz`(4yGr#tS_7>^imb56pGY@N*o=>%DU{@E8APO{4peu z;NBmFnB4{fNWg`|&g|Hu8P7BC#n+FY0X)OK1RaJK!7EWpW5tO)mBKg?qBrGxBV47u zjLr*H)FEmwN;lVqICPU*@7%;4_?)SZSzK^Sn_1;)dy^2#k=gO6pDP+@*SKiGEU4|z- z9ZYl0=UNrgQ&J_>JGsz&+qi5wO7?w}Y&lBSjchI6 zX+M<&fnhXuN*2e`nAJZFq+vowQ4TZknd||Dc4H6YcxJDrbWs>Dc(v zke0m4&lB7tnfwkY!JS{kb4i3@_{xMpLYWe$fCpe$Bk6)XYfz9)D0)n%9rEcX^xuxs q4;X%-sDtZdn;cN?I@w|SpJD?yC|bjaYzLdTNglXMUytG~-2Mh#{O{BN literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NodeRef.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NodeRef.class new file mode 100644 index 0000000000000000000000000000000000000000..427e86c1df202abcf3dce03be505b255f1e25cb5 GIT binary patch literal 1534 zcmcgs>uMA+6#lYq_cCtnc5S`YORTrH!VZEUS`|bT7kZJl7VN+5OzfteNrp^zvA%{6 zBPi&9AHjza&&=#vOA8h${y0faa_-;B`Tq0sR{&3Nw~7+OgVY9oER^*R{ zQ*SRaR5Yn~LI&1hs3pckg|HVG?W~C+Y3Xf?1iRMkW=!R=(#kz$SeQF(uygooYioX! zq5PcuR58ggu^+_?YmKepEMq_3Xe(0_4P?jz6DKMXP8rP;Yr2t)(?{H^XL>vkS{ui^ zlK+->h70cY66w{8v`#{3qbGSNgGgA4C=tP~*p_@&nf4Hk_6Uvk5RG<@#w-twOnDY! zEL_mzj_kkk+bDoT~DP9510P&k5Ioim!<2O@U^h?C+HKAxtcRY z9t=}+^M@OlVP>tbor+~g4^*lso@ZGT<{e7<-qNU~i#1$l_;`$79%=k95GcxZ)3ARf^P4VcBbWhLGx{^^$Ano zh%4bdtre04(FIx?`PsuoTq16UXnKqsf}8<$B9Ev+#Bdo`$iP)PX9lj(K5~?qD;)77 p98DhKsEk?CDd7fg(hkfMRfxZZJ6NDIrx=Q~i=>N`i-hxZe*xcHs#gF2 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PersistentVolumeClaimUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PersistentVolumeClaimUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..917d5c76773efb746829c99e4fefe057e15f29f8 GIT binary patch literal 5954 zcmeHL-EQ1O6h5;}>s=F?658_9LWl5|6uK@@5Mo26CZZyhlR!6(fV)}mB$;;XS&he` zfg2u#dmaG^B)I3Ahu|p?XY6g)>ALkqWR;G-f8+p$2jI-2r-8#=(fRZA9AEy>>ln;g5(1N*jviTdb!=^eK&4VyEhH zdT&8bs^u`O4l8rWw)>7Jh=6ltoBCw4jms1u9aS zC4Ign60FuOe1rd4CQaG8O;?eu>>ISAEV1QX0GA;BR)`E%5magvWz_5qxZkSextcLu zq|Ri!&WP7d-Nj{FMjI!PvV$S(ahcW_t$&|zeUoo-&6B7O@h0+arX#+=aW|N$GoMfp zuW8Np4uqYzAh)17?a+;$>N~>Wc1vC~LdOvRRA#X3-sqwOg3O1iNIzjDk{CS>3C zh%tFpW=E??D@^>>vXXXfC@HJB({Ej~qAi!4Rqu-_c9|9o)u`WEQc7}cGvm(G&g4TA zo}Y%}aFW28`EaC#i`3{?tvnNA8(Yib9@iUoLISg)ikRFSIxu`VWp+eLAPf&r%y$T! zk2J?FP`L>>TergJu**#+95P|&yRaz4PPo4fb;1WbO=lsrjE|GHx?($FCeygqUmh~U z;(^z>hMyeR1v^*&hjWWzWh4-@2``hz&ko-$2kL6>W#YsoxHA=5S}qy426p7!I-wvw z)v|-YxwH_KC@9i&jm7-B(o0(1;d-S{;L`j`DZ9&}11ocknVN8(z~2t}?v$9Lsw&T0 zo2w2=yBhgXVh7{&2+||)QxzkP#pj{1JP03-oG%dpQVk`?eslg4wH$eE>H zLpd$pQD{9=ZNpQ((nt5>ui6Os-TWi@y0CKWLS>!h$D#T0p$Bi_0cerg9=wC6pSFE@ zFi+s*eo^GXMFM9>aAh*|;CsGkCQ& zfVQXbI$c=73owg!EqD=5qtzMw-+;3@(nUnFhy~J16-bwJqz2kF;T3pw=z$$)pB3ZI yRgC+lH10Kcy)K=gkM1d z3Eueweg-kN6G+8E0sSKLf~eq121AC_8zh)%oEB> zjTX@h;i-gcW|Z~h3nj`7$H*!#t7^vKqQOTy`}C$ z9vA}qt}R?|t@xb>i>-SPR&KXeTW!BJ=PwW-Z35foRh$|Yn^h(=z6A{<1ST$vSeUB> zw#?R735?C-!47OAF!cp~L2IQaVTz3Fm00ss$tOIdfr=6#S#BClwCYM8rI)B%?QC!w z@<1|;LJ12Vv2{*oglhDhZS@viNAT!-lILW)DJ+2pAl<5k*%k+=QIt{h zJmGG28A~Nz{}n<$>vEY6L0WnmbA6Yuan0j^4-vL_)8QCUW`06*E)z1$Q}7i-2g6Y~ zvCJiwhti{|Sgag!$p4s!gE4Q%W=W3}lSO7WEU|T~Kb|%hYOu2gRhTBQXV(AHl}kgK zdDouuvDj{BQJ3ou!$wSC+E)RSt4xc0-P;^98zLoe%l}pPP?NxcKy#$Ig1h#MPO%9wUu*(ABz$}47mLL6?I&gN=s8+fvIegdf NyyI{JPQe+de*!0NTEYMT literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodRevision.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodRevision.class new file mode 100644 index 0000000000000000000000000000000000000000..03ff5f9dfe28d8c53d97d812833463f101e659c1 GIT binary patch literal 3499 zcmd^C-EZ7P5T8Ag`0QSr5c)w}5{PRnMNt|Za+3D$8i~GCd%n%x7Tas> z`l7-gg?K{(3B)UZ6k=>&5}UZPQSyR#Ij?tTelzp)eC+-C*Dt>Tz(e@lfChoCR-O|u z5jro~5p#rebgV@1gK%WT6^o^EJb$KRuAD%Qx$iuY<32wUTFB6V1p+Inp3lOGvp;&t zy_mqw!LZ-kecpS~-#+LKdi#4XHuv`ShnquO5?FOlH3n!aoOB5+x%)di+kFDp-9GnZ z=m}r27;U(6GT|zbcpyR%KO*o(yK_KbVGF%6;4*>bQ@CxVq-w%4S-SHqR9s8{h>xi! zgGl%(8jX}3`8?2HQ_CDqIURG)X9|TP=6%N|oNfqd&l#|f8L;OJ*eL@WbS$~1p^Rz3 zVsA=g#Nn?Z3_Xv7yxIw`cH*90jhgu*f=H@3ahZB7Ol*ueJ&vRxf{2G~q=ffX4as># z{}ahx5c$FrG1W87VI(ue_-7vGGR;!7-JwF$Svcm0BE*k&h$pyaGe4pJMB1jinEA;G zN>LUjUpWKL30Y>A#3kI)SW-sg?;~!RE*o)QzgFmoDZwx^Ewe2BU#pg3*Hp30EuU%q zAXmYUDv)c1Ry1FMh{h`2a;GX>7mpc$9RA64^ZQMenk9Ql&Br zV-fJW7OF!^XvCI^f&-2jcBZiN{#K*)FWS9oleO~T;)JRl+Dv+5+S1Evs$NZ6(1JHx zV8SYaYwfdBDH$`%E|&h@EEsV$OzJZkU(#d#!MtAQn+x$&XaW!2b4*j5ahE1MJ|3_V*)qYDeG>bhP$2T zO?Z#MA2m3yPUZsix%vKg?Sa7Md4OqdVOX~b{B$8<)eAhFR76}SX9=w5O6ReXL9Rg% zSj$2zt(1ES^4&IV+*MJWR zTq%~b0Ur~%THMQqq5%#jLm?Lp__T1r&qyH9+7;;x9^%zT!)-uw_?MyqYp@7QxLOAT zn)qDA6B8`_y@YRHpcKKU^((Z#UA^)%to)8|4R{NGm(r6(xQgpmCI#2vI=-231Kyq^ z+((24?qvvTB?$LYgha-KoA6Gl-n%7wUl#OkmFm$Fy{9L7P1t}tIla?J@0RFIPxKn_ XK6=}L58yL=wve+n+=q|AhEM(m99CF+ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodSetUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodSetUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..37a19b98e945cd96ccb854b882ed1026a37b265a GIT binary patch literal 5328 zcmd5=ZFAd15Z*IsBs*!6hKA4r?Iq>KZi@}2&{DgBCQWII+=&*nH;+!nhY zi+TYk&={U=SP0Ru4wu?SBfZ^vY9v{yzJ`BjK|^>VS|jjAx$>02)CQVvz&x&c2(cLi zGBDu`F`qy20v<}|1@BT@y1sB&B&0|EKz1DNhPP;`*xuu`%Wa1RDC9Hy2e!-Us*u%w zxT*)?s`kTGjl;D{yOM|0lM!`UWbe@karjFg-~o9yPH?xV{V`Wiqvy zr`G6jdf>_bAcA)7uudTCo4WN5J5v6B68VeMi_LqG1myiLvuAfjt{}P7?-| zD^!HE=XLpx@GwU^ID_x3=cq^zq^q=vRiS23iZV|nH33cum5OQpXLv{>Ng0i>5XKT6 zsvHe07LG8f}uC&0&r{XdBXTu%*i&%KiZ4qOe778wyt zGi}6zrQ(Q*v~I2v8OIoHd`d6}Z_dIDoF%YSP90YgQ|jt;GH>A)^04Q2c+h5e;2^MQ zNt-!OSs>JRe{d?=6Cr`y)_*v$sUw&#yKRYlBQRUG(1ChI9j zpC-v~ZBoYBl}~85ComJ|F`*HGa|gLQJm2;iMxZok;&@_TC9piA#hdUxfmb<_nILQG zRG)`I6&bx;wp1w&cFsd;U&x+0pt=d45%?uXFpq^NLpExvd&GjJWZ!zoT#kNU8Rgw; z&2O!4!VLmHACIfK`ra7c5;!BmEw9Z3S9r|Xj#z}7zu9l)&rQHhdE;o))zyTS@z@Br zWiPP#J)uq)3#f2#g%e*m81NO|k*Lrca0l;9us{shK)R*bYrrN>p{fDj5I8;LrU6?x zG_+M3@a@puP!c=DY>N1Yg%S>71rQT&qY7{yPQf(3od*L<94*G9rTBdYW^v>+j$B7+ zg3r?LF!yY6;a6DvGnQMz|I_izDR>Ltl{`wpGQ5q?BAi3qLLc*;80qp5(z_W*7h|MC ztbYM6qCUmH;G+!va)$nml>TM7GSI)8q5pA){(4Hk2A>S{ zKh4m;mZ9HF>0eLjf1aWLMTY)&DgB%9B}Pu=a5(a}GW7NbdIe~pMgeatEqtEE46eW$ Qd=2Yx7w*A*%;AH703RcJ3IG5A literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ProbeUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ProbeUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..f9de02fdfe74e9e58f3b9457400b3b7cb80707e1 GIT binary patch literal 4310 zcmd5={c_tx5Z^ON6r0erfl^BNxFikO1uQ;FDY0ouQ+Ew=xm@K@(7U+io2HK$WZ zc>*2*coAk`2L9(k7@nfT>ZCMstifu=6#hu0)9u%9cW?LBe?0!>HvsqyZW>S`un|hz zbeZtXhwOlv!Z$-Dh5MZ_{eVlRd}-QF6e=!F*Y9)3yeIu0-&Mj14VWQtRgYDL))!p9OZf$+}pnb2q)4tmwU|3p0gTP!D3b57o)q>qYBMiZ)#LOC&`HYF-2XSF_Ckb-kZYz6a?TD_K4nxr3V5X~{0Rg* zZr})8C>lnXj2LzgJrmiOlr%}UYK@AJMqZ!q36J;d^bV$K96HVBJfgxo@b@`o=n;42XdYgroIN%-+!y@Fj6q70nri7#d z6#!b378)3k#lyRRVuLt62QE)t|s6eyAj~)kuAB z>x)6ymba2JL149NoooV)(TagN{1$;93;3$xsu4&+`bo@x#{I-Z&=AupnJ^kq^ z$bb)V1U#8c23#R>y3L10!ZFrZ0bLBFOQ!~mQV*9#SU z13n)aOOry2^6rQ*#QSU)XO9q80OwAeg9%)OS(w8&9Eb659>0`vbp>|`J}bXM<(s92 zpW)2!xGKRp{6D96W?>267ZNIX5njSo8P3DYsf5cT5-#LOSkV$nn(rdKn&FErOEfR% z@HI1hufrQ?)tg9P0;(;K^~N$2{*@g5uQL2=a4Dnrm~TCYZ!g35HdJ%@YB_x0X87KL ncXRpP%i;U}3110JjqrWg#OD%5=>zx(K88==Q)u9C88`k0@EcM2 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/Quantities.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/Quantities.class new file mode 100644 index 0000000000000000000000000000000000000000..5c5e8bd6e487729fb62e51e1e3934ca2f59c67f7 GIT binary patch literal 3069 zcmd5;+iuf95S3;Oh3dx*6Ab+EP5Gp)xdJ#_v#rdHCxHS#HgP3b?5P zZc5Mnbyml&1(6iKFf>k3B%~c8k;F%_XitQNMJi&Ngf0F;guLa_21=OzI)lkB72$?@ z#VJE>o$VPM`wEwRc0aI7Gw8kV; zlajZYT-NO*;Gwzq+UHSL=>j(TXUvKdycQbXPV4zo?HqdtVecnFlj~Kb(Wc|-@=xUa z`#L*d!M-Z&g((8F3-w{g=oRT!+EJ$Kc&K`stur(@ftkAUnS8>uNZ0+BWz!Kcfu;KH zTih)IlM&M~Z}33r?g&b2791wXvQ!lBgN*xBNy^)n@4btfGmpOIL;z)Ff;Q?lq|;$ zA*H}4JR!N~tY*P^0$+>b_uqF$0#kik^@T}wspT4LkwCX7T}Bzp9`yn3KX4qDkAU+? zCEDk!B5j1z!|^N|XDZ-so6&kU!5j?{$2euI<1i7!9N@5qLm^=EEn)ASz;y*z*YPdE zyYm68r!&qwsD8p#38wLy#sJ3d$7{701qWaTS2i4kL;Vbwwq=;j$uOH`C?U>*BO`D} zb8t5XxGEfn6I=e5=ISv%nS*;az*%q_&TPRAcS>_`%>mAac{rPkJC}o#1DpjH;9@Rr eAqUspg1ht^Jl_s*CAf@Al;8?@crW9huYL#WWSR*8 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RbacUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RbacUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..e71fd5cfcc4040222b059bd7a19efb3157621e8d GIT binary patch literal 4658 zcmeHLU2oh(6g{&f@vak^Hc$wkorY490yZB7+HR;&t0Ez}ly1^Wm3W!;PLc^;do{LO z$`9a)|5FJhc;`nU?%2+LBTu6|1gS4xkN4g)ckVs+%-Dbb^ZTCwzQ(qL2E+AKhkjqE z*gq7Hg|8An&9v(OqWokawa60fhf$tpQv3a+CnLYp72$(SMX7@YhO>oNB;tMlUiVOj z8N<@HidA-#;ib*3hYSn1$<0BFVRdACN9#m4vCN#`9>iLvN%UCuc$oADDiWDWVm{DG zH7zs^A0}=it_9fp?iC2Z{9fj&up?XEA8@!jul*dWN`yvYuct$w# z=K)1IjzbCXOaeR;o>z}r#-sX!L}#4L_e58#@EQ+AY^Lf;ezc$$mZv346;Ui|WNBG& zC8su+3;A7t5UEgQJk6o`FS}%Oi>s99aZm24n8>(C|Ioe2qio#T<9Dg` z%s*tsMQqqx0*^tutxgijIdSkT;euyR2hwfrP*cbICt(yQifESW@eMd2LjI z=*lRqLA&=PmbxSNq?U15x6Te}Nv=b=E2#t`t2L+0-O5$eGgX@D-|;n>9N$uL?}V~w zRSz>KExaZ&i-PRrg*Mj#or-FdIkqdx?Q&;2;o6+Wv_B`WXA@(UP!~7Fn z@Z+3-WvRu-+cawn^2$N0Xz@trlv~xK4ggzlmug$?{ zgkh@S;3~tixvQGN!Iun9RUik~Xiz2D!HtQp5oM(rR_>}ar9=BJy#}SY2>L8RUq65a zx?98&T^$--rKgO3-9ONLwB|m;%3m~UV3n@M24s7dt}CS#&S8y4ExdwP$?81aH}G14 zbcK+XXj~$_J_qS?fz&Ac-@uzg|F?$zCZf{+?K%G6jQPKd3qyZC^j{qMU!3FrXz1U- gdt}+bCA8^x9m{whA7Bd~;$!&u6rbY@e1+@(0*zn$y8r+H literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RestartReason.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RestartReason.class new file mode 100644 index 0000000000000000000000000000000000000000..782aa7569cf1b3f5d9ea4ace03e74c7e51038bbc GIT binary patch literal 3448 zcmeHKTXWk)6h2Br9IK%zA*CcOWeGP2icPt^0EKGgb)tzZ8A%QkUNjqd6K|@EM_OkH ze~cNJfp`88ZwzN;WfD)EX@Pd8oym(nd3E;Nv*+$V|NixN0C)&r)?iM9heaN>5+>5t z5j$ork+lk$i{xj~%0@hAGRs?0JT4^9TS+$Ham(X{WV!S>E3&i(^BUYNcg8F|Y`ObK zJdzr$n?`6-F9^2{KXmPOxJ4c68G+?G8hmH}uQR{aVEL5Zqg{8Gwx?Dc`h!}zW7-yV zg78#yhwg% zkEho1=&t3LwyLXTKj@n~XlM1_cW`gdb$n}AQSKO>or$Tfj%DI8ex)<&aecrK*f^F> zCbDF2PDdpk%*ZTSxQEEwjcAP_=@QDV93dU zM={G$XvCt&?2wZUku|H}Y@P;ZvkJ~;8Jrtrknw_~nIs95(U3^w;XjQqCeQO=_%&6? zHdaB`NoerHDzyQgzZkC#Uy$UV>4U;>E`iW+R!(zsAIqo2bD7&kG{6 z^2&)Q3Un}$CnHWKA`{iFh^}mO6-TNnJl_NXcD^}qLnYDo!~!)!oOmhi^3LCFD@W))Xu$(^dvdfm<<7V}HBIA*zE z*!pxG*5U0XxD5n{h#CD>HP>Yu{pXC6eVzwulWOdWezzj27U$(q6dK$(YB!oKP?r ztW@Q;z%e|P+XCnEJQ|+Vprt{rsvKxpMPY~5j02c8!P52Z(`v*MxH?#l% literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RestartReasons.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RestartReasons.class new file mode 100644 index 0000000000000000000000000000000000000000..98bbf8607a00d297f5070179af1309bc64ac3bee GIT binary patch literal 8500 zcmeHM%WoS+82=`u^#k|a0;L6}p@3bA&7-{P)U-((8gN=j(v}8sn5-x9l-(V(GaI$s zkdU|_A;e$838_eM=g1YopTQCF&F;Fkm1%Y>8z)p%6nl3)^PBJe+TZ@U`wIY^gHLlX zL7<@mr{*!?*KV;5Rui(ObRfJhMNM{iz_bi%jvFe?gPJE>+^sEgrCFdCIaAVCIhZ7{ zKicXtf4z2f^%i$Dfm{&(PN2}d(udjNv!)!hXE(xbe~T*ha#cgT;h7V*&|^I z>G#*`4g4dpds_HHHwZjdu3RTDIg32xU=M+Py$zRwKn8i(M@lo-{D3RzZtxa$q}LHH z(?a^R6UbGUd+IDL7M9zbwz%W602g(b^Eq4RbV|r-BDZQ+Zq-C?)ktnrv?aNszSPuX z+G$gbIQ(`8rPYsvqNo~eR1JC6bkvw0;dNx7X|yNQ!le%L%}J}AcKLagpWE~!(Z^4g|6;jU8M`?F6I|pMVW7u90T`3 z77O#}Q4EdBqAIE-WmMnk@M0nHos?DR0ck5Dr$||p@vtmVB`Rm_bZ$p5 zn;u93r%mM>>$lNJk;DT@bq6q9=1`#m*1wD*`_ZONm95!||r-d7y-}x0Yqpb7r#g^ja?y%yxvel-M;I&hjut z;G3AA$l~ycf5nF!Lol$%@~0LXhs)YH;(GYp3s%@=(wg! zLmxh#Tv~_Kc{oSl?+h055Vm|crsrRT%tdhxl+1DWRj*+9zd*?C48qA6gdX*d{sZ)m zXvA%%+UC_sl#S=}aEZY0qgKcEH=W3+mT?3oa2UO{_l_ujirH|Uz#pUIe8+`*%>7F; z3>-cuOka9vVBVmjw^9T?>k~}kqj9Z*b;Kx&lOyxKc~^o_ll%Izz>+9%+IMnr6$|C0 zFv!8jsI91&z(aGe)V;&vDF@f^O`nOAIkawxQgI+@n7PN1zXmjv>D%xcW+V>W;N%#P@HUS?d b+HArC-UF=Q|9*US1wMjBScdDU?@#^(VR~c6 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ServiceAccountUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ServiceAccountUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..1a19026b0dca41eaf70b767c135382b798e9e091 GIT binary patch literal 1880 zcmd^A&rcLF6nUo>0+_ut$=M*PNS7`&}=U3t*hUbn(ApdOzCg9t!RWOump> z`d0+TR#x{2jISX<01X0DC)jmsjjh8qGPby@t#C#ii5}%9Nu^?58ckDcx=JMOIc+vN z2ZHtlSIimhlS{6+B3pYZ9Gkw=LggykNBLT%3&U~BFwD_ zb9v!t)>4m5Qe!*0y(hY61!i7e3zt3a_OndF#nhcjp&SH z9ndnZE2~sGn(3bCOO5XJ@e97QO!;ASNH?%*@-K*@Oy_oy(LMzxyG(N4XgjQTIB zKrmLO-oFY^%(_Ck5lma3w6NQvFRaj9i~w(A>1LLTjz9yM9|f<*{U(#Dm%DwYaE8Kf zLLIKRU;=Ism|KZYTBx+8owwLjjBamcNmtko!>%DP6C2Ld9`jg&wSOo;Ik6a~J?cWR)|3<;v|*mNS9YhI9`5 zy@S2)Ucx6n`BSW+v>i{1FgE9afZGki>r|l4VsEkmxMCvH?ZC^iF!0#>q@-X0n18 z%Y)y*@&j1q(X&-rrDv`3U|D_w&sJG}0LwR-p2-a9&2&LFfN)7N$@{&3{od>MI{nMP z-~R{zr{N$YOcdOUwI<0cA8iYP?eafp|oB1^K{HpDAf{^*ume*uXb(#6= z+-8?U?gSc)5!l%UI@DdOF0Nc>c1U2`EO&W0M_|kJ%oPG-^N7^IATZgZJ?HzLufujS zId<9gS>QSAtZCX_tIZu6a?dr}zPIAAR&dHJ8;xtsY%<%SJ`%O5{V`o*<`nlTLfcBB zZAEBX>1sP=Ha!-Yt{0ju8rs*)5c#khZPYT$2Ypb9d{Bwhs}ysM_2I3y=Z7YeuhJEt z+b2z%x{;_AW+n#Ruav^A3Ksp(D7z8R!Qd`3eMp4$R@>n=56z&1`G)cDqC-12=A9X5 z)AWqV1GD2c*(!H2XjkzU{7gGen5C|m3z((RFGyulH;VF@afW5t5ZNm+&I~=1n&Hhh zLn|~DTl_=|i3Qn&yFK|L z=~Visp>;+>mKhnoR#=ae!Y-qkQU;Ylhlz363Ofkwowj;&axASD&C!z<_VyP$trg}s zD2~Pic3YlJoh#Jm(X;q+EWE}80&~`#jP^AG`)r?KXFVT}|Mj*oiNLBvzkZFac#p1G z`S!kMZ4h2HD@xVcj3wlt2F5a9b7|P|(bUc+3Y|@4M!{Q~%jlrPqlBy}98d_Q3o=VB zbX3wqsR7D+zCgDPmZbotP+l{sFqj#EsW{}$^1$}i@%RaYxW9e8@z=Xqc0XpJ;eyK+!&>-eEi<|+9do6INb}U95^S$ z)${_RO@{@6sH!?VL&%p8M0(!+mNof9MQO&vk&5R|a(a6o9zSyDG=j_G7{i+;eltrCBc+el`*G?IO3uBJnU zz~2gXsT5Zg(-rt6-YF;q1IWt8;4>lgoA9YPqa|<*qd@-m7Iq_vC=nkzyhz{+1*he4 zMfS+W4@MCv3rjFM2pk$@g@};jMKrnC(cx7BUn|%;#D%>*N9@WqxY2O}ffJJEv0m>_ z?{p;Vo^zT7?skb~>)xa3-aFCY3;|7a78;x-ut(BCq%;nU0bEy4Hl51?P&UH%Tnf5N8{ zOyX-q14z3QU&muA*af@s$$&lZ2vY6E&n4K`<#ZG|ZNul7(|!r3BVA6VF8%;Kmf{~z z@kWY2D8Vmf@K3^1Dc(%+6Dj_X1piqE|8#-=hb8!LQ@jq(!V%%Y$nKs8rzNCUc!}5*6V~s?kf`fA1U5|lki$b?pW&QQxe>t zIoxapw>8C`mf-$LaV2;iDNFDMe2DJ{VFKQSc{m4eK^@+K1z3c4VHqyNdvNtX8KVKY literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/SharedEnvironmentProvider$EnvVarName.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/SharedEnvironmentProvider$EnvVarName.class new file mode 100644 index 0000000000000000000000000000000000000000..0c627d678273c5737152ed43d29085dfef895532 GIT binary patch literal 1438 zcmcIk+invv5FLlKNwz61g%(Pon2Lv1Lc2oZ0Z~AeN~%UmlZu3jJ|V~JHZER!WqTva z2k=WsAi+Byg_zAn4dT*Dz{7ex-s3r*;~9Vb_VF_SJcYFq6bN*j#Kb~H?H;otuIawCMkhl1eQWwM7WN*l9WdKui6}vl!2BSf zV){60bx#EM1cKd8XaDv7i`J_{0tb!%LA^;}CTD4nY0Aykcv{)1l+6IirbiP2`&?uI|J0LHMR`%r11Www!#_J7cu1~Nu^?58ckDc zx=JMOF%2r6o}jVdDp!oAjK5*Wg04vujx-L(8iyl|!-2+YG&aIfZ9Gkw=RN8%j(D4* zhLdqnzA(SJFh5>+e$?T4WRe=|DZ-Cf*Gm3~a;9^tuAt+Den1YQXI`qm1J;vNNiIEg z85R~wrcs29V}a3{&XV<^^!KUMeuGL!GaZW~sWIUrgy5WI%1>?!=^oZ){s&Q%>0F^9 z!$j<$(vS%HIYsIXWz?UhBB%_h&jD>4rSJmsEBKmp9cLKOnIN?`F9 zrJPstTmuzqW=U7r4#VOku+T7^DeP96`=iC8?@5PE+BTWxVn^n{)!(-Jpz4sbu5-Cj zWPA#CB|aIJ_f82^>skxDt(bGdmEabE`af%TJmchBbBDm?i4MhLLi#=F9JX=?FBo$w zH-+=N#`&!WK;RO-f5ok3n1X2lw55?Pk8CBkh%2D1Gia;mJ;Yu4zTgwg9xlv%fGc0n zE5J1zrx61fZ4t-nU>?BIAjTA2AE0i)GFpI}_yvd{umZP{nWA4rZx!z1tN<(D0SBGD A`v3p{ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/SharedEnvironmentProvider.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/SharedEnvironmentProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..bb96b64add0427e8ddb7f81a1d644f22dbcadc7a GIT binary patch literal 1446 zcmb_cZBG+H5T1j=wI>3iC@A8Jh%GU9UyW2^LNFmIXwpjJ$L-xx7WZ~9yL*lL1N=)S zn&@|blyUa%u#l=~^g~}}_SuC*PI_jV>QZ zYIBWuRw{RUJju3$4y$MwVHTky;qY+joTJ?-#oBWBriN7H7=Ght@ z>qGP0Mk*VIjQ6=Q_$GQdq-NR!TuitT0czOtDVRpvM{Be42A`n*Y9aUlGhfg<0rU9n zFo4)Ag~u(v1-Od7YlXdt_I0@N!(Kvr8E)d)B-|NE3w+$l}C~T z>EFa~Wv0vkXD(d0aOKLCD-3VfYu8RTUZpXg?IEkI{oYUSOHcAoKm76VTL8EQs}_t9 zm{HO#_>>2QdvuEyxF{$sx&MF{M3YIXg)F#UOKBzxzNj;=P{ohvCR^Ye8y1Wbn27W| z8f+F;YxkI|2^?`&7Z*zv0;ik`b4B2Ck5kP>;E2slCT9qYmls!7E5++h>F!!_eW^+y z>#R|Yvjq69#Z}2~>TLq#4uPX?1HqYE-)=GjIn|InxL@TD@a5!|@LE1o#d@99S7n9y zVvE%YoYg`s(_s5ng>L9&rfHpOdb=%4;6%OE^tekkYkyR(E3|o*2VBn)C`|1zdd7)e z?)`^pe8b1|Z8W{gHv_6$5-lnjYR@|5K(jCya}iMQdx$wYkHNO!6o%?id`nUanStlX z#M&o;WJ-AGt?dfG$-OAPc2kO)$9#3w&Slpd%&s%nqY{Oh)V+^cvoCUyj}x5lBsd=@ zI3FeWqFonE*@4iuPqo{yHR7-@nwZ&M94woBST_04ynH%p+aB&Wh18+Rwo8L>jvBK& zp7enFT$94{a3d8`C4?l0 z2Z^D;nAND+WW8%>{~BQ%T)~q}g15cEcm|wby1QIlTPsx(M044{8D~KEHnzp6^37Uq ze>Z6#q7%Z@7f~h^$5VTtaU0(VfG$;yv4V~SF|PvKAY7IR_`<%ot3-S!7kFoJX8PdmD>*j&X+vY^CMbm|UkwGa!@V2$y=dspR2% z{Nbo>a3oZ&IR{{tkOV3kGAV5yCfVXo4KaGzmyp)!drypo?KYTue|-?mWbdB5XUmwG zzLSAh2z+V4vWe*p6j4Rb*YJus9^owTb*gPMRu|>}lpNCBA`Kf{IC`Rw{9uj?P zY{!}l*Txlc=;2`JBbL+fq|hd<2M0Wx-k;6R0mH(1a(3A#$J1fe#=rbLfqk(mTGC}V zcz95lh?i+diAFaDc*-aTcr_INNL}K1*CgG>wguNvdMAr&!AE#26fZstig+p1v&~sB zkKe{Wr7b8CIM%#$C1RRGE)C7D!3zIm$ zhv*?{?i)Dy*@@F%!}H%o-@bs)Bd7s5>p6Ue+9(At!g(A4k?bzgg)Wj6%Ipg%0~g^X z#13t_gtm-y5nfKP<*Ue+P$mPf?xFWug5LLCJ-kSRX`JN}Vub#^j$ZzN#+ zm=K3iIErX(>%&MsLdYi|{G5m|whx3~5)t0o2g0w32ygEL;kQJDclLqsdjbN1cg+!q zm4Fb|^5t$#zTeI2;ci8JusbK@R07f=_z-nQ;3~}E2(W^GlUO&iFb5yQby$EKumm^3 F`4f7q*MtB7 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/StorageUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/StorageUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..bc43a170d027a0350f9bdf6ce84fb4ac2ac4fd91 GIT binary patch literal 4119 zcmd^CTW=dh6#m8}_1aBIo6YO{G*0x1^EE1JZasv8SEAXm>Vh zD#1H1ydZuBk31lO1W&y1EBGadv-aBSz_eXC7DD1>?b$uwIp3T!^PQRB|NQ9}03V=T zMTKEKi9OdBDsbvA}S0 z2-G6zyB~M&O3yGHTUUWH*BG8?G?BF^t6b{C=%X1qQKWw*vi?q#%x1Lpf+=IcR0{T95ZS;-ma1j14FAJ<*MocZGW*$U=1`A5ZA-mO0)3 zpyj3?Y2_)ylavZig$Rgi>QS}%sH}}9R|!vpp4?LbWp9tZ(0`F?Gi}}CTeMuVFJ#3< zkfnR%c*pZT_?ueG zzR(}W{nVF%*|_h?Xt-hix%>_%bGUIWl*(CUpq<08(g{7GcSWqSasG0_3{=8!t#g#N)n=%X812j0?1T&#EtD)IZ#X#1 zpi4BXQmHIs#Bh4Tb4zKhx(7zm^iMQ8W7TUnZ#j6D;oB0t#+b)SK#5INj=r_pMEE?z zmn8_73Gyg8eYnyxEcwz8|@>yEGAObaJU`H$Qjq z5<{;P!6Rxkt*$hY1rY}q8NT^9BG*c5F2lK@<_aSVt;>_eaG^+?WgG80c$Kj)<~X4e zyQN_H|7bxBtKL9*_lkMv)!9}L>>RH)$ojiz|Nthj9Wy literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..40832f59c83db44809a0e6b0ee46d145765e2093 GIT binary patch literal 4535 zcmeHK+j84P82;CU$ad2vq-~&3U>iyEUzt#`QN*-Y^RCG0?hDFSmbrOn))zTbVo zO-0~BySdli?d%>l@84VR>=2kYhM+bIaC;2`=QpJrDCVj|W{12C6#`Sbay*2u8^-<@ z&8_>b{e!(u%%co5(Xrzq`{@V0q2V{a@{ zOY(raQc;H~^O!2+!ykF*ge)KQaXs>JJyNeenQNkta6IWNitr=W^@Vwxn#_$vbvaE9 z`Zth$7Zi~GpFqYj2r+vn88jZai)A28p=c0dp8XRx9neXmV7hN>WDEiN_0qTFiSAYzir~!-5u9 z%wmeAePe>`d(tY1Gz7YBv?8+pIFxqi@Cl&8d|EPeCrNyw%sxkX!r{$FCimiwHQw6C zg#Tp#3+7QF=dN3ph*W2GA$S7X2!(A$H8s-iMuS@n`*i307WZs<;&4}COmMXJP9~T> zBq&%bLxN%wsxSwaXW%?65V%|$o!!yYoi(sw?S)R4`yGaZG#c{K#6UA&MC<G!vqpE;8fBmael73| z@l@v+flJJ?&Q>EjbD?HrT5iLL8dxI=FU>hvF_HpptRbWfZxHydfMYWJC**bE?m3=p29sRd z_N9aOgd@?5EB|Z?W7+p}vJ7Z0+?}^Z zMg@VjnlbF}=|E^?_R^k@z8V4tn`L;9!1o3GHcC6eDMNx(tHK1ScH;>MRNFH2O};JS z`ICx?@22r(OM{Q_f_gTX8hnht9IBT}(*Wm3WUdHbdyb^P|eu~qpIh=09oJukMHCP?H9yqP{%^bS!fUW}i->~~6L;nuEn~^)T_g0SFZwGWGj8o+458zXL XFJMGJgxjzTE3gK4VFR{c8+QH#I9`w| literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/UnsupportedVersionException.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/UnsupportedVersionException.class new file mode 100644 index 0000000000000000000000000000000000000000..c5df2938812c08a5c6014b85850f5feaa5e34e84 GIT binary patch literal 801 zcmb_a!EO^V5PeQVHdz8~1Es*p^aPjP3nyB*pdt`yIW&#L(eaKFhh2MRJ5|e%A%O&U zJ_?vkLj#v`;oupMJ$mE!{J#JA{1w1+JWS9McpJRVD`jjxS7$0WE)UV0>Z8eBOf9SpQUECD-d1^fcSDsNJwX14Vs%D(5y_=L&g=aGD zjbJyrx&C87!}{!cr*y@HbXF8w~r$#@B`o<@M|$ z!99VsLJ98wWt&S$1o}rN1h&YCg$j5Cfekh;IEzLLjtN&!`LxA3{etfMLHY^(Z(Ox- jn`6@h?%m|rU+z^gvc>bY&kKOY{!xfHV-jgjpd2=p<1n6 zF*)-mIPxc`B1O3K3-|*ZIZ)gwdLLemt&MjKE|;qCMb2#c>+b39>7JgMU;qB;1pwTG zW)czv@-16a4a!aR3EiYBx73znbK_gCT1{qC$FfyTZ?_y~tA6C)u}@XT%0LP%@k@PpYq(|Y_&FDs6I+TKY>%~Cbdd*Hyoo$AiFnMls$|}svc-$Z%}1=rI>=V z1diPW_ zG8uffXxgl0>6@&sXqM6BI(4{ZDoxv3)tS+{t7OvEb*9vrrc)bY zx9#Ix;NzU<;}NB9v6f<5j$%+pTUQ+9!=5(LxgsBooSYjuIaj@0JXc>IZZs|1QILF% zuG(C?qiEE0MXfSrdqPK)M^uimite#WK zSl-?A?!ojeg`1n!22&^|<@KE$GHJj1$EbI3hAq?Pp~;fcy2Q~|-33bws~NUcwa`QB zF?0pnrdtyH4$}s*x`%WR+FY-@LDE&jMU&t@Z;dx_B7XQ(thTMOe}j<|=S$fSZHz8b zp>c3TN9Nj2(T5rPQvQ=zui@H=39A3m`mZp}X3jnqe>Y%1t9d`PF;0>SiUTC-MME9j z^yaO4mErz`I&syCXka_RN;zDL5`5e zy|+@N(rz#NVc1Wb;&zL`Eh*=CIddg+5rGwHm}H{tFi*ivlK7+d{C}8PLMqmd+7s_& zZ=ab`41cLK*$t3O$$lZ1q9ve8ttWAjd`QSl?=2Fk!0onZ+;*p{Q<5@kaDXXAOW=&3 z9*aiP*_!0G?>++er99KU8w`_W3holnC0r$EJBhP?tCBmXRg@$fNJ6E<(V6fe~8i6bYtzRBfid#o;dXd|- zU1Ve1ZPPdcg8hUr2NX7(jbM$szl4!*+wpt~9us&d69p0->n_#iZM^(=O5k#~6g1fG zth<`E6f8=qAl0O!3Jr7t)p^~w&nz{tzq}UViU?KElLp;jUGSj|o31%!=1}+LgnR8k z;8Mr7k(@Gqk(=UfS3c+~<2~r`Zt|1xHGyO>r6hcVFA>~uNWv<!4*^z z*6=Nbu!@s_3M2#9CgBM_Yw!gmK}Sj=cL3h#w--w);Xh4>F5@XvPOZwYcc`reMf{UG2zf;*A8 zk0Wp|1Y91*1YF0`_abn=?ZAB^;5zoXAA$Q_z&(IyyGG&u6mSzTDJzd06L3YC5^(5- zz>g2R^&~?(aMJ>=W0wd$$t3~zDa?faFNOZ^_%RB9L%^3|HpI_`_>O(&BlLbO;1{4G z=-t6pBXEX*TY}F7+}`v3F2tqa^L^mH4{`ml3@efHqUQH=h)cj1=)nYh2^Ri6gX{b& Pr~w5H7&L&x1{nVUB%WkF literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/WorkloadUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/WorkloadUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..9b99537c77ec7ee396af4f4f6b34e080feccec48 GIT binary patch literal 11662 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/BrokerCapacity.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/BrokerCapacity.class new file mode 100644 index 0000000000000000000000000000000000000000..dc0c94f3afb3f2b7985cf9b0b1d162a07915d76d GIT binary patch literal 3929 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 KidTXfEd2prTh*ih literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..f30a221b60c02b02bc8c95e1ab81495036ed0776 GIT binary patch literal 1595 zcmcIk&rcIU6#fPZ3l#+s6bkY~K|q96(TgC-+Ah*$X`5~#z@=H1p$ysXHnUq2IC%8t z-(#YQ-uJS(fgj1h)3dRaJ+o*z5Va;niNM#8V(5!W zJ;$%<#l0i$MhwH*@@C#PtJz|qQZ8E6k43|>t5)8wFmzg$2%}|&Zd=rRCu&O0kcq(+ z>ypYQg??>$l^h3Ju`%>t_huNo;=68?bBXj3l<+n|nVdN@UHMg^7N!3ETQ#BqXE;+{!oTe9*r0S1I@Q?&BXtQ(YiWbhk{#jEh zOKqiLn4$ObhD|90*@Y2?$xUDKFz}A~{)8LU8^VjbYoZ~8J&)JlO{CKp!s8x{VVoLh zMff6GWf+{jegbn_l*1A}FEs0WTvi++P^}WUj<@AVq3m;TNQ9=Z?ESo-=xTGCz9svb|=X`;kM zbq#cadEX8Ekmiy5(Ym0wK)Qz~8Ww2F*rP|naic_>2AyhF1FYc{$)LW_u#|WM&IXsE zXG4S`jd10p!9z@fyy;2m#wa?_NtQ-d8@ez|Sem{^aVLRi&~uL8P2j`07vmZ9qVIy| zJ~HS}_+{`QVW%k100t@NS>}g$L|LE5s(|!&4DIx1zGC!etZRb)l}g~0v@50R_XJM~ zQ*m!7PStaB+^0CMC+0|F3e)7x@C-A5F)03<89ujUn7swVmlh1|n4_$1RQWuusuI$G L6kcEvFY)>hKbwaK literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlMetricsReporter.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlMetricsReporter.class new file mode 100644 index 0000000000000000000000000000000000000000..a62f8eaccc8ac2f35708002fab359fbdf743e73f GIT binary patch literal 5271 zcmeHLZEqVz5S}$o&NgZD0tK2vdr2uIrQEf=)09egk){b8)ut))80C2 z`fK>k4?qG5zVmzdjF{bXV;{9sH^FU%V(GlQw=>Vq&g{J0{`vQ>zXQNmaNmFofgfVw z+CJrh{eT`)n}>ER1@|9uJB*m1G8DG!bz{kd?T2mV*{Nl-QwOsoe*Fm{sNdvh;iRx~ zFi&8y&Gu;5lh%NU)?QD>>j_T1+;pm?7Q!{0X4y$gl!Mn%VZPR)0?}H;y<9Ch+tsbI zTCwRgYOQ~P(Oz?j2AoWhyJdjUVG$Cz+1G^gSMMd7r@Tl_yPf zY>y{9t2+d;B|IqxyiH)XZ{4yGp~%5ilKXi(5G)S8L)JD?>WF*Vnr0-zU61+kU9*r^ ze5Ol-Ae81VGmq(IXi`%iMXZodj>}VsdI#q@QZ@IP*=DXs1#T~*?g8yEbD4)$&#$b< zer5Ii%F=$7HrBG)4q0rf-TPF!`=&%x_Ao;K8AL_jwUqB#N?q2ou2IM%?LOgPv zLn=5$?=R#}33CR<@nXcOGLggcl7V_2>rk&KI$fUya!e}~;0l;C@D?l)xHO~^QsvHUjR$O_>+dqr zR546dwV_MBonB1qz0Asej>X)MwaHc7SRc<}5xyU``yrQru_r>mB-#WXt<qqqrKxlGOp=}|X%Z-G=~Ae|RW@8oEsyzW z@RCS>x}u9z0~ar2I9@ab@>`BKPr}_lGT>uOUp;jh@F{^QogNJM9Fwf>rgme%m#G^k z2k)sw+W?gp`!^9uG9WNh=W&cTPEEW{z{EVAP{SP{@Cx3LbW1VBko#`CePl z?IOI2^9Y1<8Mpw8Fgq}wgUiU#pMMRX;9D9v zgETq#0B#NNsqH6x9}eN$KIY4Ujg%RR2DBYFFtuo44|S5J}i>>q-D13R%Y5s+achu@ZXqd zqVN7FotLi=AK0hsbuF7fm3rz8q1_zWnsdrFhT$boQPOVV5qsoVze1) ziH>A8(VW0tH}`ly(*BvJxN`WhkitGiz{czov{t$bXUXvAw^DPX z!cE?$fr?@gGAop%u~us#kIX|_8(Hac+U7yXG#a7z8?3|Wlu+JI@VwpNc{{=L(%^Xm z!JDFO#SN9p(umohOD&@Etr&yWkBSNMT!K6&);lUkPpgPxr7gw9n_Sy18ZhZ-*ErpE zb-*rVN~{R~%&?c<3=C=&Wz=rRyf%V~Jj5awOfI9vC=LadDm4ifH)a=$PA35tIqel| zW0nd-6WQkLLh`mpm$39*PSR!JHWhMHZE(skdfh>U!aRA&Ot+w*6a!+=j=gz8J0=jKjG) zoQCrRCL8-(oajXYz zDJznv3fBodKe#!&-khg~@hZUDZ2~hHqO$^Ag=s=Y59UrU26@PHDa>c|PY*Z(l@7OV z;}JO9nC**OZ^u5W!VD>G(%= WP6k2=8pv9LS@7_;it3#Q_kIJ`PM)~{ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/jmx/JmxModel.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/jmx/JmxModel.class new file mode 100644 index 0000000000000000000000000000000000000000..5bf487436c80ddef466a075c338747048d0d2d63 GIT binary patch literal 8222 zcmeHM?{*VK6u%RYO+ukqK#HI)6{ST<{4df{4Uj@1No$f8TK~k!X4($jKRL6TLjB@* zpTRfa0X#>~(eJ*1kKhN-@ew@U+1;d@cGqm%6*!)L$>z@7`OTfXcjo@~&ToJJ^a}u7 zhgAhq1g31E3icwCl( z0*48la0lwtT+PolA2Q7$aO`gRL1TWdT5nVei~9Zi7D9s;;DjFZT=g<7#H0UP&j5B z6&%;?i5S>5G7aap4ea(1$Z)%8(x%SPXtGRTnA?Spv&Kw^Yt)gg8M$n`O*LG5)@GVu zPQ`V^5uG-fZlfzpCHEh?`?&SUWTMJem|&(HaiTQW*Md4}hZ$`h!R0HfGTZ71jn(}& z>_0NaP3}w+sEqG?qaiK+jJ; z;U^2GKy&mB)>1XgXmd0Y$Es~%p@R(jnwrhj*O=O3nob2Op;OlBDpSX}mGc8S*A3{L zAJ92BpmP{QV`|G{wrX0AYEVa8Q_;;Td)&rg4r1X}$;qvflP2ckA$xXlqiqRC#UU%S zDY$l3)u<__YcjRFu>ZfN{~}_n{XmmH-(GTeK*!pX4%Yv zQpP))2l%N!K@3pdo-YQd&tj(G8h2E?gG2*QbtD6#qaoo?JsL4Sp>kX8m@T%#P1ee( zWuzhURCb5yn<_UqtaYYRJV)315t4kv$vdhq`wj3?a*>++I_}Yxb&7dBz)CPD&-+Yk zz`}MJExS}t&}|%pZfCOYJ589_;2N8k8UEijOW|M`t{%h!9;kK*M$CAQgpcS5E&|E8 zgVctJ{Vbyg@(dSJG&dG0o+mr_RdBU291;tsAOziv0hW|wlEO)De>{H{#dsYR=HSQR z`n-jyWOLSBMG9_LJ38B2)MPV#c+s&RVOcg4*->*p>IRq(B0~n zX?p--axsSqbnR)*mz?FXkYoUb_%db^h#c)!Y@&lRmT7U6vTzylLvRV+A#ggRP9Q(` zhfA1hDjlQAL|v9RWWB-CsE#K$m$Kh@*jeLP#h5Pbr$~i$i&NthJF63E_?Unmqp%QX z(Xl=$uoi{2sxDWM!slZ-!N5upe>gK-oK=YUWp6*&o>TBGJpz9i`q#@@wV?DcV=0H<=J zahAYe$wXt+G<)5seR$EEH6p&FsT-c?SXlO`ncSjyl*{`3B zcFXB@tN%1P*#QUKc6|^$YM(g=#QUh4dwDd&CAm9>RU(&ux;G~ZeD2-;Z5138sNwCB zmmw5b!0x^xnF9B*+pAzHu!Pq|az85Y1%c7N4IDUk6!;1$M1KWSfd<}tZLcLMKoQ;B zK?-ODjt0n)0%(8Wiqkt*k;#?0ZR15|9Sh1fTmZbh#9P(la28&GBPb~-r67%R7LNAh zA(W2=`lbGffczrLCj;^+lwS(SXHY&HkY9!oI1jJjTqE$R|9lPmrL6kT3oz!&ufs+6 z`3Ag+PX%qd1mpNSfzk(Py&RSO87?o4y!|8Oenlw-@8Yjq4dANY!`~tIe-_@y5rF?y z_%MJV^*n@+LJ*8lgsbog&T|b%reLyX%NEj92$BzN&Ye!ac}z%lIAVTHhH>I5@f#camsoGHsv@058`%qG%tZygglOTBc= z*hp$NGYdA%lEgZnUYSK5ss!3aujcWT-A-mwcmj>S&?;8`gg~WxFeXqv$M!lj3ABFM z7tUGNfHeXycd?VH)pHq9VNIem_sYgJadx7mIif*x^dM;@h2{=92^WuiD(SwmVW~L$ zQ5=?v!$NV0iuY+`WlCe~so`EcP>-|ZB0;Ikvv3z-zKbwd82)W?5I_Sq)?pJ`1Zw@# z^KN(W>vD)2ji*#DlS1=UMd# z1VfuSAum<_RC_76!eWg8#)H2BU6FkHEN5N_1nR5WSTLqHG N-+^ts6WA$`-EaKFu)+WU literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/LoggingModel.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/LoggingModel.class new file mode 100644 index 0000000000000000000000000000000000000000..1cf114aa2fa8d0e8f6a1e9dbf05d68063f0112d6 GIT binary patch literal 3225 zcmcguTXP#V6g~=R*LK||aof;PE^270&1IK{03~S)A#F;jophRznTCgqyjE{( zH$!;iC-BbyUdtBhZkw3J^IdfE;>hl{r%e?0B{#p9GD<*Un}1W znTWi7cECI#J)I~K{wO>dbHx&=JU>Wv!j%`w9uK@g_WL60d+mJgm`w*J2~1}I0mFYA z-F@yS1TMEX9xi@+Yj<^HeeKc1-OkFB-Nz4}5ooku$Zn##sJ~3${Hly}!lGoG1u3sU z6(LdC;=UUz!zB@1A3-j>1X+PPftgHtVMN?1=n|;53&yDGN{{ccG)QmcO{e}MqmAuy*0G7Wl9SmF=Nd9GICm`6RX2%NnmB9Yu9;5FOdFr6c%igg2i zr0S%dJ3Fmy0+XxgHV0lOF!jO{50sLs0&`^Yr|%-gwG0k;kNPrQz#TO|2gY(IxnPK#Lqp7pIgMw&En?k|I>pS#9Kf5QQXg+4&F@yTMTMp*CgPrmc+aIByrU+5*|Fe| zis(Q-=aiwh2crnJYI(AbgZCI+VCC|s99`p!K;-x1WOfY)F~6W47LUVHD|%K!c0RL{ zvQlUxRD)T#T8E49CYIdh$uee&*i;)+Z#@mWTy2@6XX?82S+LENFzaG-G8qUg+-vP| zbQ&z)mx8>49oJh^8nYrinhneCPFhfb>jZwWD6}^2s*bAumjpZJ^=df+bwBG) zn6i)gAzI!nwWCSk=W*F#Wvq=5fm)xN25TM*1kNG#VzFF-4+%sTjO}vXN{YZ$q;vn2 zwqF5{Kw!bh#&WA>LEyD!Yo`ME%((Vyz1ZuKywIDcKSXMqGF3ib6Xp)i6#mE_W?9>I z;B$Qb94DOvUl5or?*R_r1#=1n2ksKMFq+v8d^z&c%N>H5+7Vh~q_?nLYPbeyA3ieA z!W^8z5ixN!0r)tg%yNWxOAwYy5pKYHLkLDwj&QRC zVXYLQ1@D(4d{BbWDMk3`6b^0)!d5B5G<;mj;Z_O4_oWD*{0D??3Bm-%&_wK0_zLGb O#_Kb<4NGtb?)?L4U#yb= literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/LoggingUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/LoggingUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..5420217e6ae0c3375971b3cac11c85308c34ca4a GIT binary patch literal 8041 zcmeHMTW=dh6h33p_(Gbrr7aLB-Ihz8QtZ+OTIx2%Bxz;j#3)H4!Amt>Pn;>cJFD4o zNs#y-Jn#ef2S^~nGyEvTncYq7jknoxlC}}*i!Zb1J9FloIoJK?-{1cPfO}BSLyo{g zAnmG4xmSHcpVBH9)j&z^{>ZDsXOb!*tG3e%6q8j~beL0hM7PVmZnYVGKT_NY@-Rl= zRLH=g_^j1_!fZugyxDsAaB+pe`Q{3-Fa2)y4VN^1>>CGtEBVRTRzZBJAY6@B&3WwN9NLE5PdnayPHzhIhHg)f|D> z$}{T(#^zDvJe(ph)n~FOrH}n9xqaKRsi(JWGi&F7dnse_Ur`=~mSU@ADRUIE9{QCL zzrzzYT;Jg~S60wNmq$-P*OEOOUEhivxjbX>!0LG&w!uBTwj1~af770$2B|C75(WzW z1gR|Q>3beA9$;B2rbU93lUhnx)Kc3%GlrCk^9~JyyMv)=E`xOxQjUTsd9DnO7{4}n zcZvELbUOUFOl^ve)nzI^7}{e)3O9@;T0vI4zN7;*di(~HfmWZ6H7*YVjG3V#cj!vR zhUcJ-VpxUfxc@`s68~|b@iV@MM>KvIq^az@k zZ=a6=j>V~yCe66f$3o&!?P?@+!}EIzDH(M$bWm>xN>W=zX?FhvkyNgci#1xN!TGo` zH_Jp#j>X~rS~D_OT}rxb!0bij$r4P#*$J3{a|F(nhdWi>gibZF)LQPjZ6?0xcbi2*!oz9ZLd908P4|`T@8`s1hpCWK2C2f9}nnFG#hGg7DgPzLB^2ez`BT!lm2cHkP?z~RNnh4)ohA-Rl z@EL*PZj+FQTLkhkRUW=T$dLc%0o$v|WLnI_J#4v>Ynls_dAOf=HyWuBEx8m;=GSn5 zAHXHRcb52CHV4yi0><&zG~}UxtHp4&g#Qo&C-HLEGauze2k6 z_&FXvIRS6t?}>;C-h#Kof79?z%;73>&^tyP-c8|92|47DrU383#Q~gNi*Qy7jt<~1 z!~3bY4^nVH4d6b4E2+403hw7!ToJCq$Emn$DY##EaT8F1>Hw~<+3P8|zjtvtxPh9; W!A>7~-847R1L8U}&kt=sH#~IC11S72=N}fdpdZMN*xR;>ZOHir|{?6|E(1O(!Sc49M z=BW1GAB5j-$GG7%9+unagesNiMKY6i!qFgsUT6f@Q*KpR*G;e1PT+K~6aF`{I;yiW z#~}fKYziynu`0)I{>rnm-6Vjq;co$0Kvzr9#M;AZx9<8+(7NjR53ur5VY+yh7(ncL Q)hWM44>s_QGpbJi1Elx8q5uE@ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/metrics/MetricsModel.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/metrics/MetricsModel.class new file mode 100644 index 0000000000000000000000000000000000000000..c35b793f6c66314405e1004afa65e4d12ca860c1 GIT binary patch literal 5766 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRange$IdRange.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRange$IdRange.class new file mode 100644 index 0000000000000000000000000000000000000000..7a9d856525ecdb7000ae8eb3b05096142e20e90a GIT binary patch literal 5912 zcmeHLUvK0z5TEpV-6prkmBR7o;J}mvwJ*sFPZW?)>4}xLdvI4y;?bK-cYT-G!FEc^ zx8Tztfdub-20ja7oTPgx+Ny@D)K*%p6er%F$1|SsZ|wQ=?_YlhfY0IM9xMg0XLOnr zT*%}ZKjeu}iLqJ~KZ!(@sJT@-N%P8B)JdT-%o9n^QmNb|BYGQTkGY)SgSPF#asX?! zq@4PbN8@Lh+5m1E%Qdy(a3C#CP;Uot17#M#%4b3f`$YhEH-|6AJs}yWethDl{v!EHKamL%d)NrrYM(z?cO zU1O(c{9oiZI*OuH+Om3dWkt?XF5R4CWG6OW4`AcVIqEa37-#ml#3=lRTM9Axzfn=> zHH{bOD(T{-uovhmS@rU|d|P3K=S0h(D07ht%S=U7MuZ@Z)m2KA#u{GQ++xD8N@jQ< zBxW(&BcgL#xgM4uGa(Pvb7Y+M-So5s&v+Xt64%lfQwMdhvkq^@19`}Ek#)Lebmy#d zyWLK;`cZC^79Ck`*RaB=O9)ODj)~EXadYfDJSV>M-Bmto`K8wU_$&P3+(q{hcFC*K zrl518$Hx#KjNfc7D-~#`Dq|D0BRsNANKl9#XjRlXruKO!QsOr0Qa(69Z5*AtR8$CK zD0w!q*3KSNvfzKX&fmFJXn6`4LSH+qMxpNBkA3(oP%?}MmmIzJ>Lpv^=c2PwQF!)$U5A~Gio$Cc0N31W zex6yNPHu6FmAD!!@wk#!6zH2Jya?C}G&``*$#b3Hh@cOz_F)x5s(uXV!qQONzB}p% zus&2N&!2KF+;`i#Y^Q>%CXa>}TI8YH&Fxc%)BtX6Zp|t?tMGPkaqKNEVQk*XY@=-y?V(?$TEPZ@`=MJdxmVjfA)6 oNcee6hfpv?%9*OP3&EFcbz8v z$B;mR_x=t1EvU2h<>HhiEHo&Il!x2%$9TTyH@oxCyO*y4-~r5cU@8D^bea@g$Yh;w z@q)-{=iKMkuDmO`=u6o&1E{FJiPj2#DWUWU_TPc=S zDA|GO0A_3MIngG+4c0NW0i6FyNMU~t;M(2g-M7z3x*RUtTMb}(kpy%g4B+za`z5WF z?!tv&_U&`2(WrbAGnT5N6ghX|SgF+@$HM%`qHtw|EW8Nfxv@k`rU+#Mmhse+>UdM^ThYTULKvS&_4p zODA)HY{$maLD+_v2vtor}D{9a*& zAIO$oQRX5QmYIrhivU3ytE-goi#33A_Z}05RWidhAu)^DV?s4o%JpaYHWPAFZ6M=R zccZ-=JoBxuh}{_Um|CloowX1#J_ID4b*|d&NUOi(0%_6W<*J4iPF2jx zTeis(O3^i~in_VxJIP|Mxfcl}*v{jpIKle$OcI6*4 zJoz<8uUb83OZ-A~FqLnR594qO6X29btzAk7N9K%b=M;D5iId@prU{xfbqz{BYWigb5&B{_GQ-g#hmF zGqY(;aVA#QgPiD@s&tAEh0}euy{UBr4;ldVq&u$(nlefINYL0xr=#rvW_nVhUUX+2 zG#$7Rz|xV}7QoFzj$$3SNm~9lK{{}I&lIZ(b_c!<;Og#lYGOAj|G3$juh8L*!qV-d zv5%Co@Erv31x?@prs#?yOlybkexRpQ^dG%~?jLi}3z&IR(_Es}(E!n2rgf&ij$jt9 z(4FHj*W%zfe;kK%aFxE9f-m73{R4bOzlb;na2>ve5E$KeNw;s{7Th829qsjh0UD?4 ARwbd5CY_Td(xzz8{U=<-SnF)bHWUSUl5{97E~-W?$+30*Y~FvAbI+-}}}-rM(e_vQD$e*P5zK7*wU3=k-W(#iYG z4f0Rf9?QETA1dkkKe~C*tyWDuL8+K;qCDnb%ft^J*F4ZrW89K_rnL&%2gYj*0|#_i9}82JY#iECtYEuK4c&I zke&LF9s7{o@}Wsu6Fj7WP}FD2X;6iTe7}j#(~gL$vbB%eT2T9+;3qP=ep5(An|)h7RR;nRh_lU{5^b zlwsU8IuQ*0ts)REO(#?DULYLHzD_L%3^+NN6RPVY`fyJ|@BLr_2|+OTxgP+yCS z6byH`gBdLhHIJ&MXPECyqsl~=3sSO!CH{THU!Zgouv6AbDNwww&3P=Lwr3=hjhN7w zann`F=c*xUw9Zw9@2kWm&_#Ep@Z%a2+q}(F?6i(zJ=o<%z&W>Cdnom`%mvlq zE$%`SXG0SkQJ`F(n^p;<1Z+gqI2L*G($nFmH=V zSC7-lLDg`vYqHXxz72M3Mmi3s1g=a?m(v(8WMPVsfl1kImIwOO2@R19%xj5~J3$7pXPim>HUnP}xE$Ly17CJ@^%G;Fu2z$4aTOaUA>081 zm+&8jEZm06FodHFjt1hf1y}I>HVn7TkKlMTogc$_{rk0aJRX0K!*zHGac;yoH(?Op zF;yext$0SS0QeBO4&b--3rsv7f9)rDw=JlX_!e7W>AJBgnL~O9>oY+&MeG=jS?rj%EuCPuD{=9{gc-EOYlCT k48RAtbAWMt`v`e|g1DdJ_XEhmqTUN?tAPLRd=3kL11!Rh1^@s6 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodePoolUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodePoolUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..3a938d59f0ede8ef19444584662ad3ce9ba78e90 GIT binary patch literal 9758 zcmeGi+j84P^lX|`wwtzTX-jW_8g5Pjn_ek(8fZfr+$c@4+sx1xW+QJLwX)=qvt;;!Q&;7F6KmLC5D*#-BrUnxP zmVM8xcBti4AJA=DwcM&7cvk0ItLk={M+4WZns(0*m{;w%EoN68{O!7~?N@K()g8RL z7g)Bh!6bnhLBpm_ySldVfSCb-y~f(|@=}AqF{8mu*D)>IqJiZ)hTCp4uZ9rwmSY7A z1oo8Y)(K25B3TXg5jeO*ZOQXouK@eWjC0TNnD5%#tfiZ7r)$}Qn%?!?4V!iRt9q$; zcZ=yQX4=$4pe{8Z(l*m)Ew>VhR*6NcM50xMXq7~?S-s^lUw7O<@6f>9(gUQ(9(7To zG(}Whg{!W@8Li}@AM$8*x~>=KJBYeT9lq!W(_{}W)n z)3q(r3Ut4R83lvZ!7%KZm|65NNtEYw%h!8Oi)~sC#@8mk!E4&HgEVwSU&TDc-yoDu z9UhP&;S|YIQI=&SlInr0Q$2XxWy&a};-XD`f4(p8Eo9I(EaZ7GtkcV{(9MUGC(;bK ze#tU`1&)}9vMp|5 z0nFmRxy7r~lCy1juG3*oaL04EtricEff|t3jsnA~{&d~*=wk(XN(xW{5}YY|(-6i= z#ZlswimSXy5gmy{krA>Y2cs7n{WgP*7d@1PaCzLh?rc-rYBjJm>v<+ydStRL@A4!@ z$mz{Wj-~3#&za33KAqNx(7d99Dv%qi_VVzC>C9xl-*9bgq=%)nZR%MR+xAj%T%st@ z$s>gVxtB%5uZBT#C#DzKg10u@mRh%y7F!ZcQC*7?wiF;&#ZgdNo+wfZ5kXMGdOA6d znJ(Db)1K~MO zd8%>vY-|#kjeYID>#i_{o2oac&symQpTL1~Sg(_^eIa}>=sqEYw6+%D9YVfWaG@c= zowm4ALQ$YIhMbd|Eme!=;Vo^hq5hl<$OKNrR$pn*O}<;0jMoKtpOBw+t@Qk@R7{&i z#i+;ojGCGUG0LL=mUXvDP%jS)>fu;J0{ufm{(5;`D0hiaNHj_b>%Z{1lp757q42|1 zT5Jhu_O<|lBe4haVq9-E_@@i(T}}-4AY5f)-aRXSC#fvhgPbGqgMwe>>OmBYmm?En z^VVj;VtB}*-l}gl8J=4>Qw~EYnw#eahgJgT`(PyU4j)y zWt~E0t$EAL;ip5GC`O6y3h*g`rP0#y0~!i^6DT#sr-Yl9*inglMe%7z9JtWn8i6T6 zN`ub`?C-O=2G?<`LOkN5xCV>3EhBFGwmdXg!XqbKM;a{S5fmIlHK=3z)bEfQtYE10 zKMN1AXt0XWGIZNSgEazLGy-ezRo@wz(8dI&S1sSi52JVSYqSq%0QtZZIs{I_6zs*T zB3^4yz~3U?UBtHp|4Y9>>FdMOKf{6F@NNPQ;qPAYW(p4D^>hdYufY+#E5cDYhET5y z*yDoIS)^3J`;gKJ38iy_(uBZ21*a4IHxm4*1piG5{&xv}0d$lsUVk>h-;v~P3I2~M z{C6|(-;>}!N$`tMhPh<@v&s5gwov{LB=}EL_#Z(f!LLg2KOV#HEH2G$)#^K|YYU4z>uYPZoz=OOMFPXMQ|C>b-QS-jFo1ZWX1?BLZp6z_ zA<%oo_Kp~VzE{E*`VE0A)#+^lJ@c4>0oMo&p5iPjB~=-QNH5*;6%VC*%p25^ULahi zh4g8loWLhj=~G1()2WtI?RtJ-Q_f2nfQ(3IKLX(~b*`3=4&eBA9l{Dbc-a&@z}MORQq@gMY} z%#Z1j0yjaLl~e#7Ql?r`M)k*lo0WI55OU!a@$KTX>}$RsFYXMRnrE#E%>QDSVnFDH z%jC@KfY!FSw~=rgT{A0Gv~$uoE9*)+JPbFaixNI>eaB1*h6l!_-COpm&XG+_^K++Z z+TZ!~+`UXlPKi9GQ1wh0fZ={H;Rb=x>e;h6K4S-KNZQrN+vTbrS0O&MrNi9qtSXtY zM<0lgK)v?&Zxy@}#!)Eo6_Zr7F5B)O0u$9*@@ux1(QtM;HRNTPEyGw1!kenGWa@G^DGbXf2sGSda0P^AifghLUMIPQ|?-MSyWl|(0 zXKg-BAu$s$H)W(8z9eFmj<<J4#a?m1dNPQ20X$RD@oRXCj>@1Cw?P1#!-OLqd4{_? literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/ContainerSecurityProviderContextImpl.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/ContainerSecurityProviderContextImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..2432ae550b466927fc5add7114ae66f8a4b89b6d GIT binary patch literal 2530 zcmcgu-A)rh6h2c5OG_0ffF)>6VNfBc!iI>yu&<^bGY-VN~@I8D4 zpTR^Ez4xJvXWQKZP0bdATy$q==bZ0+bIzG>`s??%9{{ipk1WU$;99wk&qUztu`Y9j zbhJ^z|0En4a>a~Pj_XC*aOL>2#XU!JH&VhJhDz=Vk85W`1_u4PswXS&lpzUlo_qb~aSQ-PcHYZT1)%&k&1ePO>Xi*q?g11uC1dYIaZRitv zOg$HYFfRx!RcZr14UUnS;cL|$0{IPOZ@~ouvqv;uDJ9i3%#!^2hd^;Hy)JK2SNfqq zMyKH*g*UxCN(CBd5;;zRO8imZ=N8)rOiMN?jJjv74NxTOPJdHgs;5 zgOa6{9crNwM5vLJQEWqAEF_(iWtFsN(nuNB14?NZW!T4EE?i-#j_}-I4+WUS$i<$f z{bsLJsn9eET6`A|OUtHPc&g&E_uRZgDuS-u=agY>Iwujv-Qj6D|Bt+Fcezq{`ZLls zX6U{oWMGXO@>KOtJ8`UTDMAV6OHhC^fyGMgNMP!yr9rzVK(jS0``gHGa@Am{DFn(j z=`wGJDG|?;k9pG(nn1gDF1n1;xl$P@?_Z>Ircxc4pg6ye0wa9B8FYmfNc?52COx%8 z-o;v4jkRgGPT=zxx|(`ql=%!>hQLC+r;`nVgjWcBIYYuH@w2vf8f#2+T}H~~uki{d zP#v87bWcM98mm+99>MTAH*F;i5Y`v*�%sJnD)8Bu-{{(;+@X&z_flo&JUdV*>c36vf zLV3n&5q=h)inwN0Y0nR0W4ZQ1)!>0=xF2g__am*gM8J)=p&He6Z9}V;XmGuvq~&{d zHH-oWvIM5u*a4H<-g!oI{XrNp4dF)Xuuxx7gryMjqOaDl+&Q4X)QR(c#JN%qMHsku=>i#MpR!bqT_ zP?F;2>H!bUGn&uUnw&PcA25wZ5%YI3Yq}_un-jC`!%h0(Ci%Lj2y>9J2qUE}MgJ{U*TR2FeI}FGbxu25?zK!ebZ(Yi z-RxmbpA@K7lu_gz&*xIY46y2gPsuXap+lYlmI!9EqTrFJ=G*plYI2q)OyklCJ5xz<};Ydr1)YBgN+;jD%X zd7935G;AoUnU3Xp>$ftga}NLs2Wo^rb_J(Cse{JS`;b6sPoCIpHV<+EUuX_3s+ z#jI@#Lx5GzScp+5=SqiCdrT-NO69|ksKf7LX+_9aWlI==$-YXoqpgjYYrfLy!}2&> zBk*Mi743MOA6W>@;+~FE0du}d;Oqa(`FMx{n>?ulR=lcW?ejNy;SyNt^6$~jM3>qZ z2hws?CbA^(>X!Dcz`I=g&3y-MBM-X(Qo1{Em%x12dJnJzB?1%py(2je+{a5iJ+%Z1 zYr+_0ehu~6z%3v!f`2kHP=rw!!?z+hFpgsuzvLi~&k3A8Mym{t`5#dDSiJZRrhefp z1DEkRhBkoS)A%g3-}5j7vp7o-u5=+Jkxq&*3Rf}C9C{{k=5g%glSDm0Tj-Ndsc$|G lTpx&bqYv7nK4>FAF@p@&a1lp<2ly*s9hTq@+=DWV`~@~O0^k4u literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderFactory.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..004e53f33d0e16ac3a7d43a18ab4da133c628629 GIT binary patch literal 4202 zcmeHK-*4PR5T3mz@!fHdlC~7ek8T5P?+VyF@I(s|L`hWPG!Y4r5aMCa-dwg_dr!OT zqb=|JOGqHWJAV`~w(mIS*buuSAXVhyVtZ%4nVp^aX6M)6e*75#K86oGXc73@=qN~- zNP~xL!UCZJW3@=0ia?FIW>)DSl9{nw2Z@Tg3=EGlE$oxAR!2f|6YQyYfBJ1ttBHuY z-eM6dKJj3Qz{LVrvUC*e4j=N!5?Bd$x3@RHAkYp&H5ze!7atL?&?RssbU>oW$~}<^ z`w4*y{lOuDr497QgBJ;`&P{A;t#lh!iTB-?spdw>36E){lChA?3YAi{Gn70rAJJ~- z;F!~xN0Mn28nfsT8*#cWls}DuKZ}7sje%dpz+a5PI*k=KG*y-+%tpu5A~1hE#@$wd zG1Pt@YCreae+Dz9$08XkZRuQ}Ml8*34>_G}`8k(VdUV#NYlsxbkXa$m!uor``^i{} zNLXqzEE!C;6w@cmD}a_6-ycw6XqLwONTiq$N4SE|ER(h>?b97Bw0s4nC`%Z>zaR-2-zURyA51N=oDurHvz0-Ol}V!lZ~dRC**v8Im{h-R9$nj|<}aYaUdg zYn|2}awsNmvc;LrkZK%WR58yfRLx24U=6!@Kb*JcGRyAf?Rz!E@IJ^A+`vKZ z7=g7=MNA$}9i4t$vd6*@_$EBZdkWqyE+OZ}v+K*QJ~-CuTLJ@@@6Ovv8?KR7tHzb1 zd3w~U%>Q|G-uV7Y9wpGtFR21~_$j9JZASuyi!6%e(1y1N{9Yq{Y9+&>fm2DLyel+M z$yyz)F>D(sAwi8GG)C?`zjRLEg%P(i<|1&lKRAV;-XZY)xdgZIabS_`t4v3H3kOI7 z*Bt=U39^`!Jm}{$V=*aua0f@q#RT`@J*034j0gUS3A8L90=*q!4Bk!;@Um>+2H;GI zGjR*9!7{AiQx`mFEIhi8Q(rcDUz@L1ii1;Uitwp{(^5UxP-qe#mX{V#^+us z1y|q|d~3s1cy)?!=LEuQ4uo3;LJRde@H)Iv(aXP;mfv*f-8-Q-^EkJc|CM^z9eUdp ky&JGzu{YOy+oAX1PrVl0M9~)9f*`j9OK=+o@GiXn2X7d0asU7T literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/VertxUtil.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/VertxUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..577e8dae40c2e25e53770f9f1dc54686b351d9ed GIT binary patch literal 10727 zcmeHNTXWk)6h0f$%68K>^hR%hD7U1vHlr%{ z$P6<)^AC97H!uS;z%xGv{sF_0WUp6_6m1%J+L`9Xw&e4jJ$v@trN96C?GFIB3S5H$ z0u|3SOAX4L(j&S~ON^I1-(`*OScx|+m-^f-nRd(bEw_7P(Q^H7@A%BtV35FY2(+oQ zQkq+OWSKsJy~fm%whf*ftN-`7YPhb@VceJ zJ^}~3+^)MWcXP0x4F7Y-aV?MA>sDPid85hfkel9g`I2olyeoPkUt6{Gx@FqbMWQA( z*XW9+pJBY%-cPZ!pJIDI;>H=h&Mi-OxUV;;Z?5V-va-Hy;#OotQHgOR z6>BuP>+6VErb{j}FX<+Ag4LERy|b-e%C^wEl)GAL8~&49$a>(e3YPRt=(xL*C0gij z4&%=?T?@mZl7KG;VN%#nP>=3&o$CHZ(<hi}F3!;p}pLcnKd0AA8*(R6HNZFfXwzPp|W+OrPLjDGI>UO3p89dWo)fg%H zWZxa`CS6{mN=v6JUe;$i)e{|0e7{j8pKw^R1gV=*471aYZ(+ZXu}al4UCW&0vpTNt%7Bxp0B)h zHB(7F7!^@>1m2!6_ucWI;_};&wEzV;I0PCD6F53zbSENFwN(x#CI<~HZEv+2OO{&; zaz24W1~;j_NL?0Ow{H&mtIQ)XX6$6lgY%j_)Z1`O0;fiduy!mPoocQ;YDAWYRQW1f zacEFK6DU_|S0vG+%DgqY=n>>`sGJ) z88QqkH!A%CHxu?3=3H4CV^`P_G^{I4YHrYHCVl zwcBZT1}V>`NmprK6)Y?DeC2$sW-6)nuOjMBzy$WwdOdRJC>oBdM6W5!vG5Uggo`Fv zas)JX%A;b)5$*#5x3-RO!IS^(L?vvKS1f;#+N_QP_4fV=+*Xl$Q(t#~bGne~i2MEK zS!ri04F1^vulMd@I$=_=4Z(@)Qcwt8jfCe}5HK$&)(O?$eV~TQt26JeV3Bgf=+c-38$21M9Xbh?Q(BKY% z)2V;sS!?hG*03Q(XWe`F@>GzrG`NrRH_>`(@HOr=-YsbGfWVRXz34HH1{AjvnT`fH z<~tBKBMne@#;hTm*98dcPQLDH1sPR_!F-N;AQ;W8~(Eg z4&m>ihzbtF5xmO7Q8hi4{N>H-lVbv(gECYE{;I%l zDL*+c;m6=pf&WYqKPKVF;hMltDB>psegHnllNx~Q;NbT;wB|{;0W)C0EtrP|sKFxK Wg)iYN_y!)r64YTCR?)s6f&D)ddfin3 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractAssemblyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractAssemblyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..c0d962c1f391a1e81b24a3ac0ed980b8d6ee7815 GIT binary patch literal 7398 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..78bf80dbc721341ae93eedd8eb7a233bcc9e70a1 GIT binary patch literal 18377 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 U!)?lnd-Og|Z+GB6J&nQq4=`B|r2qf` literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..0c045895cbfa6505b29a00d9edf6dfede182490f GIT binary patch literal 11508 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 LPZ4K-PQUywo=a@` literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/BrokersInUseCheck.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/BrokersInUseCheck.class new file mode 100644 index 0000000000000000000000000000000000000000..5b7469790697ee9d9cdc5c72b4a75b80a9c5ac69 GIT binary patch literal 5290 zcmeHL>u%#j6h2eZx-n(Dbe96!$=b;eCcA7Yiv-V060;#H$`ttenIcLuK&hh;9_iujyz&-fNf;j?vTDdi! ziJZg8Y|^OU=17L*9w zjF~(ZbZh(VN8B|87M%V2_qPuStU3qWm4Pcf!HkfBBfDL$>WFBFK$tB8PgORK36z?$ z!!3B4!19P~TPdj);Tcly9|ekQ>GgSsy3!AY7qih&$+pLReV5wh)+whQ?s`liC}i## z>vFm-WOd+R_0qxWz`@alO9$6!M{-RAX{gVPdrA#*^79aVN^@cet5FE6k*U=udqZNU z@I$E#9X(227DTUYb9(9MHF6ZCK3C?vK#U6Er0V8T{g)tdlJ$)6@{FDlaMuq#;R-`_ z4;2B+Ex-cmxu^^@DeuY#6`J;f4nGkA*2M|l!DH6*Od4IKd#EGP9Yj$UM1_yMPeKC98D80M`+WMp>Xwn9Q&*+Nk^hkxb|3><6NO|#ddwm zwX4LF=S7YIvx@GFGUKs}WP=UMOJKoG0?$>P(PWlHu^vrs%MQx>gPz~!suh(gffYx( z%sU>G?%-m{oC-}~-bxXQ#NmEnFCSaRLksmOhW35)E zW_?^b>0)UXgbqqzLP(NYc#V+n|Gio$)CvCojg!EQPTa}bJZZNCHgi@h(y8?71_khq z$?mW<rFOECNa1*~C$z>7o)&(2YIq&+6}X#5 zU=8MB0gp;}Y{4S_mhtQk-X-|o{vGTeSC)Q-8-L>296XD^3-O(KSi$3^1O>O?HlE>d z1*?d9KE}Q0;M&xktsnV)q6q;d*6ebI}0=DaR&MP z*n_pUim?W7d9X2;`ao-?*I~oks(vpu8kLMN4!BA)krc`XnO407Q}cD;*YkM+XHqH~ z^e{NXTNSXtjx+S@X9_!TM*|FE91wS7?{&t597s0^$~(IvP54y{Q3|G-%R zJE>VC)$gM|$Le6A_A5ChFA}MSyEm_kQQyB1YX|uFUt(xc*KaXP)HtPj`e0hlJD7GS z)qh9DT`WBZxh@SR&LvgZjZ+~f#eGMsk%*lu^O&8SvfVyed!cDRDRqiS{)v#0kcUFL zMYYNK`%F?f?+TX=1;KNrTNf%)luv62>|N z_Ov^qzqRa(P(P$p$B`HWq=1a=87yg!vgAWoo$;MY!_tFUTd=&+*)dt zdULnRnOmpD7bgjTm sc#rM?@6+F>2_Ad^AJN;}M6Z*WkKq&e6h0%WLL+zRewCgk>J`fU4cr9{z5oCK literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CaReconciler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CaReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..800665ee5421da058f1de13ea96a691791416fbb GIT binary patch literal 9660 zcmeHM>37@45g#y?KrudK`L@!8cHCAprev3H%{7g39cwuAix5k zWI1iq`@ZkHO^@`xk2Fb-@BPsKp&$BZw6DKifFMY&4cbpH@3l`K$OU$1XJ=+-2Rpy{ z`+r{iD-k_Pf6*zU(PO@67HZ6L3Rl?%D_Cy94?L@O-72_s?y9k9uLCM5sPPH&!zRJx&qkd!l!iC92jSd@4Vv7Zq>lkje%DtjS zd%cKB*bgopl%VO`;9hV|Bi&dL59k>R?p9h$?=irn`HIm4tWvX_ zl5Ii21<&2ED%^u4#zc2FsE@9*)pa&e1##z;Db=O_z90o8r!wOTDBiA`% zTu}`OsZCgRmN^W&qR}3s)Oy9}{yKJj)AcGBxD)yXG%*%BJ3+aZZwSpAW!v)C1gjIq zOry*_hX>qWGnR^^uF}g4E=D22zh#J~z8ks9Gh^n#JB>4pN}G4f#a9<}^<`W)w#sfKMYdpQ0$ zT32w262oF>>ypna*r##Jv4XQ2c_W=CH+0crQ>doyq5X@X_T7eO@@D^1qh5!^UNJi6 zZBD50w$T-hc9q-;*9pt-Yx%^a=eb^%-mLBKzvOsW#opkRyy@2JmMzVeuX}FU<~9FJ zJ~trddainamt^x+_5OqjJZ)v z8jCiq)zJ*AC-W7T`*|TujRodfJ^)XCt&VV-%zqIjvgV^@2R6 zuClUcnU5%R`(LGu%-w@VJCxRrmDr1kCCIUT*64w=975NEfQ zPTmXxq(^BBOTtEA+5i89sw7mQbv|+T>v4*>B;pP?p3I8R-V*B+Vww7;&~&G{DHE1d ziEi4Qwv0E0IFbFPP%1Lulo>ZlfK#R^Q{a?2iF7!HvMVW0p-;(nh8^~g0KtOi6i1DzhQJ{qa?sf~zHJ6M)w)82m^g5(dBGq6wJ2D2MHOP4iT zNZ*o91~)%+0wi7I=6VUxq+2VoCX`u(3MxRiiEzfPxbPNaog(}?6h~LG^n^ys>5{4z zNR#&NmZd{Q9O$xxP=h`-c&82z;Nc5EJ&GF3=o8em;66;O_s27zR0k{LV z-zxJ(2p`|6fQyez3uIRS{fnIWuHzStW!qoiwdo2#b%C%aRC=g)>R4yM`;b!}dlL9Y6q|NX^O30+_jN*%@Tu+kFx?;yqi)oaBN?D| zdK!^Qk;drsZWLgIVo`xjr)N-3NoX1upLBX3zCH0xOQ#PYl*(|f(}(1Utj3m@P9MR! zjI7p-Ct+blr;p)iwsyBUs?#S>tqH$iI(-V|)aWeh^ck!o4~I^lLpYL;imIbdU(o2D zl#E5EFNxxvtd{BY6_jX1lA_bsG`a)VTAjXum7~L{)3@;TZ%;mS`VO|bD~;0WSr{>q zPU`f1%x%9%>hwbxw!JT`H0$&uD2BMCtT^fP6Ui$XwRHL!^a#H#I{gCU;d9HJzk)`H zAUgd9TOqzAD4avUL@imT-(g;R^wa4Nu(r(Rb$TA=5s_S{7r-NqqRFbQPA?&Rb)G?Z z{;cKu_-HJnLgmv5f-tD;57Tk#qkcRMl1^E)Lo`4++1^RJW&a-9E8q8lMvU*rPqYW< zpllD(Vc8y`qq02)o??8M?vm{*=x*8GLwVVrpp#hrUOZ>$6zE<_uaf<*rV-hWM(urc ze@yoP=w3r(a=g&d|6tpDhF(jrle{0I)3SX%J&cy<4fKd?-zeKb@IFID{EwseG^`=C z&%H#CK0frO=V{_^c+1dv{P%-~@SDW{Zuy*}DY}5SEEVW6P=&foOHTKJlb{bdT~u&- zPIAh~`48U4{1@W+8W}VjuRj-SB6x@E&nwpdhe8vgw(}>8h#W-lh-3BwP*SXJN4*KnI{!8-9Z8L$WVhegg!VgoA_@N?)gM(zofm^ga3kJx4#LpVH6im-K7; NE&ZPUNPnUi{|ipfrLh12 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectBuildOperator$BuildInfo.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectBuildOperator$BuildInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..9bbcb3f797d85a585f2386e12d0146e5841c7d6e GIT binary patch literal 5418 zcmeHL-ESL35T7+^oV%t?8Yoacmrz9eV)MWQf>J32qF6Ys6{nRzysY=u_BMCBr`{)3Q3G!gy-rjFMc4u~GcK-VNw?6>jYxtxNH3C0c!6E+Y8w%VuPx+qi)z9Mj=moqyQBWa~p1XdqNCEY^;pWb^B z{^HF2rvz4ZbtLMrPGI9yz<0)Ivj#WGtzVufBdm@`BBER;sf?LJQ8YEW7mLJxNy8wg zqns(F9qkEvf_IuS>c*)EgHq#{0XiBA8VMdVgBqobALH)OZK)d*OEjjIXiO||Ix)4x zHjT8fG*>rajt{9rp5l3m`#sAOZQaOi-N@J1SWZG12jM>>(pz+;g9Q6tOCEGQJq_P;jldjAaq++j=k%W&uY!6XGk9 zgu!l%f%w6qZ1~V4qLrt@t}}uq(*)|F=;)JF>p`MEeK|N_X+_RmVMdaR9nN*8Tt%WH z+n17-p{R&0wx^TDaYx6Jk39=+OY3|P%~@O)B8Q?cj8I&7NIF;_^tDO$1alcy0y`sy zB|{HA$@vs&B`K;c9km%&M_6qrJnb3BqKcL}+`CVurJ0IEUn&tb=mC~mdEzd};xUzK zq>lw9jX6R-qiu4|c-Lev#Qk7=+Y~PiKpIb&Q>EX+}Z-ql~ z0Y}=)@-yLaf%!P<0b?-4n}7$j&+LJ4EMm@Arhm`+#|$0y5nNpgGHbdaCRK z8DVfqTQ#d-5v&&|H=FdTZ*3(@RRZng7p)>MFW$QIzn9vNn2`)GaA9yh+V}m{a+|fr zx0)Xd)0eUD{8ZY*CudbiCm!uF{QN1cR3M${(icijXL6l&(@J|Xzoezs?*U)3_@x$B zN!LoC%MlyGb=X{oHMm9K_JS@@-t*aLWBv3fOM1c_DBV@bvg zAC3vEw=jj7;-VpJ9o{3*dD&|q5X|)MKAh{_<(4;59X^_yEu99HJCN35);_|{7%q10 zk+5!GTkQ3%mW1#b5O@vSjy2eVYp{x=EvOeyg5xy^@JooJ&k>d5!r$Tg4_h~Wg^fS) zEvEuR=U4)-Bjc;$_FQ_47K&CnHE&Q*++i(Y;0Po;0L;?cu!uvS8jqj`Y W{R5!zF^+3Ee;1!Oaa1Z-sP+${cu*n$ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectBuildOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectBuildOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..c4d3c8aeb9c3b2a2e64359f01944a7f51b24eae8 GIT binary patch literal 10728 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 K1ru-^?*0HQE6Fzi literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CruiseControlReconciler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CruiseControlReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..1066daed3096d66835aa8f412e71bc642efb8b0a GIT binary patch literal 8302 zcmeHMTXP)66+RJlLP(Wgwr9J){`#ELr@K#|{?Awc z{EUcxMt^f@#Gz)af_j^YsD6!Yv$~M=I8mbghN#O9S1ggL9)xL}aMi0|am?Fm;ZA){ zr6T5YGD?&Tmw6zgK!jYmH0sdtj4x!-M*Y&-H6A1m9aRNHutdlR7~gctYZ?w63Cf%f z9rODJ0b;z6XO1~^$e+uFn`3C1)OsX5Vo|`ail`;8#}1A8zK9duuPHVnmZXY1bYE6E z>-S`ALhERwabDBpnnS`B(dIHu7D3~@=+J~Q$r5YxxWfW4O%8H6bngJrXKOqJ%|So^ z!Z4>ryu_31Qf*z9p$K-K=aDveW*FyHhfa!kMRr7RshEe05nBs+3q!VeCzLyF9wnyD zp?m!225K?L(U=E{mvG1ZW?v03Cu6R*MZhlvflSMsr+}?$L7!tqpPm2{25hQ;IuVr> zG!3wi->120K#vLd(7M=IWF1rK(A_>ftiMttJ8(l-uT|JhDvi9nyHd*}CLqeRZu04$cN z3b?6nrkzeGxN1}g?!Uy=w^$=DR=JAd8FgREt+dmCt&@fiD-}PzRWQBk(3k%cd1n13 z+2YH59g9edRu7Fy=7r$TY<&Ou6-egwbht^SKjNp+B(a3-F-5}~6Ew|UD8 zWV<86jMeKXiDBCD(_U?SWs`d?9)wH*1b5kjO5PbEXNs+JMixtUrr4@_6=v%^9i+HprCa*^9S`~TdkBu~^8#k!OpMZi0_Aru|%b z^jo+YcGj-Wd z{wb+<(V_WUtEZD_!?;zJzb;3|I{R;O!SJ6_VmHoXZsdih1}E?I?z)n+zC#!7(hg;+ z@os|HA-717!(hF1y+dbi=0;^-d-i6aoBEoWl9FCchc4Om+LMpr-Q+qG$-Gp(gKU|z z7S?r)C0lD|x$Sv80Xg(Q-??w13$C(Erc1v-LN>FhOL*$&g#a%73Oh&<5tzUu0(k}H~!sEb!EEsj^8r~DiacPlz zcPZ45O4)mkOL)W@)ggyV9sLGVaTvLThl#r&uuFIXJ5hNRb7>nMQ^c(<-GH70p@mCt zU^y5==I>=L{obKdCMq;)nmFF2KSCzcT8cW5iKn3I2OpQ-hOvq^GmJ~` zLNSEnF1-)wi`2eLAHpPht8?kEeXoFd_~y{zMG?nH%C8`U5Ys~h61+#=Lz8rX#_%;s zE*;FuajIqIAvz4y5qyu(QM4bU<5~R#zBT@C^w#AGI+>OC7Ud~Ao&CR$?$62x=sQ{Y zU3xGpJ&dmVouTh#<@f1flq2*=#ydif7Ufh?PG@BevYe$K0GCVjLwXFoo`4pIP}crM zkH0ec@H>Vc1nr)}uhs-8dYT$29h${UtYJFeWjdfS8Pm@znBJ>k8l?;L zY?o=S%ao0lF+Eqo^hqVt{B1D(y^`tq+hF>4CDRME(ADn6u683`JH1q)-4~Tii?<=u zSCvdlduMXaRx(|p%U$hW?rJyM)oyuEJLjoNrj^@}sae4^LRT>Q2(8k`D9>R9U8Ps( rm-K7;Einp+(*_CJqBco-onlJqI_=Q!=nwQK`U|~9@6dbn0e$o}5#>-d literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/DefaultKafkaQuotasManager.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/DefaultKafkaQuotasManager.class new file mode 100644 index 0000000000000000000000000000000000000000..6948cd6b8942084b0d088de91a3c89200ac99729 GIT binary patch literal 9934 zcmeGi$#NS-^tEGqB*lrd6A}_8VY32AtO-PpgCfhuWNg`592^!g8nxthW)ZWvV!noN z;6fEt!G#kiiX&Bg2p5Vs)3P+OMw)SA5mWf0+1}Q#->&}k?;m~wfIFZHFh-zanMzud znV#N~x8*c5(w1#9?HiUhTGW(n!%QoxW7*W~zK|`8YBhByJx?35quTf7#v^&nF>Kjd zmUX#FO##LUobo8DvffM=YFkvX2~0|b#l?J)zy+yD6+>5;%4C}vx@0sFEkoe!e10KY zk;>IdDPOGSSISG}4SXx*R7Q2%W0KcxX73>E#nobAzLG<@dmH6^wV1`9wMwC!C2&US zGB4qR^d`ce$Qin2%euWTs}7C93508zM%_`US*`8Zw2BL+NHBis`qM+QC zqwPT{=GQ9uQn|XCFXm9{>|$G#7@S2ElYZ?`%dVnI6CB!ZaBL>IPGCG|)TscM2~2lao;OXyjKLLh zdcC5X)H2jas%#=qOI9ACnBsM2q}mpd+O>#O z+akIzb}iz%SU0F8>V_?9vaM{2HqxYzTe$gtnrL$=*XB~LsHy#N;BqppWtg_uMHLlU zciGmcxVz9J$it$gZED(&Bka(D!Wm{WjOAeh@m#^NnHnbap#@yhS}IeREm{u7ISexx zY)wbO6e9BYKa&)hB|3VYHkgj_pn+fT-c2EX=#;pO3CI0{P@=560fZCwkxayc5=emV zMB5N$(cWp%$S8?;PQ{2eJ21V?h4AT1RtF95W(38}n^pj2SNuK6G60I}Wm`6xj2R#i z=UH+fAXnhO48&`SRn=)S-77Le#2Yod#LzDL6OG@*e5%i?ST*r9I~-@fVvk6StZB+S zBcdJ2aOMpMO))^hJr*5Vtw%h4p>M&l9WzL`e&by?7?y{9g_IwpH|mA}uMf!keuCM$ z#&qsAtEREd>Tc>7D#9w&$|h!r5)E@kgv>hj=29JNZfqGs==$9-1hiKRym<*hiDZpl zkSk)L?qHt~9NRsR9B;`6vh0TSCy>G#hlW?!`MT(Te_c+S#g=`03O$043%dO!mNx&s|aSEOTk-+(x z{+W|InVFWbjahND8a2yqsqGG@3`JJg+ogB=<+#1cECLUtkqqQ;`gI{Vkh+2=rM{?_ ziNOqk?;?zi`cQ|fY~KNPpY#dfP>Z&3h~**X486gc4zI(Dd<;k6@=U;rlagy&sHu2~ zHFepomk8V%3_0r`N_HJ0U1(+IP<<&f_Gbk34X|f_iS#6Xw@_A%GRz3AS#Mt%(sCTsP$N*CA-sD9{cknE1g3Ls$v9cUK< zthh%>x_`y>w1@(%5;*Pq%4Ze=;Nh4_t||e_c+aaz0o*elZm%f7r+DTA*DV05dwS1^ zTY%3oNcd`L0lp+K#W#)rktV=b$l3qKD}@B8;db^~s{nNZ=X&393l^Y(it_wQfK3$5 zby)$ndQScD#s%3g^O1F1C$?6AWh=zWCDKyuL8upYa9~z^*G*-!4$qf>3g2W z=hMFDGx&VY_k13y5FEu^#NX$U!h6Vt;5G3hT-rGE!uN3XXOHeR{GIf^Ou%)#pW;yP z61PfG`!Wp zf4hV4>W8o3odEoL2S0}EeZPZ$vx7g;!M_!N|E&-IL%7|+&vfv|JNUB!_`mq@=iqJ! z|Dz7Rs~awVHUR&R4*nSA5ONIW;SpYE;4I`}5tiUSEJFd-pad0o02}Zbd;wLEK>-R) GVE+IRqYF*| literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/EntityOperatorReconciler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/EntityOperatorReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..b138600fc0d06ea2915af73939528608bc004ebb GIT binary patch literal 9576 zcmeHMS##V(5biNf?0$>FNICpPzpNfS2Jr z19}L|`NFBxZRS-j+pBhk@roY^R=>t7yg`K>a8YsG&=06+P1wFq>kIB$Wx@+sur}Q! zoS_c)9OhDCKrewE3edH^rONceW$FY3wu>eSvjfIGq_JYAXl9haV6-m2o?~^&!{D4x zfSg5UnpsUUXV*vOQd8EdO<;>vjRddS5?1OMP|x-pdXafGeg$DSTNd*J$v4ZEJUa*l zC2&AZj#(}7XK_corO^`-rbZhsU#p`mvDyT7S*JQ?k#@UJ9YIrcJFMBv4ASiJsaRzW z9d{farZM*+t?mu->}URY8eHLG9$)lsb}QhDc_&O zJwT;eWV;nv+cZ)S;746#OXuuHi*~0~ZJ$KS-CkO%7WG~$BX0ZxIrcEWDnjN{gbPrr z3C~_|X$=<*c$JEPEi%Ur=o#Bz#;x!CB1jl^681aJc!Nb-9kFg6V;&1m5SSloH@MhH zVyPmUFYoDCZdmr*fly=E`2*rPEY8rSeVf!->wQ3D<$(BHC~2_d-XgD1$q zJ8yUb0o_$vGaX)UFjsvqvmrPtT=$Qg<yD95j*4&v&N}!dOR@ecHk_V0bPUAhL~^ovgNwjK)uiFLV04pTbKC_vhl zYUFTqBpf;P+LR-Qr_jdVI-;pMW)uz!Oh3ev9rFSY154;&%56po^U$!#d^7ZFbdhn@T0aCbJ5ELPw(+`niG54}_873s|=5;=;{6x!78LS+%i zG7Q7WR(J#|Sc4kstP;ukOuvO0)cLT!K*gM_G0Ae046*aJVDh;+*&8e~tP9Rt|3y_4 z3tlA=*GLHr4_&g_He)oZM`CRWL;2{i6={!rQ|r-=S-O(~OOmby(UL%UDE09NlZVt-e3|sTc^kjty`z}9 zcg<0(S{La8Kp(tH;PUM=H;m3S)9jI@g+8bfn7p|VvW{LPaH$SM$`2(zHk3k4ieuM| zruJvtRn9fb7I;eRYbS5L+LK{RY8QAurFl~GhicTN0iAYh*_1NM>u z<}*C7#$~x(H4#vfL96}5$1`Kos_lljYtsZSm91;llSC$MC+csapX>^`8I*+d^Ni| zDX~v^#b&`I7p=O$47IVRhj||=I;*-@lh}!^#&oDBFT(<3^F zHo<26HwXswsj&oQHEw~eYTO3fk-8uM_rMOMlRT1sC+t$=ZrG#7y|7P>`{95Z55oOw zJOmG@@j)=vcv#W(z!5l#&pq%^b9`8h1Gv^B@F@Nc;oIj>N-16W7Z`qP@bMe)RqTMBpb~m(0?`%M(KQ%}_@Gh?21Mk7NI6j7P^nI|w0SZgNU!Pox+;BlBS literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftMetadataManager.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftMetadataManager.class new file mode 100644 index 0000000000000000000000000000000000000000..2c832feb923bc193aa3de5334f00811b6e7dadf7 GIT binary patch literal 6999 zcmeHMdruoj5TA80haD%Rf9dKXE^5$#=fC3hXe?V?zXz_t2vYw_V?Yw^kU za-+Gn@#x9=@?!#1MqgPI$L4eqJ3h}HE*A(~D9>&a7+Z2XOoK}VCi~!JAzU#5lce-w z%Mr|Xtv%M!P1p9gr7Y{7aN8EM{rh^c(As5shnW@?2=b`;3_nJn;cn%?AC*IYR1W;n ze{krJ8NK5&Uw2%o+f?5LNrcpd#;drUsN}#6Pj%^ z{qRH2k+0WFdrZjZ8T>v{oGZF%Cf^uDMQw(i@JKVwa*ugh=O#@5D(G|Up>=V90lun&6pCZLEmBm65r6i0?m#$8Ax$m*e zBE`azg$X{N#B~cPCL+2@0Uh$^HWNP5;ZXD*6`Uen6$>kY3u+Oj|Z=pGaO0K4Oz>x=&O{{RL@TWD;hM)askMDj@edx3$zARfXc(hjvf+Aa+NS$$ z7KP~%#}i=XBTKfLp&VZ`1`B@8P^mXq(`(1S*@)HX+N==~2@ayro*>UQ zMx!Z~Jvt$cw>f*Vv!NkT5vsm(4&3Tp%IchHFCt<&>$5vFV+R(0M~Opo#@Q zCGc`o^Z0hQwFE8&syFPpd@jY0&1TH$cQb=y*)vBjtc}X+=^e?Dy^@5$i zJj}=|_iFGno@j)Ltidk>XDLw$B2cPx-^YWH7H(wva2xO#1dnubFb#Pa$E%y5!36&2 z@l64W_L&xF;Weab*9K1o_`$ z@}I%yJ^6A^zHfgvLH_rid=9=qOF8%wmhk^3%6|n_xC7t7x9~mu2sJ!PdjO071Nq-9 A5&!@I literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftMigrationUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftMigrationUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..ad87455e55a377ea375709a73eadde34fec84da6 GIT binary patch literal 6823 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 Dcee74 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator$ReconciliationState.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator$ReconciliationState.class new file mode 100644 index 0000000000000000000000000000000000000000..c98c473be5392a0b858981327a46f146b37411ad GIT binary patch literal 10536 zcmeHN-E$mA5$`=KUQ3p2MRsB(1hO#(PC@7b1PGB3aSj;^on%L6%dx@0Xm4~HYj5{5 zJ7;9`{Y`*({s?%did4ZXMHP=!@dxn6GdxoKX7=Ouq}AQpCmUCgs&u=v+w<$5p6;2R z?)}Su{_sa4`U3shrjkWGly0TPgkQPC?y`yqDxs31bzfA1HkV8Vvf_H3P;uFPz`~HX zHobe56}Gj*F2=1ZG5v*g?gqXqJi(L*{JLU_+caX)q~YK(zgfAmd562oqEVlrzMRv`w2Ei%W!wp<&z5GG*oaw#F6>BiXj6kc*XH70G zx=|Zi0eQgSI&qiF5DKVnW5gK4*+}M%>{F19#_Fvyi%!<6k*=#OdLy{6!sJcdz?(@k zpf_c(!{u7g;GsoN)#_a7PIb}rnd(SzoYc=2YMNr5Z_O{_^;D*39g_dBbsoR$F++iJZ0!Ha*@7Uw6hvuWfUu!Cj9@5W#nLFp1825zNJ&JC}IwTx?q1 z2Z`sNcNzf?9Y0V`iz#>8QNZN8Z8&8X6Rt6**M>PQ>fD2Ih~yNlb|965u3KzV3ima~ zWxi&+$(>}N?|;g8VhW7?h*BJBsjqh&S;&!v^j|-ZEab>S-X9i%2wLqH*bfesE{=5u zv3(FSC0e`?UPlS<|ASC+oKbv7-D@KbMI`G8U&p(Mb`j?~TY)qosqnYC6gnntakU*Z zLMJ(8&N0tRjuvbB5LvF9Gvmyxb8!a0qr2T4$DvI z=u`0yX}BTxa8e26lRDn6d}E_4dyFN=y&V-e%(w!`wXGJR(S|mFE-}LaWQAF3=P7~} zxzGU0-YiWmXd)eRI9AL~atap69xfLaUWWa@#TzJajEL^hSR|9`bGzV!S&V?nN z>Ya8QyTc%x*1p2GIvz50NzVa{sJ_WM|8H+qUPb} zBJ;BG$bXJ^+Q@~+!Hz}e%C#swGC|S&Ozl!fr;tJTV*ZRAt)Kg@M zVWF*)8aFj<)ondam7KXB1S^~)%E;Qq?L+c_Tl>MI!cS@_DFv)L6=g}XP@Ct?!xkd~ zHX=;#7a?JLdPj%7S$(+WnqH~rqjf3XkYU!t_>NiPx=dgYD&n#baY?oaNc(8n9+sB( z4oEL*X+e~mw^-YaZkKj-A*R>nZVb5=83y}-A;h!kRQJ$87*}>g$PrN~8Q=gPRf%f8R0ISTO5rmtJ{*3gczmz70l5{>j!@=>S80V^&>+vK8tZ1xA;UO8;~mPN-<(6;FwJ{X9L;5L05F48+Lo4$*kC^;-=>(n-V9~g*WZTcbjXZCxW zehkn!KCtPh5V&XSx9R7QL&r!qy^CO>TkDNZDj4#r2t$12a7|~xEIP5qLv=X_6*&Z+ z_(EfXrsyd;j=L$c==9$mOO_0iu``A=w-=;Qc3 z4jO{Av-ll1_ha-4nnR1ILa%@-lHrpnQVDM&q)+Wfvfju=dX+wtB7HVR(wq-Q3UiS@ zN3Uf@)nAt1q$^$FHPF{Wbn>F4EP9(D+|- zk=~;9j79dBeft z5xNCiE74c!Yue@@l|{Gd8@T@^{%5fZev>w-L0hyGppCOZbe0 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..64439448017f99a40ac38e31b46ab2942a458ac9 GIT binary patch literal 9090 zcmeHNS$Eq+6uwH*sBu%8Hf@1WKrJme5N!6%CJ>C9hN`g}rzvG?$I>KGD@(2qBrR~m4*~L z?|VkJ#w;g$m2I%B zSW#$PFMEQ7z~VmMO^7#h%cZ5uE5)VCLTOQr0H@YChK8@u6@ACAb}qzy z#6f>b9Ux1#yexqKuE$%5ag?syM!!vjcRf*mKZoeP+;W9V^ z>W}D^fCYTDVOMw%!wa};g6Hu9=6b<1<0;;cRjf6K1r3iY^kVzFyneP(<(|U>?iWCi z6XbL$zv!V`evq35h9i*zlwGs!XmLluWN1d`3+$M1T$7hw*N*8>s4&pci_yM_gm~H{ zWshOI#x)2P?8N{_jpi-K3T74BOzSI9jvG0>Y_nk1^=hZNytY5L!7Q6qprH z9CMh^Fue@T{nYi$dG3U|o!ed{+embJMWK-b=vL{tLI+wJSoA#C+e=R!B$xs2z6)vXa;c|v>}trahV=HIyBe~qA@_%dY=|grfbYSM!bP!8zhiF& zEU;>PAbgF$vi~1|9!H+xXu)P3aVR2L&2mJ%i)a^du7;RghNPCW&OJ-Sq)5%yUDMa% zG$F%mJ5GrfS&jSYicI6CXSBI0JRmcgnNMD(Dl_u8f)FYW8$Op-N{ghF#Hwy$4tBgV$x{VQaqLuC7ZB zM||7{1;1m62V(NTvP~?=^^r?#Z1GnjuFv(^mQbndv!ktM*9Y=HbUi{ITgrWX$i1@{ zYcCM?BSe-s{X!oq3Tt67pgvF;S z^!2j%`$*&r7Mu;s7h&9-sPxJDCGM8eO9<0F%jCJe^gM{@UFk%j69s86A`?VkPwzZ) zPIj_E+G4Ja2`CircpsqWnR$K1wM@y)heN3)P^i$&?S*r9=tYYqBrg;{`ZDQI9l*VI zwLsC`M64#1ZfXn7ZHzv(?aRFW4w?g;Ig%;+JzjG+c+^XgNYQ7=CEH#mt>a~0Z$|QS zj*RMoDS5+Wc&FG?$do{#V@amnG8D+7RmcxNLroRR-b?a2Bi6(Hf?W>ZDFJC7QRk{vi>0ApN$SUCr z^-!!D-65Px4TXl`OH}$4f{~)=Y_6)b34SLAJt}<;mdbvkN?)P@C_KDMUxT_%>s09* zFr?d;z|)?yd><}gS(HlXIDr)O;P=rK?V(YOrbwl|cs@j9l*026-i_lqLHp?e`8~K&@cTGsFX40*&(v?ET{?8) z7drU|W<&H8en$aApel{uaXC)WG(C-(LeJ0)c7|s@OPL5di)V~g+$zNSTmse~60j1z zKriC#5bH}#OhY{}{gsI6WqPIUhCOLfjwWCjp;zfO(2{hsp7adAkcjPddZWp&+`qv3 zZURLS-w>UN^m2jT6Z#08XYqFq<8Sfz3hZ`~%Ctnwv_kLG2lNqrLRY9t aCauysT_u|ws*^_nZO{$+jJ}|+=;l9~n|Q+j literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMetricsHolder.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMetricsHolder.class new file mode 100644 index 0000000000000000000000000000000000000000..af3616e632b4dfc7750c571e30e98df55b9a5b89 GIT binary patch literal 5344 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 LlnY?Tj_v*hmBb;A literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreator.class new file mode 100644 index 0000000000000000000000000000000000000000..cd7924bada69cc6bbf70ee4de05ef6e74bdfc35b GIT binary patch literal 9879 zcmeHNTXPge6h57VOm+!(!c}EJ&;)VU3y88I5|#ub69U-;1+Sgi&hC)enYCwjN$~Oy zeDh7qDu02NFIH)lzWW>eAwF52?zv=!o!yxj1WNP3PUt!3>(l4befpgF{jZ;Y1%Qk2 zg#vv9<{YjU8`Q9hcWIjz4ZG;L+-Tf4iguH6>e{@hn=Qv>e0_jA4r?r#YsG7Hd4-m} z*JaKGwE_bKc1tXiTD9Wb(p{#z1O~Oat5>Jy2^`SonQmLUVH(smY)i9iHO5N>cJkOb zqC7x}G(&C19b|F{jA(N9Ti!rXv+b2u6G^rqiMvWb(eRbKiX;1IwP9Fg(_of+gWGMR z%DCX4>>L(iI85ivo%2^O#HhqZkmj&cr<_%%thT{zs}aLJs#UtZ6r4-kUSYhVQ z?^)h7-iqe5&Di3y1a@YuMTeE^Okcs-4y_0S%`%r(sY}bYwQSTXE_E4!$gAVsPBB40nQnIqKW+K}XPhp9_rSt*n%~B*by-7S~z8SZOtz z=oh>+c8kD3*{(7LP7v6&?!Qx<+k6O4l0Ah*izB<)W>r!tnWG9>8`Rb7s*9LxwTbZ>#YCqphz+737FXEV4Edap(`Ynp?yBpo z32WP;+|tsPhscxnKNKDEEY7f=OmuSpX}N}(2KdAhCS^Vei%}!TMMjoAg}6yj*kl|m}huN0bu6fA`!o{Oascgw_5_~a_Pr$#B<8BXso;Yop-a_6K$MnR)G@zwpKCXHR_~@8wIBLtPvSq_!)q*;UIlVaSC7ZdX8de(&6X8b_=5v( z-M|vk%}v$EqAK!hl~`-q*W|2;HI(RE0_9P!lvMJHRvJcS$@`IXv4HTaPNHVka!Pl` zH1D88?C)bJ;~r$7JgjsH#PLqWX#P&ogF-lQ0_TKa$tmFZGBPVlHo2} z0oUCvQ<&zqE<=&p=hkJ2`l)8`^ES728CvhPrq&*CN6lAc7kC=`*?6`@vl0JhAbXtz zhG#5`aambsjsiCc(9N{y6DI0B{t4`nbkUSRfd#y(Boy`(z`pf}zqJHSZLb@yz`NLN z4-3r-VAp=o%iI-sAHS23vncQ(E;A~a0v}_lCP%t&oeC@w*dd96yhQ>0G+?_N^6o+k zEThnJ!1rSRbWxy=8DjK>myjrM7n|@R6;Z$>(2wD-fQ4UV#5Y9+n)qo#e9ZfZL;?J+ z<50I!uLAfP%FcNIK!G-XlhHMN6c8Vh`1dgd?xWUlDekHQpT$0M@vgL}$XUa2uoSd_ zoqh-Jzqkne)Mgltz&04fzxILxL-Lt}ynJrQw_UJyayk^M?gUb1~o8X1sY((C*VK}?!g*-`Zu$j BxP$-z literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApi.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApi.class new file mode 100644 index 0000000000000000000000000000000000000000..831a82021646dda8c1428312e91cb4c6badc8f2e GIT binary patch literal 7089 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..f780c418098e10fc1a36987d390ed79f31ac86ca GIT binary patch literal 16427 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectMigration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectMigration.class new file mode 100644 index 0000000000000000000000000000000000000000..0196156992cfd3a6a8016336387bee35136935ea GIT binary patch literal 9676 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMetadataStateManager.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMetadataStateManager.class new file mode 100644 index 0000000000000000000000000000000000000000..1669beae04314d9708be8f191182958dd972e751 GIT binary patch literal 11139 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 C%)iwD literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..d226d6aa71bf40767909dd3e2d2cd1bab17719bb GIT binary patch literal 14025 zcmeHO+jkpB8UMz0vbJ!OCcQUl*oL;q!IdBh5GvKhapT0zI!0EhCx;e|eO4!rY+aQJ5L(u{7EotTh^$kOi2Z@$}n^Iax? z|IZ&k0)Q9b*BVR^c-`Y>u|X}Tc!RcS(Q=EP&#lHStLQcvr@qUJrrq*<#?uGX^H`%| z?-Vc7t!=tuaqjXJy3P3Mh3L&{G*^R30uKbpHg#&n)yfTK`UDOds~0a`SR?R=vBpf- zF)iDozU4ZGTdOf%!VzW5vHW=g*Yn0Eug!I((ERI$wjxyH24&O!zqmy1Upl3KRNcVYYr~s z+HF?VO}Ej+)dY=tle-n0HN5Bb-1J7B=~ZUhl;fZ#HMePv=_f6>5Q(u6i?I-iF?|q= z@uXgLnWsChuQ#Y~)^#5-+07gd5bdx$_ z*$UHRM)%jqNQgtwd2gh3PfC3)`JRQ`O%~D?XTlH`zpLXS&pT+@QHHgA%N`2v-oRd` zR3PqQ#FL(xgCzdHGIB8MoMEiw=>ARFmq$ywWSTi!y;cO&Cm4^Fl&@yF)) zf3#gYeAs^SU$MRJm*B%;zVAF z!oqdtmxJI53w~_DsfzFO@gBbo`ngl?u1>wk%Vjon&x7}JS3s{wx^&;wX^@=crX{_O zI$k6Lqs|er_sDYs4?kd5XP6e2wRdMqZhFzi(y{Emx?|q?0qX^2^<5aViZvE)RoMWj zPKoU1;2{YJBf{NWcqEpFT7IZOBQ3jkgNGG6HexvQyjLlAFwyh|C_waW_Ra8-gf}AP z%b1K>rseBi3%h05U~)X4w?wH$58Gt5vVmQ!V0mV>1kQLMr5v}L24OGg*<6_MM9 zqjc(s)=>zY8H7$lRDFVm-T(!x(B^;uc!@P_cSqFbP-xxjmJP8p@lwK7w~Dd1P;#Uyv?153;)5yp41p_yg*S>v z$7=yRu4#lT6FA$0%g6*1$)Oibh(sf(3_qM5}$0)oeB%fsaZ9~=i>RHxK4$SCYeu+1Es#)1Am7=7Bb~TWkuJ2wd&&HARHl4KOHD zJ<-3nHze)L1Rm|tbs%s`5}wf|jf|vE4?Q@e#A6+6cXn;@gbv@Pu|I(q#;pN7ak}c<3fHT66hupkv#GD|7TbGf884#npa#r54ZcR;=GX~z)=hQ` z@9E@R@zNU7`5n>oK!?@)r3PQe1ga~8)ZldjMI&x|Ls6mauR9x23z{1PqVP3DnHm(xo85%S&H^?5G(TWydt;*`|@Q;8#z{b|r5@R;;CS>P??PkI~T?VuBrUj+e|2H(aj>%wj{c$>g|m||-1 z4uRwSF2-x{J>;e{iq+sfJS94xg&hhFet?9>)q+^|!kvq&^cwt#!2KPmxCTGL!y)J- zXz)`cPo(1-{Ji7Vf9SY0_$3NF^&H8uiYC2cc^=k=H^eP9cnXj?{4WY6CCPQyiiIzx5A!~A6 zK?%S)_)3EGe1bI97wL==sRZQ&>4gL-H?fc`czhx z+QJ2e+-pj-i*V@^p|zE0%kXl-@#RlI;|EGqV@%W!6{r9!a3#_6>X3T=tpaHhuEHw` z*K10yQ|nP_<|8HQI@<08Y($>&8f*$%Mo;-F{=1I;{8#w<9Io~nd;`7-Z$bsCumyFv j0X8_$1P(s5;U?UI@4$EAUHCq{4?lz-!w2v)_{Dz#gTn`; literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMakerAssemblyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMakerAssemblyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..0152056a505d11f6d4be0e79ea62bdb6852c18ae GIT binary patch literal 10206 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..c77aa2a62b96e787b63584553af2c8dfa7a78781 GIT binary patch literal 13102 zcmeHN*>fC68UI?5JhrUFj$}K*PQv(zBN;^k%we*MVp)-GMUzNqWgCkSGrQZ8#-5#7 zdS>M#+*iVV6K)81AlwgBK^1wTsG_K%^2RgApFr_O@$0#EX128}8Oa!zUbO0-?q7d* zfBkj;@!!As9T7cDztpIM(YzmoDVHDY-3zh;wI3x6|F_b^y`8%nn-^eF{bJz zE*$Q2Z``)H;}?u9=lQl_d46G3QWz{AFT&{Ps&FH?1ZAhk%YyqM4CLfNtVS`_=Src4 zYZbW-A-e*iFbuQA?YILY?u4)xti{L8T7#lK147Jp1|vn?@;E;E!nJ2y0kyG7sBXk^ zEPs?yq2D;mg@2_06?$%6lz9wUtk-G~k|-GCq20tE!gUG*XBl;lyA`g{eIT--)(Ih8 zv6XbTTRYG!Z-M?Dn zVGfIvN?kZXho>Vw*DXgT@krs3yz2|D2=Z*pS>nQyiFTFyOK!!}<8#6gI*=rL{R4yg zSP605EJsHlSBzxOU4z+X5vhB=%g2e%8;o(z$voc#9mSxZSDrAd+{5vKSMukWk^G@A zhn#E5!`fhskt1_-bhN?LItj^(&Uv?%lp0*ElbB4~j+GLqy1y6{4{j;bT8YQ*ZCUqd zwB7JbF=$PLrH8kf5Sva0e*M60fMslBS;Zo4lb8ji+mtlb%=SUL5XGW?SIGlc|a< z@>MO*LpBrSD0*nXH+r?zxJ@_RO9y&rFCApGyT7>tE=#F949nq9)T<~^&q=AtQn_0; z?X!^-qs~r$$wJxqNn_*6{U{rcTz6G?Qu4B|oYr7iYM&AAvQ^=zXCLm5YTkwTcYb~V z_4HJsdaPy@w$dP@{jDp=C?LyfczWt-*F%l_m_o`5xi@z)x=Y0OATqa^HKO8z!Fx5FZbM?DnlNe-4Q?qa!O~$n(f>aK93o6rg(QwF*cGmtj=Q&&^*~MD(P% znp+a?Wob?zQb{|mOGI>c1M15Cxtp9q3M(S3SyMS=6;*QmlXZC~1Gb*t_*HP#lSvRF z$;hjm!=<`q|k_2vCggAtor!l7z$%D}!)TFSzI1&94OKRC(_> zV+tH9abb#h+uLs>yCOsj{$WX{n>t5~Nyq2%?o$pKQ8-V-%fnk#tU8KNcY@Jm+fcVH zA))og%;=7qDLgKjkU9eWhti~GSdo|!DTrOTnJc48FkSPls&y^6twZ3hxt?h=dM0n$ zg#am?v%oAxTF7Vy{NvagFtVxBPP21&oQoMe}`r4=`W}!aPpg{9mC2v<_?}6};UcKwaZe+h zHJuGii!(>9gG$?kdpK{0#ZmfHNr7oi|kaRWmHa-@6a^5f-`J#0N3bR z*bGyBjoyg@0lsEm#%c6!M%zS5BGSrj`kfv zdk5M(Q|&v^?xj9_>!n?^JNVs0cLihbrdQy1FXry0efWD1TCc-uo%rqkE!}&*_m#h< z{VxS$58>|?j3H2QKmPUv|98`2dH^kn(w{=;LeJU|7!A-7CBmx|H2hvcLnl2*Ln#C) zwU7oC!plm8VS056p`#_jUlj;Muc6nj7J+pr5spF!DqSeJV44!)_4EcGB&wnYf^B`=+ql?by`OlX-)XleMrLa&|AE0NC7*;Ui>Cndr; zddsR2{-H!TPxA>kZ%w#qsiV$+Dv_R~x2=|zt}RN0r|3cop`~`awkr|dPG$ zQ6O|u36^$S6iEzv9R4HsfHHpLy`nW;Q%ckd@dR~2iQ1ah871l>EkSoG8e5~CQKDJk zv4bu~yk8<4?Oya$!M}TaFV*lXun+$N{U=B#kLq-puF})=E_x5Wk3K*jqG#wM^fCGb leTqIqpQA6(bM$5UDt(>4Nzc=F=zH`7dVzinN&JL<_8+FXA3Fd5 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconciler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..783e9a117f7d4d82b01c6c460db5ba86a884a52c GIT binary patch literal 13816 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 YtcfjU%UBCr!CKiW*3OP&YuWmL10w6VzyJUM literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ManualPodCleaner.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ManualPodCleaner.class new file mode 100644 index 0000000000000000000000000000000000000000..f7c03552391e395c7a37eaa1974dad1981fc7bf0 GIT binary patch literal 6577 zcmeHM-E!MR6h3Q06gx@Ngd{DYz!C~L{MZFjD76U`lcWXZXX-RFTrq2T>uf7&JuAu6 zFuVfKz+*52GjPWR55i+G97(oixk@Ex;!MhLleJc7Kb`%~*>87G{`%+F-vQur*w-LO zKzEc;wwSQXk64G5g)BR+64no*EZbZ$SE{mMdXCFg)WIBwTMhHLyu)mdnftO?GdZ)l z(qMwXq{5%N&Klfwuy?vGn|obX3C!x~P46*y+cA2N!Q1E&-!66Mieu{BjqI-I^^k=4 z3mh?76}E6U2;3|VJJ@px`yJ^igZJ?2Ub}4yoaWjgfr*-Iat)RU%tbtHDkaqvTp_bJ z9@q+pn;qVyhP2wk40xh#B^xHUoZGaJKRDvF$qkb!G-@;BF>7(UDrBiUo09C(QR+r6 z>gYvol{O`Js4ZP;G1oYvE@JX0ZKQV)6LX{F=SInQwKUonLO+Gomdd3#^dV~~Vceny zv;EIDIPFdJ^p@QTXTbd5Qe1eJI$XI=(!2~Z(Q}1)PKHT(mGEimO3J8v+~$RR#vz4# z&BXOs9Tw4zk>FE|Lzzr58j#F1%Sb*`EE5GZWz0Pbb-H~4R?~_ z8Wj%p>?VIGY~C!<9o(6G-3o@8$5hxI`Iu9N3Ud@k7!FH{E17sZN$69sibTbMUjx zZlz5$^Rj%-Cz^>3U7)_FWCm9bT5;Pwl%{8K+*E~?GUhbvek8ijHD$&`(wLUqNIa%1 zLje}y!M{dUwm=4{TEf; zXSA|WnS!?n{GH*lc~+S`rfkY`JR&e}#R?SxTi243CF1Y;GhPp{_%0#S=g49v(Huya z6dfFCEoP&7(eO(_7;W_8j@`r`SXm*koibDM0p@xSZy;=C zLd=U6woI`dlh!Bd&>1EVR=b*5ymL9`gP#>0gTQK1Y=;w|c9PLZ;a(@?r;8TuF-3Ar zIy;h5r0?3eS=ECY>6Y-fq79e2sPI_{22WBCr_m3v1LG+$C`Jq#M5m-=HIjt4ISKz4a;4 zU^iAB4;MUvnH}LcxF;Q8^~ixYfWQk_pr3>lcoF{sEPw`6L7Rs{&`!fl(9Xi8pq+!u z*iPced9)_*5x1>L2)&gIBtifauro_YB&j6}$?sVe2EjK7inV ze^dmDbI8Fej?BTEeP4pF1ioBP@a6jiUjW{Qclt=hK2oml(^>-3kBLa{!TWur5Bf+E zKcxhupA(U8z=wULkNQY{#6q4vPC)uI0VxMJ1BO0Y1Y5o8J literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/MetricsAndLoggingUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/MetricsAndLoggingUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..d20c442f11f2a74d2bae9fd12c43227d7ff37164 GIT binary patch literal 4261 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 Y3-{nYl%Ncs!x!)fD)1P-1PwO-0xrE^dH?_b literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..eef1498448c7cb813196402c859768110073b9f2 GIT binary patch literal 11074 zcmeHNTX!2*75q1}R8PIZ4}JAc+09VIb`U0Z zn zGq-_8cUO9Mt+Z#%-;I!WDnf3FDB0FUXO{oEbP)VMEF9!QyIgFSffuQ*3$x9T%JQgg*1GpUA7H>?Jx}(IXe9Kt(4#VFPt*1tVPvVRVe?9_^wW@aJPO^tIj>SNsdc0Q zo&B=JY!vYw1Aazw51TbFW;OQMRgX&9z>mA4<$bi~$5%yrp(%pIOLjE!46C47yeiyC zB!St$ak<;x5YZZ^IS0crCv>@gjYnSkz4zmRWXp>gmYjVY?9hbfftNf=ORXS`#L5PD zvtbOwQ`NUjbZSnX=4#Gpu~VDuKV&GcdaZz`H6+9B-H6l+;v%mg>nf@?oJSRTn#BmI$<-W)Z5%)m>LZd+MfMdq_*g! zMV%aBiza~j=vJF4h}505B%|mm;r(pl$^D88gF0_4-%4iCgv@@`y#{oQ0?xn^@9KJ; zhT(2FT#hrG9*xW4+NOv<%DQ#q#dT+xQ5LozWcbH^h3znTO{9$#z{BcmDDN6r6@~}h ze1y>8QdQ3I^cY5zfSCoWjGfpo3re&#O1^#OGpp;(8ZU&7&cHOnq^OL&Umw+5~mmPcdIvC57?$;ljpJ>);wS5p6Bg*=V|zXd+w^&v zx5=H#wsxU}iwyI6A}@Of*)+W|knAsUbI0(r|3Ta8D{@Pedv-^UX3@aP4~{^heBaPGN>o zD@>05G^nupG#$Pne1^xXjx<%FAXV%lnqXYkn?NF?%No`ekJHPd%moroaSl#irwyJ& z^cIMqd>qkjW}0dmTlA8Op!|JrFVigX4yBr`M5nN=IrP2mECh*2Us4&>i8@7Ed^GjL z)iCtqxgZ_G5WPy($?B{uZ+($rPOrDYAc@K?(s(OR9BGu(fS=)H{}fkS-8I`?S;o;B zyt10j!RP6HABu#2TIgLEW^cb(XfaGQxCM{W-Dtya;U>N7lb7%o+7!f+-zG^QcV&R7* z5G5B2Kc)~I$}SduLNZEu-@?y`z;Fv@;TL3=w1>9vtD*O<@?=RT=#m%5bp5tQ7s4?f z2l1mfzZf3HK^&q_57B1}CHh;YZ)fN!qyLpZqVmGA!@tLUf2MB}xS#$W%AOp=G5UNs zUxf$oAbl$nmE*MP;cV@RjM8bMlyb@`J))pAlTn(;@bAUR0{>WnKUm=3r@%ii;ce2a z&;L|`Pig1;KcK+-1-^t2N%$ue_zx@auSobw34dCF|A+$rx`h82rV9C|3;e)-A6MYt zEby=4Nqn-vpDFOEe{=mmrNIBLz?X0q=Xw#4`fXshrxm!rNw^y75^fMV=M}hr7PvB= z#it8-XA5};`d(1r|0Us{!<>@u{3wnclW>=?V2pcA!Y$%*A+J-&JJ5GY!M7^mui&bZ zufo3UY=JA`Ggy&u1HY*BT$FIDSd(xAIoB0(4)#$A&*QTaZop54>lFOTcmdZ7`@C4# zXMk7f`KpBf96m4c9mx9yg}iS_xG#Y#aT^NUZwlN5nzS<}An+#rKZ8fGi7niKj{qG+ iNN@|=cp0zYYxoAfg>U1#xQ*BG1N;bY;HUUGe)%8Ypsrv5 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconnectingWatcher.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconnectingWatcher.class new file mode 100644 index 0000000000000000000000000000000000000000..1cc752146b8d65d2a7035040bed2b1893c1fc352 GIT binary patch literal 5571 zcmeHLTT>%N6h6&uNEVhA7X;T!FWv&{Ca$i!OR}si%S{KO5V3shOq$TkOn0hhf{V}o z6@P{FTNnpxMtQ2Y$4@ssw=RW6refs?N=a0Vtz$5tFf*}HBUpobl z30Zi?PFO*xf*)w%eJcv8!8Hq%E;w$}54dh`FyH51)jcijaYsqXoj}O?S1fRjxVB(~ zz>QFr%VfP!u0F&635?n0&CT^a0<(6=KqzUedY$VcGHLFsrgnHaR!rcoy;?)+qjli_s_F*3* zBI`!JY-uMj?sFGCQ<}h(ZL=zO_u~yDoZu&123t(lT#f`2_7kzDq~G*HPv<+9C3_Xa zr(_WgFzQFYF>xed*`dq0GgcB(1SuHxbWf$#d#coxJ2Jr{y` zE@T~=yCY)E7+F&_Zo$hK>9(A8t(6{!S4ifMFQrKx_k`D|qr8T2!^ENutuSFcf0<@8 zl_O4T+;N#kB21rSR_AmL^64tENVQc{LdZU(|l6uHIx z9Uib63s}PcG*Fb$;IzTBnHau$P$favU|6!5KA^6L$_TFpLDU5gJp{HPt_NWRcs+>1 z_tAr9+iSSO5drm^cw}JhOH7)k!DJd8JGn(FeA<*Xekdfb<>?NdWTs|AHusbYd7_Rv zWmsK!c6Ca)dLIaC9rbaQot@E0lbz(*XV2Eyap@?L+=(}4SJ!<>%K?-kJ zO0K!e$E3jYIgdpcj&XR8knacQ<9QW5LUILn;XEPLSxDeo#}SM7^xR^6eIAGV1b$EP z5>p_~Wq0U(04B~2oG6!vb0%{i5Lo|vr_H4}h0j>^`{7V#Lm2p+OXya@i!OnCrOI*_ z!mM;)a@39&TV>Y5s+nzRns$NXC7hNBoHuFb=+puncHHUXbh6+R9Fs&CV!;!%x!uoL z@RY!0S12vmAaFCOzAV_nNQPmt;8TQ%xMnS|aXu9<&iWM#cDqJhQMZB9o}H*$t03C@ za2p5=B)7cdHA_%w~rse7Es?B7Dxm0=$8%H@kM;!WDtH z;T`0QWanTJ_YD6M{&`XH;OgO)pEt3oBQL)#zVag0$z9aQUG=t~pU(XANmtWgT>EgD!ci6)@}OfZ;D zRV%KW)s4n33ddlgW5SpLTVqhP$io8?q5iZ;tVQj*y~&4COZS+;_|l!%B(q{dEWlX? zGkt|mtu=NEX4u^AZEZ0&Y7fIen5ZKachcyfV@*S06h8<`#jO?wAqvGUfjV5Yc@u-1 z(o}jzR}PJ?^o;Hg92$Ky2o1)8HZF*`6Rp6JPTcR1Sx0petrbse#V@ro+zj1y%BW+k z3rKW_H>?!*1HrYQwt>N+p(EsorGLLeA}OqikitF37VSma2>IJU9Mfrhujvr?*Yu9DQKlb> z!i@Qc*EvA;AJ_hz@3i^pXeEzpikH(-zApXu&N^?Sy_+#ZP5Q643{bY`a;X`{S-BME z@lSq5`CO7;-wz7ix1~2c;aZZaHt%YuTSQuBP^zaiKa+kfivtw)gD0)EFetCl0c=;4uh_%| zxW=G<3hSda5!Jmi7lWx67`s&yI|zUZR#aj0zcVmNPk=(Nol09qBSk0?Zkpci5z>#8 zK12D<{JD=X`;~fQaGsu%=|5-S0=<{JC|H1t)EkFODe5v@q1NkSa1|C|3a+Q)SAPI# CP31TM literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodEventHandler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodEventHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..a14e1748c9ba19ead0b77f624118d5b9c3a28e14 GIT binary patch literal 5684 zcmeHL-)|d55T13@*gjIyrVYPZ;F^{;EyyP!9uO&&+E5g$mj>db0^Zhp6MLJxU9-1m zHT+{pAi)DK2#J3QF?V*bO|HGOg+WMu$X#}C_S@NSW_Lf&Z-4yo699Y)A5@{jK*UCP z5tqt)#{1lp+Ka7`(Rb3*Jv7{EZ7tdTm{sw!V-gv8GguB$J=W^Ltz;#-;+w(`wYI?^ylEl)}5yembP_(Rj4yq9XasG z7;S3s3cGasP#KJM*vG&XI_k-gTd9@XGrApO6o2A6^@A?D0g8|tGU{=0%sc3ANZlAR z)i`CUF=T4gamv(&8)%GOrL7xrE4r>FOnlxW8pbh+ghm>RM(S!~x)}z3%BZJ}b!q4k zZyPB-b_G}Iv~6@x7rL-qu=L+&NF;^P5z@g@B1MNgZDIM+jl5tmQD`M(C^Na^>rN;49G+o_Q}=lr!xn}lZgk$^ zJ`Orz`!JDVQ0T|RkbV3%kp?3Yn*}S*hQ%*5>T@Gg-coU7kdqobqnpP4CWX5<)W-#u z6B@bXn30s;MUvPe-qF(%Q^G6NDKL5%YH=)8=gS0>qJ(O7Q+eD}0X}c4BWI1+^g z^G}aCLH0k6{+J&f^ZB4s#1-wA`GD`r^!Ls#KSuLm!3@4kf9e$&6-TZV%rwC&1z09N z<$=nDq&(gfQAn97+?}%>5;N?nsdx720dPonc;1QY)Tar3akl+C7Nvqx%4nY|4v7&s zULz^ka?=nt1AHNa4%Fbn3Y>>m8LV&mqf*LX!C9$g)t3sNBvBj9L3))kSo5{u;nU&O zI_zAsT^TdLd6azqUU}MLa9*niLBOE4>C-ARN3W7dvNFP^>dRP?rw>vcl_?=|%<=d7 zXp9VSs|If{xc>4I5mkr?T&u%gz%8x$!eE}iCZkWEkrqln)d!!xN$XNhD@%dTWy;gF ziSUj#c2)rExJiqnIgDsqyFdPa0l7_2nu z$}!tvTBC}qaFao64n;VsyAkcFF;Fu9{84r_G>QMRk$`2+V44N%kVaNP=R;g l-R$kcb$SDA(4Rv*Ft`El(f7O5t`V2FV3VHjQ>y|u{sc%%YK#B? literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodSetEventHandler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodSetEventHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..480263c58e3b5e2e6b9abd475d96a4f71400cab9 GIT binary patch literal 5753 zcmeHL;cpu?6n_p~liWJGm30g@;M$F?gDH_FJ^&q)wldU+>k3Uf!M-^@H}QIBXSOd| z`Gfe%7bGN*;5&a5;`x#)NqgH}A_79nhup=^&p$u^-n0Gk{`~9L-vQtYxLbx2fkUHN zJ*Gm|pVJ<#3spB(i}(joS6!~DRl3fi#8|F}9n=^ex1!^Evk(17g-vd^l(bq!5!W~S z9glll+HERB>?*?ofs5%B5tZ%wZtFQ`mcZhDA%%TF;Jb}r29|8zc}iemONG1)RRYUH z10HLwbOp|nOSccC=0-(59{NnhT@g_$l=Qn=wIUvy&wa1D-{F49SwuC0x|AK!Huu+s zstv@dorqN%h&Aju5o_HK6*s0o&XIGK{`&}t1=A|#c(xP>(ZNoeBVW6b=PHSLg#7;_B)$9+ zE22DS&VgsI_Ps<(im6M6cD_|U_3d$&d(}P8lw=|jX}S}rc02PNo??hs4QPu;O&(!# zqp}Y7QPMH&qeMhut{r1T_V|lLXdYv-nX}?_n0Y0rN40Rex#UQ5irL_qylK>KOmcSz zDRK^SEKM#rW|&RyaLlrq*;bPZQ@|?O&H+7&6gv{K{cXaNynt$UTzcG)A%EGBhf2q} zenbg#=AWE%OzeN0{cC!7L}$Z_9+$XZW<$Os-2a^&dc^g;oEZY){_W*}@;z6GW)f!= zA}r#c;zY$T8%WSrPMw>eWyR4QQij_EE@v&E40i}z7!w99-4Vv%DY}pO zE;_REgd4l9j0GPEyn#hffCVUFL@#2yjIB?ww}fx+H>iBS;{5_ke_*Qw%lLE{Kt!RBo4+m^-lQzqLrxIPuz&lzls s@E%%Fg7@Kr^zFkMz5&+pQBf?MhQ?{7ayQ;Rv8S1xF*9SU z;Q@FDo&*UbxaXk|XV#9Km7VN5YKoA2;q~t9cfL9Eo%uO?{{H9pKLOxt__Pd545T$t zBjG|dp7SAZ2;H#Gh~#I{(0w%AY14@0z&bRO25v1T9eLbnkDx#3xQ%XGD`&KnXzsT~ z(wE{;V7!l!R*{f`JE2t>N(@%hjwDyz#$M++Mvg&M@dRz3N628UHF@v(Rd2qUh1w;c>m2D(5lRQm5{NFpMm6Qqr$ zz!V*?v<33qg}hKnEN006e}<%o-@pl(7t954`e@%DD8(stnW0_ibjU+@+{d7r&C6Q4 z+nu=&U%(`&ws;3+8zm(-de-KCnlyubFc31%^&?}lk3S8B!334d8F6Z6&jby*5neZ+ z92w-44Nm1vr~RgscW;~@=OBF!OX>6|M=oeHNu_s@%p<#_=M|=aSE`!>dLVUlL<#ug z0S@veRJ-TX;m+;3I=cuR+pgyHyGTU zQGD^GmX(%J_-K%H&>Z-q)Yo!!#O2fR(K>D{xt_2LRO?k%o~VYj>U1{iA^$dOt!&#? z1>RwB_x!356@{o4MVSYeG?0uOql(s6?MDW;DHU@f!KNAtD@c!TeYTdCm&ht;?G4cw z5hJ-)>2cfhg(?QGZPuFfww+Fp?}S(JPA2%1WuI1w7%VsG=rG&T*P3h@?lWj#g0c*5 zon6)2U~oOFV;O3hO5bQ*kh8nOTH4zVC<`SODv!{*9c>+iKx3!6=Yz2g7bbkfjpzCsaAHbV%lb#s71#h2X@VF7f zt!aj(I4q5ts-t!Ff^ZqQI%l6Amw)f$KGuY1e?bjJ>B~s5TcNf;ZC*&Q2 Xd+;Ht_AxzI$it85w+Wx5sC)kc**9Cc literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController.class new file mode 100644 index 0000000000000000000000000000000000000000..7f8a4e59eecbe7e82e46afee1f1d4b886adf2aad GIT binary patch literal 10802 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 TU(yTo8~Ppnf&PRj|I&W}jVt~b literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/VersionChangeCreator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/VersionChangeCreator.class new file mode 100644 index 0000000000000000000000000000000000000000..129ff54bf5071d52cf3473b0389feb34783f9881 GIT binary patch literal 891 zcmb7DO>fgc5S?vH9GgH&pg{SMRz0OX*mn|oiRgv!AtglOxY-QJw)U>IyN=raF(i=S z&W}Qj9fwd_A#t%iZ{NEu)_MWRgNyj9tyN=%Mc zcw-Zp7S5yH0Kz%Urs+j8LF<&!gN4v@99S&r0qii?t&*h#C-0`GC_RH_U#3bcf6QRJ zdpKdRGcYp@AY{^0?6pk0jXDCx) ziIfX@Cg#Wwl!{47xjsLI0 zN~g+lV?Ezo=gOh=-Wh9AA5=G`=meDcZ51i7@C4jTGrbSXIU~7+RD@OH~r0 z?%{AHyvHCMsks)V3kLl6L4SB%bnlqx(a025;z^Zg|B9)4@v6}Tuus}oMFMzAqORv- z(0ZesBO_yKlWQ=bm84$+V2c`X3mOy$6dl!Q^c9*PJJDxoeXlsX^ej0*+gy3aqj!Vi$MEDA^ePI1 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperEraser.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperEraser.class new file mode 100644 index 0000000000000000000000000000000000000000..da930ba542a796fd73af41d8965e4167d73f310c GIT binary patch literal 9084 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperVersionChangeCreator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperVersionChangeCreator.class new file mode 100644 index 0000000000000000000000000000000000000000..aebaa0c471f088556173ecf0dc24ddcd46c5e4fd GIT binary patch literal 8669 zcmeHM>2e!I5bhC4)>0gjICnzG#*kohNE`t|>=+Ue2jg{YY{wx9*J?GACf?mq&CaS~ z{__aD053rmRKZ`0ci{#2LD92^ymD6B6%jeA{KFdWOixcwcTayk(|`W+%WnX16>JR( z1nzpmsyHTdD-X<$Sz)~5Nx_`&S%tT$FeMii%l17<#de43dDN-dTa|m9FH(wh8&r6V zyVaKIHfdE*HBW;*1P%pUZS1Zr*B($yYOs&M%Hu4WwibbX#`4XZH&zK8H&&^|U5nYw zlqi$In@uWa2)rnI`cbwWlt?qy2{+;qIA$!GjZHIJtzvM#>9>(&zbC!rNHvOTO`4K6 ze0z<`xEraCMOs|p^~3;y6G$JZw|7ACZS#7}fWQF*3F1#2JrD^tFSt_`xS1a5)PfF` zX5Eyrz%k*3v26jhwA(~tow;bx>w<4mu_CzS7Pq5~#`DhFytza@&ur3pE*w+t98U_w zT`9P2Q?W`t?hA_&IM@)>Ykf-FHs5lnD+!Q$1g2Z8*`l6Y7`Q%e9Sv|XqD2Gt6C@(RAaJ_B2GEygnakuHfyJqvE)uGJ#;As8BDPSKyA9TyLF#b-asQg% zZrcpqZ+e5ko+__X4KAW`wrz4l2rkB8iX3)syQng5cW7O=xYK5K;J?}}b3 zuD7UOrC{&&h~!#Q~FQnFnw4fMLF z>meAgcKc%roYOS}TJ% ziTN3%DZrmOBL(_1<|NX949cNISBXFdzqKG+cn*n%P{a_Vqf^I%gE@i4r0)5M)`;~k z1|Z+UlvxjRw1&++=sgNA3V7YyrBg-wL&_5AaY?E+`#*$ z0!EdDJIwP`SPmwJTPPKCZDoTqyfZwKT_+JY7oUV3GuS04alOx&^K5D$r;8a3A!x9Rp)xWk46{bin}Y_XU$=axM#Z|qSppLVw@iB@!riEIk8Ck~uextM&a37?pui`)qKIBE zQHs*kv=O?48dzgZ*Hn0i?|R*V*`D{o5Z-3yX2#%s0)ORrXv*bn&jo@KIN1-a(Vhu~ zsk0NP=p$12VN@#0aUgT4I)S%+<6n5SPEhV5^K-3%5&;ce7x4t6%c+E?st`V_3Iyn` z>P%lH`36DFNE*neAcZJixzb%@iBg#UvulK8ne+YNgbLplzCysyqjHWM(QG9C^Q1F}94}o2j$(Gv#==Wvj}TJ{oLTi<$sD@ic9_R7OSqRn$J!KgX2GD2WvqIZl0-xWpZF%5fpbc zFfav5edW>M7FNSTfYM+EB@ZB91FW--C(&Pnbpl6{JyF3_1I(i)k^`aMH24w=V#--G zz`EcI7|b;I3ag-r>{)|vu+Z6?Bx~>;TB5fvtng}3L#U7MjB((P3ve3LQNR>z)S!X8 zPrc4*&_WrN&uj3Yr<5J~C+c7+yt1$3Ro{d2fE&TTy)Xf%L4z?Yvrj+~NXMjAzT1daynF*qKyC!+Rb&=%lS)SiYjI9`C4qVKa&`*JY90Oz7skNVFC z?LL%i5?;aIS8?_wlyfh(rC;H~-HF$JhUwn}o^Rr>q68d$3xCIh|4UGY3VsoI8{WZ{ z-^Kq6@Lrdbq7OM;O5xN>;Z%SR5}ZCv;dD8Llb_1zN`li&3a8l=PCuq_0+@r3ySw|O z%c;=a-L(`>Kc#RgKs6y#nx1Z^aQZuy(?X!@&tVhWN%WXSSb}Bv0@mO*+=07rAHIff L!2}B^G=cpK;RHS1 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/BrokerState.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/BrokerState.class new file mode 100644 index 0000000000000000000000000000000000000000..cf3a06010f0a68963dff18f2bde0fb1c531a0dcc GIT binary patch literal 3706 zcmeHK-)|E~5T4C1+t-kUhyo3?EFlHE6klm+sW6QMk&9fM2H7SOyr9i_aTe}&PkVb- z-9N0AT8X~%|L}^Ky~|;T9N3X6ORadgJMY}gx3k~Oc;;Td{_6z*`~)`(Fhk&8q&+ua zLb}gbpSeQ0k zPxZMTB@_UdqNOvajq3hBLd!#eG!R0pWl&EAp-)>f^Ii|iIm*Z+%kuoZoI4gfN2(Rr1Oy3 zQeyT%Th7e@?dJQI5@cfw*(ktS0?Wf=*0ol;2y0~FkB8C*!|(Gh^;8fFKXHVHTA^n_ zbc;Hr&OWDI?)glkQpmjLtjFoPP}PG#SF=D@4+1?DWPx6%UBx4c=cEBM-aa*m$$twm z!lRg&N>!UmRqJZ?csrziiXc?l*rQO7SzhTLr`ZXQtCDyT8{y|-Vd~__sZo?sGYGj; zO0#K@Hq|$<&k!sx>vJ(cDafFZ@bYNcaK5v~yO^uzW^ zcb+2a(~R&m_adlNTTRK!#+!1sr~0y5$kw?!0TjdXCZ zihu%Y;mo7e&;EpS|KMr{zQDWH1KjBX-WQYK4*GBrSNJgi>v+!)tX_(6DF%xd;{b3eTExaurW;^h96h__LXdRt0xrPVVI(%)mG3!3Yx15PeQVHdz8Kf%0`grYE@UUN}+UQi?zdAkk3NqvMPcmtA{hJ5|dcLjnoz z{3ygYO&j1)i311E_>D(1eoybm&oAEqJjLA%ErAcg>#|nHmWS#{mBy7JdQ*QgrEAEm z=zOWGd5Gj!1y8}vy{2-0kgk;Hrbg+HYD#j;xME4IIHOi9sjUiU)VAcrQIOU}S*xgLGV)A1ZkWUG zGg-VMiC3hr7XP*(@4cJbXlgpwOloD*#xcorj?qaa<4Hq#?^L9Vn{sqCL$liEmwX?yn z?QDE$*oR)vPBPqNOZ_cchTDG_?NlX!{%aEgn`*?`1>A?g8rvS6MUsbO#^@1OTb%Q+ t=pGF6&**<=)WTJcsR!J<&auC^=h(nCMr#;wY~ea?a0c%1=`h~JtzSck2_gUh literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultKafkaAgentClientProvider.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultKafkaAgentClientProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..074182ebff3d4d455d8ae3b2c102d8b71d9e064e GIT binary patch literal 1776 zcmcIlTW`}a6h7|8vWBvb0pl_*rsAQMQ1ZeP1*BMP#7Ww!>(s4G6Ay9hljC#wzR%9@Ki_`>z;mcMP$KXlHQbMxRQ>_$Ghb>y zwMNFDrLPlVnAOJTQI=X^#s(u&of$6tm!iY6$i88nL$=-(%5Fpw#~q{lG8D#vc>>Et z+=!{Jzui6%+&Zv8pmmY7r{yEC@JuRcUl5q9H}(n4Z|G1saG5}LT*WJ6v{{5Jr1bTj z%3F#0BBWf$iHw+)TG7Plb|m8TDRs-Oo}i)N5i{tNFn-9og4U$=hA?>}n7koOW5Woh z8V$8bsnV9l%<>+!7*l*o5R2n65fLvZ!plqb&X-|Or;HPAEFEv9oT)r*ThLLX=k>Hl ziJ&uhrZEbHVs-=#=`Z?|swa%h8)R*Sig9dS*q#pQY3zC22xi5}&-Gowwc;|81v!st zD@u1nycuF9X^$Fic@q;$E-g(nlq@o-Fk!|~x^$qpdV|W8W-1gNsj#9Be!+Pz-Q(UK z-OBqIcu}Tujs}5`g>=i?ePImBdkVPJYRYI1nOmMLdxrC5PiH&3;6k+m4lEP6Q4hw# z-ot~dy3Jhp)c_lPo5gKmS`4*JU?tF;Mf=Rid_6SI+n!7bd<-sf8fS>3Nnmw4vjmcQ zFbPvLm_(x4xKL>)wS={-?PjQ(SZu1kOeI3Go}Z9HT8M-jjM!~1!W{x%{^5og?KqpY z|ECA6dat;SU(1~6M>F^+t``UH6IhzW-T{iXN&E>^wq%;3tXe4Q6dnRzt@vERKS&AR z4lLqW#?_O;4&eR(_x(!c8!Y`Qe6HfSfIfhGR&cBoa~H0`bzGr>VHG3Y9D3ct_bA#N c&Ii$MPl;BY60HPlxTgenvCcee3GTszzm5_<_5c6? literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultZooKeeperAdminProvider.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultZooKeeperAdminProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..f1802bf22cd8ee33d58327506890b27012522d55 GIT binary patch literal 2478 zcmeHJT~8B16una`+b$IlQBg#P`qf6#zW8L-gdirBA_fqHK25jNc3^j=nVmN1A2ZQJ z-~9vr8{?hb*0!Ngkoe|9cV}kL+>bNo-p-F-U%mmrGkEAgg1}y=y<)(GEbg-oD+*N% zjTXTtQB*CinNhmv`R&kf-Cxi=RBi3?;tO79ZQs0CYMpb0uhaq|-)PklHLe{<5}1js z`b;*8o7H{p83!f^Y@NsHXm122o(d_ zn}*-vHR`FLC46RtlC-5&)#pL@gu3aSCZ{#-`Aj3I#k>R7;4~{#p-WMrM^T|mQGcOF zQI^&e52;j!2F!R(YS1P>Y#|eaHj$5lJ%oY{wQx2MahxJ(DQ&3I4eBvz{Z%>bW%v&u z-9V3ZWOxzH`fk5-inIqs3M1QU0?MDDqvN~x)>$jzXl&0=-CK%!G-AzI50!tYOd06 zC$asKZ8y^u6vyj!Q001uVFw{FTTveKcbOJ;-d#+ZrU(gqsGO$*o>*2T0&}CPg248O z(94ysE=sSC=5=%>Ul|rAI&=RVbLhYg0+Ry=PherIEsY3xS$0GykcSo9o1#{WG`N*s zIh0bcNXXAqH09ooF+v`Wa}4-coeV1Pe*q2sqnw3cJn8M|#_&?u%E+E5;OIZlfh7V? zmvRU05||ox=)nD<+eLhY1Tq^U46*y~U>gl#3Gh0Azl(U|N#NUo6h6~9dmOC;xL?8D zo6UTNsqYcyGCn5|1Gr}vpP6Xv!WEdq8P-2s!=2Z0oW$8Y+{BT^FW|dpH-+Qa?yV7a Z7f0Alz-`=_;RH8ycoAox?V(&)lbp?C} zKf)6dNbnB-gc#e2(m?l)DA#AM^^cNPR6Lsie|UQR+S|Cxs@P8oKzv9$jvz@VeIR1h-vJxmBGG- z_Dx67(GsO0N}FOfSOlSL%9m7aVPrxWYa;cGBbmaswNLjEUYQ%gtoZ3}VMB1OxC~@k z>Jr^dvMSL!wwG#^=%ZNiL<37TWkpMvQg&mxL>oc0F2b6R0ZIF&L<61JOJ$30u7;sX zE-j5>>^Ibs!VqJQZA!EDDio=VXsmp(EfwaljdyUJwCP^!GF?qF&#Wj@iAplyJ&!VX3Da&aO>m4&mgE?t9yMdky2OpK`Yn%xl#fPqArHs$kb`*w3k9#=?wO}* zG7jcEB>!m~Hic<0>~Ne-p2p$0$&5_)-NPx{mJxv$2O3eM6^^57VW>U{yeoKv^{sko z39G;6BY^#-Y`KCTrH6#Y+KgW=}tvZa`f4YKzBFG5`My22Qe$MQdqe+JGIa_2Y3 z{UG(DCHKFy76G@Oepx({NzYsvE$#I6<2jdCAB$@*J-o?eD(xh^Xb}!1vrU20;k|KBAvnY1S0p4a=6cs&J97jGz4h^ XE~FS2;THbSqR&eh^%b}VH=y_f1uIdp literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/HttpClientUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/HttpClientUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..0cbcbfd613ce0a9ab7a4e9203bb12ef8d5edac37 GIT binary patch literal 2114 zcmeHIOK;RL5FT$I*$qp#EiKOiro6Ts5)Pc2r3Wf15Gh6Kwh~8g*4=eU;>dPN;lPo< zgai`Y`B8{Tva3X5s}`vjBoxW<Mr zwHw_br+prTOd%*?!8-WfSxPK=#jrG3dYjisRxGr^D=cfE4XLa*M& z*+@GTo1Q<4Yp2`wHt-u8EXH-XO30@(RJs4^u2#wFtvXq^XG7Tp?A`ng+Y*^rvr2B=|g24=CfaP$Oc3I6SGP=C8V$TiBJRksxA-v{uQ%#TW6(y7imTN->o=R#M%^zk z>{wf0`gdp%;-}Uc8_nU>F-ExuD}EDnOdyAoj1F8=TDcoYQL2_V8698mXr~fc)m@dU ztytdF+8`7~q)1i!J2iUIN?-i~qca~yuL&y>iIxm)o9b;_v%YU`7yBlSC1RoNTX{=#5b^Sotb%26jzgo}2#1E>72jp<}LVTX#hL&Zz2d|QUTPL;Hc zb-olH3Ex+~CHbJjuL{Yue*^`0h70a?+cGFtlXk2k<#^gb*O3#hvYiNX<9*|m%3P(q zqg(Q!(y~?ItMIZfySFXgoMXzHp&o2mRbfvYbCBG21fwQHzzc(ld z=mgD8(k#t0I#R0byQ$B+;JrOvL!tFfvL$U(z(9;E~H{=Vh?tdpn)=*e7QO z_0uYSfBoGy8qG%W51@IYcR?;I-~XRST$8=ym8VNXcjcfFldCFC;gcpjp3)qyLw}#; z=@?DW0iZlkjtaoV3=V*Q$lyufgBd&pJe|RZfDdQz49(Dwz_>Y)W0sB}$4@{$<59ei z<9`WCa(D+X=*0b*Q_qOM0?N@Zc=|Yk!ZUbI_Pzr;OXq+Xc+cZGVDNE$hSCUzTO%1R p(61Rizk%Unw%5s40(-^^!qd%b_M;GZb-o9Udy#wpU_?rL# literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClient.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClient.class new file mode 100644 index 0000000000000000000000000000000000000000..bf205ba2e5eef656622372370adbd3f577a0b0da GIT binary patch literal 8699 zcmeHNTXWk)6h7;u@ug{+gf`FuMJ+c6TAMawL+sI5OdYw zrJCNw{_)AuUA0~*s;#D0(26a!*wk8$g0@LuvD)vbiDPy;h(5ROIv&>@{!q7iGzI4f zEadlZ=C_%hj=HdT&iI4-0=fH<=M3R2kh zAZ{{~1>rKvbeMA}F5BoO^S$DE$9dG~G2Hx-lZgtZ5kQ5zimvd(F3qGRU&*A`E#320 zha>!241G9wPYxP{_ZYr^88m3fNsMhU+{Q5W1APpzY$Q_26N+d(E*_GkViu`!t#K z|I%fikr(vs8nZdZau>CSiqNLT1A}&jLVbqZa(jVcOsVM(NT2C}BZuPa!2SPjjYmjLeT>h7`=0AGm}^j9oJf1hKwTv$D@E8Pyc5O} z1Zaomp~Llq=Vd@LX3xM?cxx7}z}o~aW=|G)L_z0#6-ED6&)%j?)3HV)>T0f`TMu<+ ziuTdXX})WE1hytxF2oYm?Wd|tiGj}#%U`UQWtYPRuoS#Urhb>GNR3QBVV4<8M2s0o z|4D8cXGu#dsZ)*SS5oBElng5DVlwzsjVAHYL*Pu?Em1suxRkA8_+D8)830poi;y2B zB81ciiqDm!Rb1E&Mk7!4p4fpH@H>=;^c#V%qO#oI%2^@$l@xqTrsgK)E~i4YUzLvE zI`IgpJ$foc#ewStl`$TT;wG%9cwkyPJ}>n@rU=l9Z^npja8s@l*ciPj#j&G|d*E?u z(?8kXFohDnI9x#W4-%8`IpX@7F$s6^3y>cK3qzgked)i4lxDDx4Ghx%vXGMs@K{Od9#A?07wkin;C@$Ur8 z;{CZ$`#iQ6VDZWG7qEQ+E+TdjmJlbdFTzXy^^)ICAmU}8>lJtvuQT}W6?hGQ6>QzY zQJleR=4ZJ2Xz}$Q;LTsLm4Gb%3MAmuW&EA>|IWZW@GiCl!}SouG~OGJAptia7h(`S z1q}I!G2D+B1HesqKg5uD!tg-^gBig<;6wN*lHqm)!?%$PpTM0+hLs40?;{uz_-`G; W-fK|9>pc3vXHbB3C_)L!Q27gaa9sWX literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClientProvider.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClientProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..a559b7346c021290293aaf29f51f341b8bce03bd GIT binary patch literal 969 zcmb_bO>fjN5FMAY*@mTC7Fxc9Wc9S=klfjVges5_0V=vw;^=jzTeprK+1^#lA438O z?))gkB+V+_!le=yJM;81^WMz(*Y9sX0N^=1j$nns*gKgPLYeeL%tfkf>Vs3o7nRx) zoe0*YQqO!q*8&c`ojHl=TXA$MUQW@3J+0{6cXqCFbP=pF*r*d~VW#Pa$qCB9pt~!z zGAg`aaAUZ0$Y6EP<`}^mgMQ0?<(ze0xW(AnCsWnZbIiH4MX9t1${JoeJJDG9XFOgT zA0y9EYT<}f3VAA~$hVbE8Xw8RN7DFcfrXE4o?GVM&=K5cu)ZuXf`^1H zi)7Gyr@W`8jH%te!+@5Y9vZ+3HS;EPD2^z4+Mw}w=zbo=U!nK2=4{Yeae%mYYNUEZ U1Grm%->c6}ctm%HGH$_xKOluKZ~y=R literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailability.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailability.class new file mode 100644 index 0000000000000000000000000000000000000000..d3260fbc383b0f7156f1f43fd982349d9eb86508 GIT binary patch literal 9575 zcmeHNTXWk)6h0f$Dt0ev(>8^+fCv{)aEoqgcBx#}LQe=7UY%6O$D>*d$ z5*~QqM=-+-%)kS0yzx_b;gR92WJ|KWQ*GKbrA#I>vAsI`?b&nAp4;k=e}4WI04@PF zV2HqyFPu`-W?t#8y=j*iFZqFB&2L$Wx2UiKE=rEu_5&)C0YQD<77i_4v+MWl=}nut zc9pp-*fL<4z>yHiwY^4ZrFxe-0fGJ2%9Shgs|3caRqAlhL25f-+_QM2K}DIsknIpK ztm#^ldHD0N=pjSUzKKY4utt4Hu$IK}35-|^?Vv3vKFO`IhG)wk1kQDaE7mM`UE~I- zE7m%1F=sBBU!KB0y&7EBR1Rp?)@!`kFc0>iVshSEDmU^Ln4ybxTBzzK5n;tfwq z$lath)8Wk)N=Ghgwgj)bwCP_o^SSj6YSyUZ+5(AMwsX&JP;-LuVn_PLuJnr?=_dnS z=}(w7PJPqkf!VYJXTuB-liqLP7Souh-=frSQLDg~h#aMLz}trpGaG^gZq zv##y?l>rYrm4P2R$PAiZ9x{j{rROBI$w>?9iS8r& z%sdY1E!nLM3(z{Lv)rpQRYXc3=iOXuo3hg4KO&m<0 zF^fC4d$SV)I)lT(2E(qbTq;)oA?1^LiEc zDj|REuHv4gU~^iFXP@)!sZ(#&T}*ZfocxBj-P&}$j-AwWbDO~F!lH$&ln2|#leY<6 zh@Msk-4?cMj+9s5VFg9WZmIjfLDu{X6GaB%8N1(j`gvMgCp=Bfw>2>ChtYFIm3J3 zK(?DB4~R>T7g9I7D3&OV!9;y2{Xh|wr3@qDij3+CiX?8!JpLkqj67cMKsW8hytN^C zyA`@6e`c$j%^pv4jqxfkO2=CLQyYecHmcuHl5CV54fGf<0BMK>` z<&^ABxsVjo41w8fMQ7%bXj7q{!)pp@U@2D5#y=`@7fPNbD_00CWV51^_aXyp;X4lt zOjexZ1J@+s^|}Gq27K*?`;i6^^%VY>2uKB|;S7EPJP$7*T7>yxj5H)^LL^gx zbV-Rc0WZf$uf#|RPiGZKGfJe_pb#TX#z@04Pv;a!ca%tPz?(5rF-A&uS5hE-r$l-i z-ieXkjggYwomU`zuS9wuF2qP5#7GHGA1aW3P$HF~5+hxTkrJL%NIxo&hG7amijgkI zNC{8V3Z8yfBF(~Fj5Hr3g*F%3(}Du&PX*Ete2n@Yf<>s|=NYunt6;%0T!&Ryhnw&j N+=egUEBG3!{{pSpD3bsH literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerConfigurationDiff.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerConfigurationDiff.class new file mode 100644 index 0000000000000000000000000000000000000000..0f2b59861af17f2ce1caac685019293abcc64f39 GIT binary patch literal 9421 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 Sa}M=*2#=r)pWssl9{dG1Bh@JY literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiff$LoggingLevelResolver.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiff$LoggingLevelResolver.class new file mode 100644 index 0000000000000000000000000000000000000000..0f9afc13bafb15b00b7eace59adfb6dfe280dc05 GIT binary patch literal 6070 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 DrtCQ$ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$FatalProblem.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$FatalProblem.class new file mode 100644 index 0000000000000000000000000000000000000000..411c73ba97418a58c99971d839277d3b858ebb26 GIT binary patch literal 5027 zcmeHL&2JM&6n|?1wwDw_D4#8`L>z#Fmjj0iN+pOAh%iZHyRJBnXJ71r*_qYMtV#Nh zAyKKl^G8*EyK%@`7 zriS6p;0a3gz;&Dm$(+zCNDjr?M}gn$jWCFiOJ)d^F#eVeF<2A2HLJdiZ)jg*^_n`fGj3x{@^{mL6n0b^m@M>Cl)|3T{a|OWOqEJbdK$$- zt&>br(&({>N`-Hxis#pt&ujmpyS9|W@|9Rg$4a35Qb%jYW;d&^t2Vu3O2D~;=78z) z5nY%hMjQLcQ@Wsb(ToM3bs84kc!Zvn1^nhZ?fldj3f>E5N3U2?qG%;go|LrWf}jjg zqTOW2bdXuCW*J;`46W8!*fRI^wJ4KXZ8M!nw~c*{NrgQ!XPgfW_+c4N!x?Hsw1vX$ zG^T9SW7OR6V709|lYM4HHl9o_xsk9Q^xOYOKjpCp_h)oW3O$tG$mn;OI(Zw#@8cR6lnM2&u4Wges zXnu-X9d1nZiw<{J9d3DWF)KsDyo>b7Mk0G9tfeEpM+Y}~y|GP4#0za5JOB?)QF{xZ zM!zV4^sLk9A4PsIY-Y71B5+K&*l8L4=ZqiM%nCYfgxi)8N+F~ nNbl6(N4S*H!DagR#OT2lxCU1tpmBqAyAD6YO}I^?8eI7gII*?1 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$ForceableProblem.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$ForceableProblem.class new file mode 100644 index 0000000000000000000000000000000000000000..d7956754d7adcb7b5db91f1112171cfbd252b952 GIT binary patch literal 5368 zcmeHL-EZ4A5I?#}ZL8UurR~1D4>jwyqy?-!>|t280bP)+M%^T^y===HP0==6i4;i6 zP4TS(EfAUR#C+D{e6W!v={Lst?(XK zVTHhYCN!dQ5FGZNab^kB`VM%YUJxKB1g?K0q_E!+xU z0yodU?`f@c4c;K@gCC`%6ODN2GZiNyqE;yBCu0`oYu~GPhujZ2i>O9WLfLaV;Qppi zjfts^si}>LsplP2Q#bukapOy6{g_%d^exKdrwN*rmx<17IA=B-)y8}p#ymxwC~bWn zraq(6>FaTSYT*S4O7GL27VNA4J#ymb5`(TS-HWFit-QrS|20oRN9#jAI+9JfGPDbSG$4=2fbfw<#WY)W~X zOR4Ne=7`75kV`A2*+41Fa?w@y8Q(9g;6H9R{1g0=Kueb3(_xsQhj_#qb~VrW^?)P|G7%u*kMb zwA*VP;@L)H)Z3}ST>|&6uGCHPuTFB@yW z!JB_!tAc1iG{O5SyoL9*?A?P6xP>hz;dV}f(=fk;J2?rC)qD~NybbRl(|7St$MijX zPAzi0$I{-vY|*tFGb~z#5AdG~dJ#`BK8FX`s(}A5 DcsKl9 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$RestartContext.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$RestartContext.class new file mode 100644 index 0000000000000000000000000000000000000000..780828ebd3e1bdc642c83f76cd4774e9e87e0344 GIT binary patch literal 6069 zcmeHLTXWk)6g~=R<+y2XZK1SKlu#hyVsme4(m>)SZK#_BJGjsXX4cZ$-bT`z)yk9d z$C!Z`c;`nkd@IY1GjS_t;s-ht&seKneS6N?vu7{o`{&<3{vx8g^uVSui)xW_ivbg1 z@hR)DqL9T%D-rxAin7fW(^3^(KaMn4hYgBHGFC1xK4gu3R*}BX)y)czG*h}HL(LDg zP2(2LBqDtlHj6v;r`**R*=;2Q5pjzq%DdgyWxQ8KGh{keXrJx1uas+2c+0E!Zr7Q+ zztd=#UhCagv`)beqq4$TB*O^$%Bc})3ow^m8HUg-WVoS}R8`Z#BI|pLCPU7>DD8o! zCl*~yo6xBtnt(JUhWQ+lYfG=HV|O2_>Pqf&h0y|dPZ-mlluzx-^**67oDZvwY>Z>J ztFJ7ZO%bLF*{BqzQoDmWs`tXLu~czTYH>5_?bB=g;ZPoib$&&JLa)N}i{)zEZu^3( z<)xZMR}bqe&!>Df`7~aV9=GWoi>43bE1BFJ&090gA49~2^gG;hTp6^5pZL*1;MIK| zM0cG0#9oU#9(R4F0BR$kSd%*oLKf24FZ5!+kjDODgOP1wf5Gu2kDO3yCt%ubIT|wg zK^w8wFB2hAFsrLzOf8&DL)T6bw58Gx_hQFoq0v|8PH%)qAduc*btT-}|9fQW=OOGo zLy9vmy)@=ul?dr@r4NRf%aP)wYG$cCgACqIN8^`t-_M$a1Qv2VQk)h6A4*`Xg?|Q2 zZw*Jz)MQ@H-1DL<$E)uibL+%yDtgRRh?{jZU>P`CI?U0}+B`o|;m8eK;fv%_X)exO zjiyU}qKd>T9JF2c8!!}TS9&{X_LgB>?FEO@iB<0T(Jl|RJRWMHpJiyR4&3Pab#CL1 zU*U}mIS=DHSJ*XqFOA#iK>u!B_eIpooS0t1k)b3_I5SW~&C8k>h_Hkt2SzH{5niT^ zn{k*VuNm66kaTB9;!rjY1xgZs#7=|^HN&){D<%V+IA{czs@p=sJj7ebc5cVq-%83qAQDKa}pL4s;fKg2~{y&79rn`1ME_J z4D5qNb7ko=zs8g>^|WzZw*=^`pH9!N4CLYx8qDX+uvPtBm_@HGF4c1Mu|@MQCr!Ya zfNjCacdR>jv`gS5_%YErExV2Y2e-I%+&vauuf#Yj0=^Y?L?qyiHN$Qs=PI0$FYh1` zQrIG4e!iM;E}O!*aHfxSOlTGGbX%}Ym3$UOJhJJwMfXq5#dTc?mN5-RjIc{=!X7&f zW1H@xk}eLLzCA>z45UqK7Ug;ejZGzs#?30RY2yez+H=+9BN0Wo1nl9m0Vm|Pu}B}t zNYgxFwm{onpcy(x=TWm!8>1ZR6O_lh`8JufU8Jd`K8Z zQeLGuQJ%y98eNC%u7=PMU~l~gCF{Rx literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$UnforceableProblem.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$UnforceableProblem.class new file mode 100644 index 0000000000000000000000000000000000000000..577fc897312eb51d7b93d6d72c3a92474cb05280 GIT binary patch literal 5045 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 IB-Gdb0m2W8rT_o{ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller$ZookeeperPodContext.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller$ZookeeperPodContext.class new file mode 100644 index 0000000000000000000000000000000000000000..0fecb709f709a5514f78a818dac5780ead45bfd7 GIT binary patch literal 4582 zcmd^DTW=gS6h2Njdl{CdY*H>Q1vj*?%Vn2JJRk^>AR;2lHm#B+68lnlXPk|b8GEoj zQI@~Kk3j+n-uY38Gcy~d%}yCt+J;DdnHk%kKcAbAedh0fe*Y5yzJUidSRnAkXulUR zA$v#cg!P2#8LLI~i|DDCYi5=1`C(!#*XJFY8yI+EU3kI+>Z>RgA+thB8f!HQd1St#USn{` zX~6xEX#~a0KW1Z2SB2_M{n9=2OLyv*^NusWtkOVnL#47bV%9&T7CHH8jD~-j6FuKe zJ>N}5?Y`Iwxtt=3m9`Y896xMzkyABZN#qIF_S8XhCtT*W#EP(t z@X7*rxv!)zLXqu)z8a6YE>MPAMH#h|n0pP!DPChEWX7yrNKoq~?3lJ5O|xDJax02M z;R{Pmf)j8vON{Hp$8<^a4A<^ZVQ3-)ejp?dy7VC?(R34L)4~ZA@&uD5Ww>1qpJnhG z?sB*zHzm?pyFu=`G_kTY4Zsl0{*y8~p8&m{>stW=`vrG~JBxK8q1jZkzF zbzUl8y~Qq5A`e>dRuitn+XQYFlssuEwA9Bt%uW)GxE?U9RMMhN`7GRLTBPl1XT=^0 zEZJE9CD)W##d%|HF$L!p(guP&ae*m z2pl;`GN*t>>+EF*|E5S?wQ}JSoRxb7np;wGon4c;sX>Rp_8i?tV7c&Tz^4Q%shTzD zKJ!~3w=YWdP#A;100wy5$55*8pdo)y#sUQb*YLkZ1;cd_s`%A{8q~9QWBT^sHAFSB zZvkG<(AQxJzw@3O@CJ^2f&Gj4_Wpp@Ppy^T;LX1>{5$xp;%vatTlj2d-yYnCcd-R< z2j0V;GlmqGGrT{`K$Z&`?!syz!v_Tnw+k35a35D)fDhrLbamt+(1wpu_a3&ZIPwX6 J2A^k`_P_N|>45+M literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller.class new file mode 100644 index 0000000000000000000000000000000000000000..54a920edd012ce79718efabcd202d6c64e09c312 GIT binary patch literal 6041 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 Qt5ATuP=tH130v^h-_8qsoB#j- literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScaler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScaler.class new file mode 100644 index 0000000000000000000000000000000000000000..e41519dd62d40a140d096bc6d699ab8066c6d7e8 GIT binary patch literal 9730 zcmeHNTX)+;5T13@$ad2tq&Iqjs^L%ia#N&@y^XCkE6Ftd z1w8Q!_y;`lzyZ#I7oPY9{0DvkJaCwmY}t;LNU4KQdQKi}NvoM}W@mP1XJ_@tzd!#9 z0Pn*i1rh}A*uuzFb!O!r>UBNGc+PeNt3GBqUZX;HxX2k5*LJ9AH3({RR~R(6#`z|t zNLMiQ3Ka?r5E%7vD!Nt5Ew4YMhC^UbTb`f4b&tSl?H)C_Wv~j<9mXw#pE+W>P_*sP(Ap9Z%N|RFrfUCHcLW<(7pCqhbZLfmI?f zrnP$Gw;{vv$D2#sq%)?8hOh~wwK>=F*zjelz)F_xxPlV69K4v)@|HtoU%LUPk!#F1 zHcBqCD&?-Th`8i7fisUcJ$(x(Y1`X8fni6WYYONjI>#y~aZr<21RUC=TW#&bqQmZJ z-ff;hmcc1zF=v{h12+ zaNP%Hao{L$k-$i6VBHdeizHkkBY&@0a&A@X)Km>#t+9$XP1Ks;>lIqHudC@)u}oEy z8Wmk2QB5~C^%7Ob8P7K6ZMHdYvyFM%YG}^ean+&#QAEi!VKo9wu^ZZMs*A0v}@p!t@`OvWRKk< zU=}sA>LM=bG8%hql`WN7b<9sx9ph%X6JfibBUE{c9oLx%MD%k{{^=z46VeF$ICh+K zWeOMpw2aYNU~U^h77Ghg@wW6f0`Y(lYYazvcSg`2$YM?FMZLBkFtKFqm(DXn=v%#j zrBnUvb}ZY(B+@NY7v^kP7dCb59X(gq1(Qo%e>=LeQ;N_}YcJ?_Ia*#cMNEgtz3z@~ z@DqwdSzQ~KJ%_3O=R5uMTD&pa+lWl3dgaHJuTksqi&{Gl`&RVn3riZFhZlz69K1;2 zRHnNqA`2fQ8YYNKZgriCq700(JjJo_w%Q1kjm80|%&>a2*lV@Mx07Gl!}8EkTh{mp z9LwY&(A_fK0%~&uDzFr7fljrf>@ZrQ&a5j0mgKNp zy1}qWdag_FHUrJ?_;N}bAZG8REr;BisXMeO^ z8hgo3+ZRXFdiPP)V^nXKwO=~-o}Oc*tjP?wIbKtl2R9}>j}pi=??W6EHo23qND|-1 za9KZ1-P=;!?zDn)xFv{6z~iM?ee^$$Z)V?Q8yi%v1wpv-W7Zmh`+Esjdx>moNx-AT ze-7Ae=&R+2OVpBwvq5kf%j8?fX3Z$G($={9VU@=bI~ILR65k&%>mP2ddfyuL7SGeE zzU-5pKniB;1@ChO|A_o#pr^mJ@lH2!)0MXjtj%N6gwbq);p`Gdc}sy$F|u`>yeRNF zfdPr7z?TG)&7r5jI-a5Xdm05y%>5e&7Yb}3gG@{mDC0f`BZUGF@$kO0^sGRIz{$=w zzZ|WAh18uTa0P0(HS#La3gEX912U6T0ORm*XFjh$z2ln<-^-XyFEae1z$z8-yvT-2 zfQsQ)A!*!!9)&@?8v_NB-Zh1-^7$AHdDr7GjMO7|pMX(pe+GZ@{RuefT~EPj?|PW?t~8$KoACHx;mDS+C%jQ>O4eHt!9 z2A>E_z?A^$YJil$cRtc9AxIBGk+P6Oq}PyB%6lEJO}(UaAMK40G$#Ztf&IA_==F98 zQkY)fgdhRD1Mdb%?*&K$flk*$bowC_X$rsfXN@=`@oA0(0Nq9(7S`zYbJK(<)!mow! zpJ?M>g5`k!ZouE_$wwjlSKIgtPz?B2Likrh_^$>0N8l6eMFQ@_8eRdu#-EBa>;ZfR WUw{qow(IE2x literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalerProvider.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalerProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..96f55a8d3366385fd5cf003b1275a7c3ae46aa4c GIT binary patch literal 1538 zcmcgsO>fgc5S@M1dvh=@tuTT5S4-qR3trK>h<|pt+ zI3a-qcYYLN?Kn!(h88Ns#rBMz=gph1A3wi*1AwRS$blSzZmhW*G9lf4HfF9+Zfvv& z-wRhosF_jP<-sU6sAmq1u^MTP?mMLp5G}6DS%7*+tFiD=JFr4vJ&hMIIdoqS_K_O` z`8E%P6lROSg~n!|z{)e_qXPv3l^OcE)=KB$BFTMtD-)_`4*d7P&S>Iy)9k@?mHEo*% z4;Jp=WKal{UWz!jd(pFd6t5Am=g?kcfSet*RampOW39)TxA+zEyVc@nD1A>c>-L#o nz+x|_p5)wC;fnQLP3@YEbS?e54iD|SZ1FeX7Hq&>piut>7N7Et literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalingException.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalingException.class new file mode 100644 index 0000000000000000000000000000000000000000..82e16bcc58f390df10b565988dbe7a994fddbc5b GIT binary patch literal 969 zcmcIjO>Yx15PeQVH(3HHDdihvdIAo+7fuAYpjIFSkVsktH^;FOx4ZVrc1p`1Ljnoz z{3ygYO_PH75C;xByYqH-Jnzlhuirj?2Ji?s6Vw=Xypwq;w8{6xfylMZeQ>&buX9@| zCxUgkET%pvw*;K>cIu?c-&(t`6xH>mD6|=G9ZFRNZB2qY!`iH4AY2q+vwu4wZN8eCpi8w7l1pLYi9^K~9E0V8hoefR&12>M zQnV2B&vhvpIM>1%oM+hh#d_i<+C6R5i)lGjZV=bQ(CJy){jP92=5w$fCfYN+?)?{Y zbs5tB%z)cEj&SR@Hk|E%*gP}R8n4O4COp+-YbPg12`-aIe-=E!)gPRDtZ;(s4C_nt zEhJ@VJ=floeFwAu%MPcc)_)74Q`jo{HR z+{^v|ub#abVHmMSXm~ZkU*JFRA9yj$>K=xjpkZ4aarDyFm6i2nR#sM4X8ruf{T~3} z7Hp)Thrnk_+Jy$?ZefS+(E=9*r6q5C$_v6{l4>Cfw&N?!K(+IuQPj>Kw?J;6mf~|<3g*fS{5F+QO>||FakGmv9>QIbM-ovnwtf#h&|Rof?8*C zPKsS7QQ;zikt5y`qqxu(BY~@uc@DR!nP09;p|ykRk!76K964mhbx_S}oSCIhbC>HG z0vB=uN(P>D<)wRdTaS>s&fn_iGV^n!fT3yuhfUXX9|f^n-Vn6g}8jtTFj=OU$e2t`*wopglAC^$n9y~ODbwere?P&+6m+OvMa(anYToMt z{ie%vQ{{4yDkl_kwh4TZo9F_)&~ClC2~-Z-im4R{Y@dr_O~GYsFMh&xebILutV7a} zCopz;R*gwDX7^^&R#z0#^kn=@5`u=(;Ww4I7+o(2PO$Pr~713>BYLU;xG}IFt(eI zR|wzD6}!Zjlc-5xu(t_(c)Gz%Wqh`Kn85XR;~cB}ht2p#RP}#1x7;CMYiPb4sYkQLm0|P3)!j;0elQL#7cwMDenbJ!_>BJb| zs}#N~W}ydqA&GxIkb*Q)Gr_;1Uu@F*n(ZUa_7e05JeT20&<-@)tMF*hA8fV z+UD>@asr-h^`FDP=W)E}a6Cfx3lXxviX$7b3unOoIwtmuXTbh8CiYA4a?2*Kv~1FY z)(!XL)d-vX6chV(c%y~=W(4+I5!k=P#GZob7WS?e_<1gr2~ Hz+3ziq^5wd literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AbstractRebalanceOptions.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AbstractRebalanceOptions.class new file mode 100644 index 0000000000000000000000000000000000000000..cc3c4600d92d0c6bf1f2809a9fa926f7a966fe7e GIT binary patch literal 4486 zcmdT{TT>f16h0ybUqX`rNtz331i9318@reE7E)RuByq+x3{W!dLucgOQ(LfJ?MPZr z=wn~{fBMpycBXyrkLvX7dWj*3Vj9BG2U{!Y=+n8Mqrd+C?GFI>0v_dIh(Xh6uhtPV ztZj&{s7X~bR?E(hvZf-`!YWs?g*i$KYHFPs^>^)8+UfMnf7q!=Sh-TcNPA zMg~{X#rusu$||uLwq|CDFyBSpREEgL%%+SU3++E5tc5mun+$RrM$r{#@Hq+Mqravi z>Crvod%+moB4NB(YYgqO&{ie_EU7MbXu&L_p4Vyl6C)E(g>q%vWhS#vr=t|$ z9R|PryY>vJubB8B_e2;f%bUnwXxl0-xZR4dRP1@*0YpcHLq?S5N$SL7B=zD;ete!} z?)ym=76qs=2nLXKAVCHpVo)aL76uC+a&!uy$z2Eb#Lz|BUU7vHou)uaPG{S$So*nq z46b@}znnK8%YZV%Ol7?QpRxSo0W7iBM((2*2u*<<32#%hkWWihHNAvf-A>5WEFt$7 zwi9x7S3;iVzCyzjFYXBIwYjAm@OebZcjpZh(AA^>R1+tvzRG>2Vj_d=L`qwpqQzDQ zjv%48k_x8kI|q`Ho2!+bz4JltLfY0p-fuUYx~vTw3sot zO0NqmJ6I39(n#uN=aQx_?U&ORz{_QbTF>FG2x5XBt%o7%g+LgC^o03}!B4Nh^*yMc zU~qjuiL;I)4-52yNUWBJ#a+*?o==isOVSvsxogzOn%or7vxDA)B^ZZc7@@Cm$U}iv zi}XE|uAk1a`FjKR%AAlz{x+&TopT_?hAc$+xw>8I?Frs9xh z#)_9jLpVOHkxCgVzS;G2~esj4ZJf!&u?aaf2e*pYs BAzT0e literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AddBrokerOptions$AddBrokerOptionsBuilder.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AddBrokerOptions$AddBrokerOptionsBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..18bc17f7c2dc6c7cf542eeb9ddb98d1d187a33e8 GIT binary patch literal 3453 zcmds3TTc@~6#k}^-mD@hqN1`QYVp$b`XWdIMgvKO1dv1@Os3nhjBav!gSbH050@Cm?e+(;wAppEw28kd3llsCC6 zm20e)wO7(rb)mUc+V%W~u|lsKv@oinJ>hz~A&u}GO~pr><4m7d3Os$z_*Ug;Nop&oynTbMG0i3TITRVw{L#I}yb=5$lF_B8opG zV$`W9VVpo&r^cR5^(UetwWH%6cY6vM<9L*T_fiP!oMvQ}5xI+3@AmA>QgAjD7> zPMd>VHe|WOf@77#9s9B_a@m;eU+ntN9Zkk8O#O2-EHs7IvLgOd;5p>cpGOu041sUKd)*zeg;*ZH3?X#_S1_3{Eq=+n(g;wfgIHm!Y>D_7x0|cl9b$$>f%zw&$J< zOL}l~cN4v%jIDIDoVI9S#-_Jeh&!9fZerM}r0inMsPoFt1%c3ad~S>|X^b+ zDr0dP)VEUe&yYYbQZ%M%mOutc`kh6NzWc~>gLW|*b03j^IB?)S4t|dI9ine|3UvA~ zeeo|=+dmHZHZM=gwhLbo&-dYGp);uN1YYUgt!PCu-oy{;Yo(iTj=_iLS(%gM5Mv&xG?$4eGr)7L!UR)u zkGrihE*^<2QOnk#L2Wv#F>8G_7z5ZD#f)@w3t z42hW^MD!sc^_joMJGBQ6%w+g!q+S^%%dMgpeAaxSXK%ZVs z`4#6GEDVNMR|5xbQroF9=D;lmjS@)|_Y-LhRm~1nbOVdPV4S)wl}ng_Ntzv6jX{$> z>QUg*+>@MvHtpOcZAP>E8Kz#$PJe`%ua*8hjpb>ea(#iuc25fy;9|8u2bW0Fw=hPs lo`uUpEKCfsFb-EMJJ;ZPd6sP5pl^{PyiMy#igF2-e*lbWq9XtR literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlApi.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlApi.class new file mode 100644 index 0000000000000000000000000000000000000000..646f6340404101c8e917755451f1b43d77dd04fb GIT binary patch literal 3967 zcmeHKTTc@~6h5O!O9er+-Y+ZO0Cm^az!oR9@Sj<7J4jutfuZ+nW3c@%&IWgqY{k* z>TVzPWb&rR>el>#lR?%+98)oCP}J)+3jMf z>cwfV8Ldw;a6Yc?!dO>DA8+1~g3FelMFs$8b83HG>n2T=`{ zl~D|}VT2&WYxu*C5|muXV*#B>8XA1~GY`9%gBE=lQCbA~E#`)%MH9Hz3F($izUjuk zH(Sb-qOotD8}-k&sXUH*(I}FF>v)%lMLY#J2^?rw{S@48n+fCM;!L-|mBNW{2}c7p zNB~DP98&kdao7igh*A+sBhIwo{kWcn5jcPrqi8W5Jq3{Y3}dU~;~(Mh*XX%p_-VWV zdOIGin9=kEoW!+L5k8Ih44iFZ3-LLaXyWsTFTlknzJ&NPOg8Zp;%T_j#8;8~waBv# Ocknxn%pAA@w|)Xb7*65< literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlApiImpl.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlApiImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..b724fb98eb3f3f0527e5b60595a455a8a25e474e GIT binary patch literal 12566 zcmeHN-E-T<5#OV2fnsDUk?o{zJ_2YzZSOEqSmU%N=?t!;531!LulJ{>iMneJ!%OJ<_PRhZ)5^< z#@70JafiUO#*SprVm31ca~;F2*C{U$xV%xRY#-bx-dx=^DhH(-M)9Chx?SAbtsIn# zYg?N)$^=M>z*(G-FHA@5nRY-={TKfccp>b(W|WGXm4nr_N@=fDxpN@LEN!l1zx`7v zVjz$yS5_;#<%9Q&cL*#QT{)Cd$WFbGhV#g4S(qa537lzBE{+Ij#-4mZCZA$8n^stp zx`9C0TgZ;-v9fO$9kXiF8i8|WAQ~G&cpKELQBGjNki11LL^$OMm%uZ|Hf>fouH%*` zrQqXV=2n=)#5Dr1WZUDFj54)26@~bD-F0nhI)(k^Jp!lK+#1#3GJ(bJM2eidJPj|C z^Iz;bQZeint?8EA^q3tAT=%$(tTz3(^~`*wLG>E7Y?C9AXIl5oI@PZ*H`i9WTu140 zZKdme=qO#TPwB4cHJAFj;|jfL3ag3`w3m-5(cf|M9U@g5)KvP)^{Sh zKrnk8VAnH^q!bT4swZu=dK2Bdj-CmfEp{1VQ=^B>p|zZTTRJHW(86x^19U1abUM0;!4tZwUWClN%EY3G zbqt$IMD19243r8_Qxf)MOLILqJd^@Wh)Z`z?L=F+D|1$(3B7vN_hujhK8~ng$HyQl z>AB2u)@+7*TiXc7fKEz3nS3Xso|G456;hJijEVaE{YYg~o}x0Ll9?;XVkFajQ^Oj^ zHkTQzV3>mrTUul@Et4~utY_vQs&hH;JWMV94@~Z0>0tDD(H8TVY*b0QN<@9aDmpdK z#rSjdtVc+B+vFxjyp&J3=g1jl<|nm$St4o2=omT;^~MeLkh{$=x*r{EbBey-m-;8` zAx-A{s4`*jp${SUvMBXFNm6Qi@uPS7Bjwt=9Vrp5`VSmyhx&n?l-2dZp-H2_#%*tk zTjfb6Q<`W7ba-U}UW9KDxR@QTV9LVaqJgp9X3(t4#0Wi|EOok;Y45c?U;E=}(O_8R z{Lq+Q;aA3^SlYapm~;@xWe2Lkh2aU6_Lq&wc_Pq!nbjRE&T^d7Zzt-!GObyn4tp48 z)5106@A;j;5m+8BIW6Wh6#c5KLWXr$lyt`Es2>)Z-yraJg$iw_$H?vMac(aJE+qLx zshP{hkYmG1f1i+Z3X>k{I%f8h(oYsEPDVW;FL)wSr;a??p{oNY2X7>p_pp7Spu6V_ zX?UBEoQj0wK4V0yPAu9G>wU z&!bx5VWcSf1UAbknZSEWUOGvwW2gVehlH4o>t8YkGXmTX&a~tqWg2df)ISt-W)NYF zQas5i!h`N7ImPU93Urp3_EGMbc3i*45K_fLhiyFJOHW!*FxmleLB_QIn#K?-JweJ2 z{V1Tmz%Z^e?iBq-`+%S)c3j>|LrE<<`aeqRFyfC-QwaP{Ne3QXHWO=jyS|x_opf^( zqMcmsW~#|)*d(xV{B9@jo~UIur~&aw=B%~S*M(o^qY9)aJ_+%&pJ ziAuJcInfNxc=2R9)PJZ>;9VsFb+4gC8DXL89^nrUhcHDM^we+8_T6hB@VW}qJ(K*+ zB=obH(uD>d(-n^_8eTNqFde+Xh}RM?XFFj|uTQHqxcjjz8HO>}uVb2(*Je;Y>j?*Y z`AEY7f%WnGiBkDgUI7j7%HCwME_!J&GnNI*@KT}%7GC%42}d|P&!e>Q?if}VV zT91*WCPXsWNI?2i0uq5+@P52DM&jCZ`MaHf`tL;4E!d7xe>gcRSxiLTfpUym`4Xrv zC!+4cUX1!dB5GGV6C^<1Oho+=+=)^56H!mctCfWM=LA%MAHz@Lb^mF+?(#x?wC;C@ rSBU&G0VxF^VxJV4@JoEYgtlLW8XQ6c?tu*sc)&qG3y$Cu`1$_;b*)!E literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlRebalanceResponse.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlRebalanceResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..4a4e7787b120cc66fef7964e74afb29c3f323f03 GIT binary patch literal 1495 zcmcIkTW`}a6h1CpFIk~uFfJPxw|!uHNhHJ*1zyVbfXYB?nM8$zT-Rzn5<9Y;Y4FF8 zK!SIE6yhXp)q=806PhA9$H!m3bNP<*>-V=G0Pq}IWhfAsSi^&eNfn&1Qx-@aSZ8GP zMFu(+hB<8l9wycavv3$;bz-;(xJjfHTq|dE7<95-XSzEQLl!c{#gVYFR#uduNZ{k8 zMVkg8ur2MOcKb>vW?PAUm zb(%8jKF7kVE?T@A=)pQ{)Sv>_32fzPmFiRPN+k}HXedmdVao|@b~R_=F*7pV&zwa! zk(R(o_tIwbpPSGoaAkLIP=Px*XRC(V#I=MNz^`xMTFYz?Zo(Gs2zqZVF{HRD!|fb~Rt`fE?!xvG pLt!PuqZ|eT`Ht{3ygpx+?-;0=#-XR+@Pbkk= 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RebalanceOptions.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RebalanceOptions.class new file mode 100644 index 0000000000000000000000000000000000000000..580dfb22357ac29ce18517c486787cd1e6641fd5 GIT binary patch literal 1543 zcmcIkTTc@~6h2cfrE3u_B8s;GO#~lyUwjfZ0mP(96(dL@@nt$aDPwnMHfLum`o~N( z(RY88@$6DAHmD@R!_Ll`%Xhx{&NuVp=a+8)@C5Ewp(0=>BON8m*yz3LtH`)0^JJ1w zCUPl~@{S@M=b1-38X(MEP8uUkxyevF>&eB@Yiz4nS&bX1H_m2N7!}YyJN%V4Q&ZXx z=MgYT2dST#tS3P12)NI*bWViUH<_PWCD%iGrO2Ct-3!;pgy%9|-4rlovP0N?jFH79 zMj2gm9jwA6uPF85^L3+jB1aQ2C1C!IEyRfX*pb>LsfkqqE>m*t7?Vdb2%rv^>(GE{ z0ppL2HU6o9nZ?!-+9vC5yUR=4oTFtdzRZ(0(w1TX0gaZ^D&AIPig++M>URzEe%CrX zZ4VDWsNJ%F2VL}Qr`3?vVii9uo+G7u!yH$06L*kUxe2%_MDOpl$ha7_tzDEI)UhHi zSgLeSbx|%D7Y&^xK5|CnM>YsN8lRlGvoyzu$@p2qT8{$tze&;skT z0acjb{|L|2AmH`_M-R&wAovRPw~dRR;nMeV*A;HZc@4lc%y3&T`vF{qS&jr;gX^b8 om^%TX;4^m&p~9&99B!PzVeABi3f$s76}Sy|ioJ{_`CEY6FUC{YdH?_b literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RemoveBrokerOptions$RemoveBrokerOptionsBuilder.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RemoveBrokerOptions$RemoveBrokerOptionsBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..8ca8b3f0b7299078c9fbb19d0667c779fa73d989 GIT binary patch literal 3504 zcmds4-%k@k5S}fC{-BDWD1yp?s718r4}76WqDBKrl?0H)2V=I^v0b^lZFaX6iBG)y z-4;kmKSI~H^iI$+g+;(SoXTJO9=G*D#ukSwsz-^dML4v`yR*vm);oC2G zliNbt+9=`e2wT=saU+%OxD9Pk?Hd$o*-#GJj%o;vj`WR^uDynyY~o!dw@|ItjgY>c ziLu>n2)BYN1xW_Gy^DUQOu)Hg*09W7?mO6q&}kvU!5~!*A!`N$rIOI5$RM*Wsy;Uj zg$#y6<6>#WH&{hgT%z@XMd1sx#Go%fyU8GVPgXDmM;Hu+EK>ZceP1c5(lEsOzC88= z%G@SaEJu2E;qrhTtFC0(MNcnS*~~@_tqM9WSG1|loh@EPYg))cl#W6>9fc?z`-XNp z3O}S{+Nwy@mM@LvapTl1LlJPhj*j_00wtgjq`wdVFZ@Zo);kEVE|sxDZw(_{%i(^2 zp^R3WgKQ>XIcC8!(&CnRRmW^5V*3}n{&Po*5erNI91W{YR7zCvKLwtJ91Q0m10xJZ z^QHZwUnlYOtHnSRhDyT6M-8uxYJ*dqGZ-mJhr63xiC`WXlcpv}dUi^^lfoF$?IOe^ zXGx9ja|W;TvxkXdVy)pD;o*wk6j~5NcLL=IrIHBBmfGJ`F%4%JEO!^xKvUZXx_^WW z244zOYu#HEXgA-w1rC*qH!Tp~-#UkgCk;~!-gYNEyv6=HJ!a5f4*CrS{GdN>s-x_B z*cUwzLA8&?lwo+wGWM*8W!9;^nd!6;^*xI{#1QkQ-2~@gBZm!IZpHUe-E+Cts8cY@ zpxirs?ZhmD$xcgqP45*3PkVh3jGRQp?TGP$7LCqIw zVEPeivn;iNDWE2o{x2{{KtBx7n4(z%(vYOz8OYLekSz1Gi_w_<0J$e4N8iD*PvO4f z^bAe`ojyU&Tx%DM!bzGX;S`LKx6{$CaTxUUakbnyjvWswu<|Ab3gFIYLW{8tHxJqo^Ao~E>3vdl?hG*u! E0f0$(`2YX_ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RemoveBrokerOptions.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RemoveBrokerOptions.class new file mode 100644 index 0000000000000000000000000000000000000000..1aa0962d3e25d64dfc388619ebe514f2e43a2a14 GIT binary patch literal 2130 zcmds2-A~j&5TAvE-qk|{L=nFhM1`03#V0|G5KTy`Bzz@47_;q7j+M6C>~1e;;(ujg zqKUryM;WKRoT zE}n!GorvrXh9VYegq0r#PFVUi490^%8oSD%wJW=+u(?JCQ>Ab%*h(#SQLnDkzS~9H zkCsj~msbYoW~$$_+Ko-sK?g1}m@G3z?z{d|t(9)VB?ce%(;_W#4?8?kNhV`aWPoQ{ zg)t`PA$MCvTs#tKsw@wY|J1jN3vS(hWF|ENKk%{O?bdfJg{^q8eV`X5jHyHmOS8bhLJt(fzt04y!ML6^!~=5+bZrLlT2yLOKZ86aScTOL4=o_ zTdP>LUK2AvMZRItYIsE7?xEJQga2vZRD*ZRPV!6^^<=JwaV2~iw71d}^=2%LLFy`; z!ST7)mtT;d!F)}eRb_DC4)vl6Zw}mL&?rzv7kDm>p;Ed>W!}I7Fc_sSOf?k7V4P-$ zRwK})j~W-aH1{PJpiMguNSo2@eujyc(~}=z>T9V#OJi{wsD@vmvEA2#t1wsY&%ia3 p3@nV0tZ!ky#==;Qg;BUs+PMk0inC<&%C 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..a6916db473a0c3bf8a3a25ca2e4c5823bd2bb857 GIT binary patch literal 11970 zcmeHNTXWk)6h7;^b!s-;k;1e;r-jom=%TzXNH;<$lwD~h~vL}kgdk~1yC zJHLRR!N3DEFfaozyudqufLDG3GYn@XuPnz>w9UA6n(1^JTk_d&kIv=Wvq$^qe?R{U z0GHtN45SE{4%3TG&9I7JXd7D5u#1k%jOLd{(QZ+uxi%~6X4`Qo>)v40vD-|i#k=iQ z$}H+qr#Q2U<22n}w5>(0Nu8Fa(|WZdxYU8lK$^gv0nfO35(4|wrGXSThHa^Kqd{2-CCY|nxYGm*d3A*{_g+c89z09MG^pj4RL>x$W;Ke-XcDVYnph!_ zT{aq)=C&Cna8eAeRbr&m6}wI|@HBz3F4`PpHXDI4a`4|<7PqCjLF zy=u~?Go|FRwRNi0scvcvh0v;ZwFXsA8+M`Nr-JZPq2s6S4dJIk*H5RFx=kI$vR$RA zx%#@|B0Rm6sfYi~4LHggq3S<_aTp=n(qL0zq`xmto`7g!LE zYB+AfAR(F{cG+%Qb){)IUQSLaJmbh$EFn^Y&O)46P{YPIdDRtr=M znSO9usoT>^4YcYSOc;f`xm=qboQ~D)=~xYP6q;>EtEdGrAvz_8o)#w5DV{NuZnZqN37m2t!Iamby>rxmYNYIB8R#K5770xR*uAlvt zXE@?R$yBE%uB9{1eM`^J^6wf}kakmE~rEHH1eT!jxNCOe!Kmi8Vxey2*FE729&L zI*y3PT-Fn)@xnWfCpI)@a3*-nGBMtPQA`jo-Lr-c(UU_+za7jBQYrX|iqIhjMeOnr zj&Uhl#Ukahs96f!VQ;BY>=**KZi($b!F9Xnp7yBI3 zpMh~sU62?n=jN9PS$quKEXA3j5^oTVh@MJA9+1F(1M53xX{NVpLsw5qxJ#rYrtItk zh;Na>=Sb?iUFh0?S)Vi)>S5a44b6p6?ueCcULqNKXtL)blvURxfcT;-wK^6_>WAHu zTVi$IVY_;vR(#R$q*v1W{#wFfm|!j5f>>fz+A{Hggm?a+doaLXXEzs<;nI@8@rbPg z&l>zc0&fv=Tp}?ZbUhy;=?}7H6XLguSJ98aJ0$h3gu!C#-0%{R8~{<$QgybJ!?rj7 zRtX*|>4q2r;<+9nL+;#O4}m>c3==pNK?4&#i!XtrQ8FG+lnI%T2z#lp+x2}V0wZX0 z?@bVa6Hzwp?)RhJ;?sw}yB~oW0$)oQUy5_2JQRzRBak-nbOV6{dDU-hVRM3?cffrR z_N01l3H9d*%x|qeKeZ;)Cc_;$pS@$*@z8v}#;63IunUyvSkco@bV>;1mc65h^9JvZ zof8LI!X2N!&Xsqljll2a%2fZUzuHt!7O7zo@w(4H5yE>l)hX=Z_=h1oDh;~xCE)$O zmCZIayE3qdrx|_IWZ))0`{*?&Gl0h*(_GOE)XgZNO`0?Pm%XdDy#+F1!Q@F6ag z;-*i!8Tg36q27D`S;`E2LSV0V@FN4CVIXa;W(bVl@ZTKs_bN{M6d;A+`BSW9U@z>$ zZ=?7<10#@vEMBD`2T$SWJW8eUGxrOO-X7ooBOLe*ulB$}{JRfF0FFL{fB9&Xg2QkG zKacj@c@`j@hGRGrh8q5og6Htt33xu3>xE!0u9H94$%whiGIJsJDL5TqzZhV5pW{pf zwkm}U@G_hYu=4?SSMP}kY$k=BhF4%RzqB^T1D4=@ScY5h0o;a<;nV*C4*f~K literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractReadyNamespacedResourceOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractReadyNamespacedResourceOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..a1ad46439c4647823ed5f4281739707cd472a664 GIT binary patch literal 4082 zcmds4TW=dh6h4!>S=)rBq_o`WG=$!DH_9D&WYh=u78s8`%0uFPr6{bs_t8wwtqmYaNf$l_t+ z5I;U1wyH-2N{3Vra9(b%&}PY|+;oZAS8^N& zG!i;Vq9(OTYWdMF6=`-cdcr~xP(4No5N2#R9Y~d=TivhVdb4hyZk@O}cXM*q|__^!xb0_?!PR!$JL*Mo~ zFM@4vJ+{3G+nnRY_$4yFByCe2Ut+X3w(7pb=tyF2pOvxMO6_r9#=Zzes_D-+UWwUD zHnK&H^?57gC)ktp^9uC(=$?K-F)8oO$$8wcW)2kAI~r=;B=JA23t zo{F+!RbwDxRE}Ip5>4pMSqq)a8cTMRp$ywwa22i-xLH};>9<`x>(MyEVa8+FjtT6z z(r4ijQ^KyZmj!byG=Y(O$>YnCk*P)C);t}Q-;C0aFPTdl=O52&d2Y+=wK~YGq;TFt z?`d?*7ZrED5*Ca~X9Mu?Vbx6w5#jbP2+?+JxgxV7yhGs66^5?=wgwPzvN9lWe?fMi zb$9jqBHSiqe+AcEo(TPq^@TwBFu4rv2`e16d~R7%)XBI_;E#5?Di zK*3h412qEIr`5bi@2KKdJ6&q7)N literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractResourceOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractResourceOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..b81f69ebb986f3fa9a9a5a5bbe1a243b47627d0d GIT binary patch literal 7333 zcmeHMTX)+;5S~q(%5l@Cl(dA>Qnf&FXt23cVmEE-q*u8qiIU!cu$I^Hwz6a-Ic<35 z7jWQ}C*FDEa1LY~sxZf59&_^x z71X1Kw-UZv4z(3X5jf&wo7CFOFIOHh!y|BXap~&9nx=2)H_A)PYx+icl>oU(;84l7 zT#s7bIyGBt3{3?{efKwku`T9!PYEd6x_BrMIAEBZSprPE)wZPM&*9tgRlaFaujMcT zqk0KvCL+UcajPn{I%ch+)7B=+Ohz)Rt!C495d5Atq!2}+36X^ZMQ(9#oYz}Q8jtBFQ_pfc7p6!qN|9WcBAtmSin&gToK>qfb5+as)CTp8 zy6Pc3d)mZw=!VB&=R`i{gw?r$7YnTC4Y7wRqSR=`;l>5kpq8+p!qmw9|0M^BQkVh~ z@!StdzZ6KUEhXnCTFc{RKfoagK3l62mQ_7lrK-2xWSQ~n)GafQR;fq(NOpjuQloL# z>!TEj_7U@IZXcPTi1rb>(P*07;GXKXuti|)!D{cc3~V%N&>ONdDtFbERb@49v1(2& zWBU<>!dEl5Rc>wBkC{sG9M|Irnem~SIW(X<)Wha!^@&Qf3yZu~>nXZL9Zs=2XU3(( zgY;Qp7-EB)JgDzG>tA=SN$ubs7MH>kZKlDzx?NSVW802!5u;XjF%xQz-S8WQa7OJ# zGK!^HeO8-Yna84DV~#6a65XZ2T^HNBe~{F0BSi3q9g!{%HklWl)@Kq~tzn7_t9)1V zpzVZy??Ed#ByK{I42n3I^;fxxd3{%Oa#3X#nTbUTcP_!O?hG4HO`{cNCOJI>?EhlY zD!T30uHDa-L>(3)67dsa%S}Pm+$$|^Rz(5aL1|(^X$cD4M`&pFWndakO~4eqO5j*F znVC*%Sl4g28u;y?3y%d8w+(8phvhAtOnG(g5}?DP-@S?l^6=yF^|921HrV^UcoF%# zt`~Hzpsy6>#rH>593-am2D4jU83Qnyow=EYEP*q-Q+8zR1P;e5D1n3787-`Qg*40( zc(OZ+PyF|zXAwwMvAGe@vRb?XCw#zYU8JWF8_b|`@bxKLB?j!G1e}PlUWls}ab_Mv z@-8785+Uhcwa;OSd)G%;szdH!aVfm6iXYFH{pq;)QExF;buq1sI`(4%mn1eVw(YUO z%mV`FB@n`Ge~^Zc2zXMPJY;4-AoGN}r8?exFuZX%m5uok8wjVyvmKKQgdCSJxoa!; zKq3aydQPYZrW0*8&F!f75}40wy_$GI3#bF0{+=QP^xgoXPDJIoKUTMN8ZHy~Sz-@+ z8P=zC45%hUr3ftbjz}2NDEzxe_F-?F?pOtpm4NJ4O2Z<7-=EI_N3QI?hu9QNBy`At zvRXs{F`nWPTieObWD!$vK71oWAUf9#0zXJNKQwMPE|B)ZJ+YvfsIuU0TLyutjyED@ zd|HZ5p6g6UP6qFaei#C0g}b*2d@JE@puBt7eNQAr`txxt@T>k^I37kMvZs2HO#e2M zz-F;DxATfupNn+@ty?5&{UY{3ELP^)6etW%7tIbzbU^{UO`q;nAQV``yXPQK3f#qd z>eqxQWfi!OuY)q7z(dSYvA6=C6G)3E5fueC@FqUwi3(6;o^jfv0B-q2WWC^O3SfZ7 z{CgDzkOOr6C=ieqlrIM#>^d@VH+2S({NnBZ7@WX=2XLg|Xav&ud69vG_&fy@a0urQ z`}31HJ_0ZJ^GD%D{6B;5rr;Rr1QN&LC7ivAs44OGH<-SE^u#Z4@=qL%!fE^~RuL^Xz-E#@pUrAyY@h7k-FXj`l zFC}1qBaOY##=eq(T}r_IUJ`o=^Ea~lS{r+$9h2(`*gr~Q--KIjY%Kx1oPhn46!s`A jqlF`ICp?LtLLJA`c#2m*hjq9I58yNS0=|R_RH61Sc^J?? literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractScalableNamespacedResourceOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractScalableNamespacedResourceOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..a47ef00b80b04407caddc29adcc28c34d6c8d9bb GIT binary patch literal 5006 zcmd^DTW=dh6h4zWS=)r9gf`G{=``FD2wv_)v9Uyf$x0f zm>niO^ILYxOd(BQE7AEun6k?i(^8pEyXR}J1`CS&vZowwKI%2N^0?-{x!piL=IBF* zwOOOhYplclE_1kBkEIV{dj@0(cvIfC&YAmo{GJ5ntb@J1ojQSKtIi$iIif9?7Sgk1 ztHo83z{+;5c5r-X*Q@*ARFA6%$9p@qo%*(2J*W{_vO@Q?nb$H8(Lr7dHRejf6S_>G zux1@`rO%4igT6;9ZNWWVyr{Q+L?Cx4S{~Cq#R=R_lhh7ko_9=I%BRgHu4quFRmBc`F{4JW#*(aR3+-Wm~LKv1uti|c7kcBwfg(TXA zINF1SB-({Rv{$JsxlcW*X@_a&glaU;&$`^v=gnh`3qfiX0@Q^|Zx*2!ovu`xqLn6V zDB)~Uhj{^l2B*pE|Gy+-*QUUE6_TexLZ;YzyxfzyJi-{&k}|3vcX>Yd74!GGW-ilg zg59;&)}wb7@ETVS;Yapa24#v_eIcxs0B&ws5K6L+TQ`r#Wp( z6{d0{P!2O$A&nvT(NYETTXWC#=>UCH;$oX?F#YF`ei z-A8&ZB3A~|x*SNW4|3qnB(gy=lx!qpS!YBBn>S>M>#ssP1s7?@`p7+uOG~EkK z57RT@)jTY~i}R3!8w75yjh+%0E#dK6uY*Ij9n@bihDw~TkK%fa7c=@q_yl}w$}@G+ zamN=8&cMsVh_J)PsD6C{m};I9jd1{qKs|e>Se`cPOq%0|DaU{f{45Y9 zl>r5;kT@p|_<+E|aFaLSBLX*u*P^cx27E$bHtfv?d`95<;MgBA2S#*18cb|tTt9OM z2wcOjIy0~WvoMGMZh-+=yw2j29OUuIbK&!Ocpk62D4oG;{#RJ|dg=Plu=G3LU4xtW zJBJ#9-ZK8qhyU~N61o*Kmg!SdTsbE_{yn3+UhX;C(RRL--gz{Ra%B BWH$f+ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractWatchableNamespacedResourceOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractWatchableNamespacedResourceOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..243ca9f0f3808eb20bda6a66ba5b18b8c5ffb7f5 GIT binary patch literal 5763 zcmeHLU2hvj6uslPal9lXq_pL`(@-Fx!CNSxDr+niw-ty@LCzAy<9K(R3|;S9v*VER z$bUjeAi+Bi{0@Ev;?92APB!skQi4!k?48{^XU^Pv=H8k4?a!Zn0f3L-!x~fw$Vj?o zpNYWyh8-|dgl43q=zk~7aKI%~p)_587%47CFC>q`p>(|wTu@^8kl$^lzth3WT!MfTGJzj%n2rQ4#9!MF=1y~}+gD(T^ zIsbrr)D8Os;WH(|fDUAc{_00t)TlfAoO;~#nM5P>-eb1M>6!=|X;d0nR2peiMlZ6c zG)7Tbqh81(8ib1WbzG=Icz!tGt{R8OP&Bjz8k%)u=D`y7qCW_wqKMLCT`AnV)MbHY z(B(9n{)Oc%UP>iU!k-6P=PlKO58$Ube zH*#VYPaXQE(|Q_gJF~Iv~6JKnhYq4hD&dz^vJWj7?@zn`|-<$2N<9AEWmOXZcv+Qw` z>^PDfnRNN+Y}wh%M6|85u7{_1ZL$p3V3WYogmi1rz=RVYe`;_WA7kg#;5`DhRJS#F zAB(~01}sUl1QxfGBZPycKC0dT0&{o~3AmL(7?_6&)UZ{71*qfyL;PCBf8%E`zFuAY z5uW`OTXXOn{?20$-ES3t7vpCGF2nQKx-#+RDz>U{4PMBxU(B&9_$|SHsQ~*{N$gkP z)g1e^99z#T!M6I8vAC>`;DCU$lq@kVB4jz=U^RYUxAG@ns37g Q*w!1?TksB;@Gji>3q%)Q8UO$Q literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractWatchableStatusedNamespacedResourceOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractWatchableStatusedNamespacedResourceOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..6c99d2b33902e756a16f798c2cd423bca138b4ca GIT binary patch literal 2937 zcmd5;TW`}y6h70YO=Aj$?sC5k1$K*6#jhw1kszW%!hn>TA|5C9v>mWL(ag94w7+2g z&`OI0@B9J&4dRS1O+qL^g$Q13&-k1(-<czv?hY;Eh(Hn=p~OFW5eF zg>vNTI!?k<2k9sUL&zK4KSU=`lhM7$B z=rK#U9sChl$PU8X7kGNqGGi-|F&~TM^zR+fhQYAV??4Hch zh$cekLDZr)NG(3vrJ{%~M)z4PBC0d23&LcE(;cbuaO+#;JlYhN1}rSJ-NhI*JdHFR zqAt>~L*-7cm7AX^GKVL5ySou=_#3^B(>N4ua5S{R0ooBZW(w3l8c_cL=+Lbd!!{V& zL1(70dq;!aJAhq*{YgOcQa>fMi&{TLXfv}NV2V(WhcXRCEQ+E&S@cHo+5rbvmSF)- z5;(p7_13fEi*lt zfI0kHfJJ=Q^VJeG@V$wDYxs8Fg7bWJ`9C=E9#`{l3ZILp0jRTz&*l8vfj{6+T%8`< lIRkcdJqzbhrm%e;EnGmEIk;HvT!NdpcJQpra22k>_0Kup=ZpXV literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildConfigOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildConfigOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..40a14c3d3032e4a4c894f0ac19429d34d1292129 GIT binary patch literal 6947 zcmeHMTXP#V6h2CmZtSE@NhuUsU>l$~Tx>1{N^DY+G~qIC!z5{d4lnXrcGT>yj8>Zo z{SCbE3-}q#zzn=I!yCVc>Cs-Cb-d}SX)*(8Co{HJIr^k?^qr$m+Q0t&?GFI>6uz)v zguvZEIyH}SzjlxA&>9!DKuPZ1=QYt|k}4rUV3at$WN-1Wq@&&(%DEOO@s(lWMo##4i5&7VoGfmos10 zXEzCqE{Qg?phRG54`W$MA;)2YOnh_4*Yj|9Slf1l*W)f#T=;fRik8c~V9qX=Hny1E zW{yiG8uh5NO}osV;i8)OSWSJbCO+;pq&`;ne4Me{f(5oOlrZ&N|Esl6%NmcVEz!0`T8JvMc1H>?(jx;l7`jrsjcnDTEu>_sZ@A6^HFa~D{ zT&Ohnq<0*XNSaSIxzBEg9;*KhJ$C}rP2o^?Ga*9KII4#x@O|_6&KPw9rG5_JG%B;r zK_+X1b>8)<-Z%(2Lk5jzCR6I!2fYsuG^FdXuZvbRiCujj|L|b57W#^N>`Q-#2OI;m zpf!7xL>P~9GcCXMad?rCUkpw%X^#SO5BgqUoblV-@(C0t1kOh3fq8PL*QN?-^lhb? z7Ohwf)Q1x#rzI2d0bn{fgockUk(bfZ7xq|6SoSQB>~ULoY?qhq5{%}(QZaPc2H z8W;)c6!-tH)-wEyc4g$>jYE;-ZiZ&`@eqvI^corY=P8>qH#J!%n@fzC?&;=ZUaAW$ zkLVztkv9E}_=Jm5+`7e4D$i-~IUw(}4Nez!`_beel8DyJLQI0$- z;Exf3jf|qvPMnZNmaIqD*dto*g0N?OX zf8x^!OyQ@t(e~%?b29o}hG$?JpGM(4Jd6D<;O`N54xYzvZG92HQ&inIMtva%^-3=4 zCAi#2eJL09bRYHQ9Mr41s5W|^&UGdib*zv2Y7XjL4l04y;VSwbN8pXV*Q0%;N)FOj sIY_7AP3$uQZzWi7!{_*X8P32vP=oj21Naa=hEJf5uf%S^0xZGu1LGhD$p8QV literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..f9dcc0a2f6aaa9626629672ab29bd72b4d1d0cf9 GIT binary patch literal 2280 zcmdT`U2oGc6usWMr48K&gYmTi-uUW3YFbW9o(NJtrz)>4T_H}zU?iCsBvHTX09 z3?z`?9r2qGH*TWRtx`J#0$vi^IzGAQ`uN^_{r>SY06c{U4onfK#X9gJCZu=Bddw5b zi;Wi1JK?Dg*UTvG1z|TfTn`pBk5yL(+&k(vxR%`T*n8F$VRJ9t;y{kTq9qKOYX}E>t;HSI*RxQ+0!d zOkH`PZk;w2kEv9KM$80lYLK2EcTm*N^q9(WlFD)tb@`V+){kC99iS7a|a`;mH1*kJ^Q8buj3Z#&#ASkp~{@kMMV!R@Ec9)q>s9fLWWl08g` z7EL~ebXOen^p+)#KkbNrAv8xC(~$BHrAKDv3T*G*su z2W}FWv5`Blh8DBK#5@k%A~0vC*_Rx+LtuXRARV}eZS+Lm9N0isTg32Va&K}}wvhIF@{F^2B0~Ehl%mO|W3?Oz9pG7-%;XEwiEC(0h zBJNwp@f2Kw%lJ;vSMZ&&CVTs=S4Xg}j$oaJ70b7p@?MAgIG;!68$e+lZo^$D{Q$w) B+vNZN literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..d2db38a514ba470a82d6966f0454ff510d9cc821 GIT binary patch literal 2681 zcmds3TTc@~6g~rmZEFQYK@pGvZ$*>tix0*k2@*|=D=bQQb_5DWxcntR)7$Lx79k>w_(mi4w<_hJ; zMvLgJa8-+IW|Ve=upJw&`v%Qp)z$%bkJ~=ik{ceon_Z_J74j!SHiT?$_u?HW5SU8P zLnfQFMJ*IGZ<71~fdrcxOiF%uk8gYf*Mg;|}2$HLZZVQY5RwVz(ByL%C}lr|JmUNc{d z;2{l|v^(%QP1FBZJv;XBbMraRha4wr6lK)BY4LI?%fX=oJQ14#K|4M64{#fLGf58& z03EU*+gMsH8hilimXcd6;xTpx?{=+ipe(`upIQ%B$1)V*Vg<%vg1}7G>#NW%N~LTj zDmCc|$+y}O3gR9^;UO^XsepwCOba{j84Ko6!~_EGkIQbIK&dNhc$fs{s;ge^Ia|M7 z(Ui=zHSW6kJ-;d;5I78*=$bb z)q%SNifL{RtP&VYZU6$6mm-c)SN8Byi(wfEjN*e0UrvWXAjV7?d1t_u(%m*+zn<^3=Q5wZy!!wEPvM~jB?2#E={W)Ap|eeQsl$a6 zE6Ib`+z}CzR0-*Lek)c?b`~UyMN4|j*=aSH44GoFGus9&3!g2e8!hN1FqF{xG~9HS z8r#fM1WruxkgI6|mnYnHCe>cueg2JT*5@o#^~rSty|bdpET|9|?2yb!DP$S?N#EzS zP#fa!vZn2cAmTn%T!eNcMZ;%7{KT$SR=1elWS&nYf+Fhe&`oBKb5To0)-sW`RAgr% z6Itts9JiZ-#dau^9Z=bd$gvluKn_1ZR>du38}O|+oPdAy20#B z_fa8e%PZQD+Q(NsvtXeT%dU2%7W4y%gF3{v% zPNOOZR{Z!RwsP2xsC@~YEqRmWur7*lkp?Wrh)c794$Pm+FRsf#{t34p(Pf6UIUZQS z#2aqrfZ9oPfkv2Qj}N*rv*6BC53~J#4ry^Y&z9!)JQgK6`R7-^+zJ&BSV4Fd%5ZW3 z`rs6Sa}#c-G_?Jfl#W4{hitJGV0l`lSPcjayTYUXI+a|{)5Tu3#bW|5-QQOP>jWz8 zB7-47V02>A?HU~#x576=s#+4wUH%bn$~A7FZccP8)ZHwL9K=o6r}2PGsiU8TyFBLT zh8bN@lB$VbsJdBn*UNB`khKE!HQSN%Xu2xS*<;8oj{N)c0f7-ugt}&J(7<06hD-uu z-JY{~$9OYW2~h=Z#^B9y-~Y5zC`)00tR!9UJlFYT#Bgxd@Foo(fw#w%PG%a|rean$ z!>5@Acy{R2_s#Qx7h_KHQiKK93G^GvEVzl?x3QoZEVzw*{oyib!6fEm)6}+wnD#8V zOQ4(?Zoz#5eMxg-fpg#sq5TvI3@q?C##*?F4Oa|fK%fUdSpY}e2`6y0aP|o2dcFD{ z${WMgH!$!KXC)ZKQDXqHLpTm3|Eq8shH=&lXW%UEJBR;Ea2_t;uSSpHZ^o+kwpmBJ zu-aW%D{u)er*_>*?93RhbYZxkFqH6=9=L{M3GCFKF?fLUA+%&1Zon;=fIDyxYF`0e C9fhj^ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ConfigMapOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ConfigMapOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..7b80e6ac810509ef219f5383cd8f8f2643186c3b GIT binary patch literal 5350 zcmeHLTXWk)6h7;^kuB1u4Q+t5fEs$SX=_0#P%1ZVCzBQirI|_64D@X+Z=G#rNwZpK z0>6qkW?+DKeiXye)p8w^1&Jn*3)Sk z)Cru6NnPp<%=O+Y=12lF_WIMOs~ZFs><#Alp2J;ECHFns9}JkV5Ygoxm&*h$x9n{u zudM(B)sw5@NnS%b5O!&NZ+7_{2^d^Ge4A7aW)U70=tnOeg&-R(q%C~ zL0xf*-i(8Xg6tn!bRE4dc%La)*Z3amCy@{%n*vB&frgvykew;67{ zk*nIBxs4Py&sdYxqX2JWM)U?p0jerqRotW+Nd`R%Ij4F?Z)QtQ_lMqG-E&wF<#dHC z8CS6YP)w=hi$lau$`HjOl|WeQC}>U!B2gzSkyh71hq+nM;2eRAEqh!?C3cSMtT~%| z?Ad6DwcZxR(uu&l?K{-nrh-S`>0n*%@Q}a@`?xAfEDf7UJ%&3Ag=n?y$v7JUHu=D# zQCK0cdH~S1^MhrLU!!npVKJH%wMERbwTzsXHb$Q0L-vig%R`O|KaL8lxR^wJbvw%m zRs${*@^yu>Gn-N3kz)Fu)J_4;HLHp{=~;xpS?=Mz!=vu=pid=wbgQ-R&R`wfu_Yt9 zX$nra+IA8p(82N;XuG+jX`tM{uNrWL)P6g<%`!FS6?aq?aHj|FB09I5VoPPL|0mP@ z%2hPuRL{KW$rMj$bg{_`$tEC3mq$;$ylA4LY>>3Y4yfJLy zB|L;HK;RU1+z2efX_&#cI=*Yrz-JS`?&81E|N5_>e?LF_Go1YcziMzEpEHO7oHdWn z+4x&+5YfF<~-RNJd143A0}PQi6twFWm*eOvGlzZcOaZMX@y!GurYGx!|7gs;Ft`5*iZ DMMB`O literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/CrdOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/CrdOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..11d7b578c7cd0d896bd69511b4317ab8b0f744d1 GIT binary patch literal 6803 zcmeHM>2e!I5bli~ueCUrNx~71!5opmNL+zn2_=qV2P*40WpA7!RTMSa9m|vKp_(1J z5}t%Np$e+tKhFWLLD92^4oiy0iU@!5N7ByrHQm$SbhrNe=hxo>;2YR9;e-J@v2ZH^ zIUM8)+xv1FpRAXprAgv%#A23)jvm>Y#I_c@h33hk)XVxnrmoa@I1oU?np4WGs_ zzA5bTR!C(>FvWi4ea&&IbtE!<9?OOjF@nTSNET{5Ex3(BYhB6Ypgn}cAW%>Yy{nh8H1Uh zoM;{%Fu~Q4rcK;Bb@8|}c@TMIJ$t^dPCvyg+m(n&G4t-wfW??!%-hM3F^9rb&uYG0 zbL#bSr|nUh@vg^DLbo`GhO5LWS%sshG{OZ$MuZZzHLK9TjYL7NX9Dp}wog00?5W84 zY{btAyf>mw=#hZO2?neYg)ymj2~WX+l0)iqkHj7H7ndE$$bKXe-!>I<0u};YhIb07 zH4s813%!{1%t>*$PNMyUD-r(;&aYdAu~s|NS?zSK{+7mDOi~OfeJ%#u(-~}c4eq(Q zKkDja&d}ev=n02u@ZhIqz-(ABBUI%uL6{CrQYFklj*hO~q?mY4%C-?Q1^3tlbzA%~ z%St;e)g};Y#$Cr3Iy9PF*zBmnaiZyINy=~!2#%W6X#qQdSSzerM4J9ppqyP=X^DrC zE0)NvYQZ_UxCE!*6$365N4HvMY#y>ZodBCzM@7YeWjk`Izn4WRTb!2% z9D7U0o_))V&FjTMl~~nfYJdC>^wqFM#iluFKe4&)f&}ioSh5Fm9c?QOEvkMNxv`N? zM*(SntD5jjJDpJSfPEJp@|dGH*Hy!oqysw7vUAL?F2Z{T{H@W(<{TpsqW|O!T0Ma{ zw|fGa&LyNlW58)1V!0bqKgoAIVb_XBh9D!x0K=#CLCH?D2pxU@*(B7u`ZJ`+L%0Yf zWA4H1;&QCCACFr7p*|K!Xk7wYM4E@@#qF!6QZH`b(N&~{AlOzDgrxU3;KSiG9&F~T zeL24}M2t9`zfTi*5y}SqtdYLQ%F9_50XW?qntz}}c9VJXCRcaw*}lRw86q0+SFN!& zJg0Tm>?5AC*X*axHZq8t)rC6EOrm@74qcrle1S9aG%6;1iFd}}jb_4CoCW95mjR^- zYe<+crcpAXX2AKuwY0Z30Vm&!IgFWb-GGxxrmd=WqqSg0G>9e?nb@b!hwx2v)1_ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentConfigOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentConfigOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..ddf550d6769ee7539d08fea4bb3c7dc262639183 GIT binary patch literal 7137 zcmds6U31$+6uq0Kkz>-Pq%DP}1vOA=^I`E#sZD4|8=9abB}p>_FN`d&ooywpXSGff zUU}k~8J_tU%)ku1Gs9o#3~&4jhP#qw$M$w42WOhei*2p%9^E~A@7|-UKmYypcL4Yl zHVhae@NFnu%Xe5{J#=;*i*YNIg8APui#MroBo~(JwL(cncRFNqXtY8nC@cS6@rT#JV)|BJqVOD-Y%_~F87)b(Q%9H$DcSFey z0#j~F2z+K!niGS=(!{(b3+%T3z)gFZz(1qgwBxO72%KdoyhPx551KVcB4O2n-CHKh zgLG*|`r|E0t*&q>7wx!?V-Edr;ct6d?9o9y?4faj{+vslXl!f!l|Qp_P>bVR-LIs@*Ydg|5W1}tHv>JzL6+{3}7Dz{6%0V_B=8H`J{0XBitQ8&|oHGJWq z>VN_FdtO?^`GhieHGW3i!pF)Gt^t8l_$mePX%8`A0zVDB`T$4Oc>XuYeLa)^1*ZPM zt1+0yPh|sWdk#ORqThLV9%k@r9L~c9oOcm_kHHIY3BQ%~i};z&o+I!HG(NDCSyfFiu1 z-Gw(b2(}jCZ73Z;80+|8X%Olf1Oo4(4{40Qr$KwHK|6)fq~hVjHaj1|S9pB|&cMg; X36$|Q-e<4?i*OgdfMxg+R$=`=IJh4w literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..b28d90988210c80aca47ef47fc39b9530f4d0194 GIT binary patch literal 7792 zcmeHM>vG#f6h51}k?rPE0;PopP{XAO7mIQ!r8a3p+O$cPxa4A5I{c93CD~S%G%Gnx z;W>B~W?%+>GDDvN9)#hnC0TMJN9)9al<6N^m!ogb{j&SV-#`Bf0AD~&fgu9-J#K1E zgW1|cW82V}qj^4O&F`7!xRe{d!!^@tc|PUw15Q1s#Z9U`YSk&XsZTxa26ZjxNt4=s zHT+J29D&nqRLih8wQBt#HGKl3uG0u;m}7ec*7X6ga5utrc$vU(h1txXB``Uy*C_XQ z%KDuSyYm)9PRlbj0=apoK@~VfU_9paCg%>%!zelR`-UyVwYF(PHJzr*EW<~>RhK(; zi#ENhYO%1sMb!p1ErTPGYnYFWO{z{YrxdEP6sfWlsxp2Msj?KSa!PGD)KhK8SDS`! zZmB-P(;XL;mxM>9m4w|&g6q6B&2|;zM~qd|HP%mLLA)EggW#54B}PCvJ4EOHPdMSuZC$Q<1=Yy z+EJeY)~6zl0J4f!;;cb47+q#NG)|it#L_B?36Fuj`m}|l;udY6Zc?71u{A7u_U0gn zVwGl~Ewua=&oX<>VOV$ea6#>(WJcK_$Ci2{Yw$an!E@_7#{%zP7^pYt;el?uu6Lr7}uFiS6WRRYSx9(2u$b> zHYc^vh~dMWzr}EFc`&HCB^DtXop5|{drvKcS~oc_iAkssj43$Xpy1OpdUwl#JQdd1 zrfrC-Md02Zf{GpsQchfp&Z4aMYWBLmnk~=bGUr!Yw$GY$(cWerLpvk_jX+V45@k6L zuMzS@7(N2_Zok&_Zjdf0TKg)R{IYj74i zuFV|oYH*xpu!Y=k8-|aXx;CwMSIhEVJ?(w6G@}QZ9mC+(;SegiNdFj6d3cAwpAt5B zwrdKerv|lfFACEdf!PBoFQNT=hXSZ{j30Ks6&=|^V+eD+M~F8lb3{J&yur>K-w2E` zoCUdUSW%GH4rJs+ZA;d9Ea9|>@ZSH)E*bgmD{P*uXYBrBp+O6boAV~#WGW(50u z*r1Jm$Ad)2l%nN6(Qs${vBCTWhga(!<+u}0;QE0ad?{JqZXXh&Q{b>CWM0hLMY$g3 zn>>6*;75sAk(xuKh-7^qC0c8ruq-gqb)AjBizbBju0MgNgPH~A>YmRHv)$*3(PzbI zQV)+ZXd~K{jaIJgJx1w~5c_QW6{w)xv8W2*;muflFW?lojwd@oR#M|XA%fGeAXXA4qk?{xbivtatL05 zSMgu0cOL&EzQpPQ>SPLEms0r3!Rzn_;-#U*QmQFvms8LPOu?Io7V!91hcBVUfUmbx zkd{)BF2ZyNX{Lh|>+RhXq_0zua_~NU(9v5dRnnM0Ed}-46jTD2;G+(IA9wi6?<=XB zf+RfZ(}ZWlTECpa%MU3CC*TUMIs~7GdcO)Acs~iFP{tGGYcL1%a1(C9BHV#xsKQsU F_755X=0^Yk literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/EndpointOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/EndpointOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..e9a134e77bf15ff1ebedb3105bff1ec76c940f92 GIT binary patch literal 2465 zcmdT`T~8B16ukq*Z7W}*_yy{KqD7PLix0*k2_YDb3nYLT9;drw8R*VzW~L4Jzl@0{ z`tFZ1-r06rKAN-`HQ}M#naP>6_uM&i@BaMt^*aE(f@dBK5%^$q=*LV*|9~}_FO+Yr z7V#(HtAuN2mG;AW!&t7n3z{3%&>{B^8&$3)x7_$^GD?(?cC)?9gB*d$l(Wuc&EKpZ z@X!*tvLvLi%LHai!7kVKs1m&Eu&mYvm$tIFOCYzZBJM$fz(kj1O>3p|aFyg1-b)un zy~!gQsyGpKW`&Y8(W+YKv3W_0g`Is)BOcb7Mo_}SLssK-UZ`?gVL4M+ZY%6AWD3h& zh4VC0+)$}3jhPMisYQBzl%T4U^q9`FOJ~_dUH;>jwW1esqO_&R@{v`w2w%{UNf$wt z(@g$lMK;~x_tbON4?RHCD$1xmPI$49InNA=3xu(Kuv=}1_kj)i>eT3cxGt!A6Z5A< z#QU(Wiz6Pj?xedO=k0UJGI_Bq6(J8}qc8&F1g1+tw~%aOjgz&s&`bnE@{LA}m28J$ z?I17}sF2lnnHFx|Ud-8jVF>I6|EOM82ozfN2+s*)C@lu3&&~n1MNKl>&=};}IlxlT zv16q>bY`yvnV(N$mMhE1IkVM}R>b_RYziY#?}{rhX)#5)#US%pB@cHAc{4!S&35!L z+i7)uz#V0S;{N{~znC*IwcBYAeJz~jrZa(A`%K#hfzN--ZYx!6dMvbCoJGeQEanCq zB9Ag(WUpO1-;BFf8rW4HJV3K%l8gs)1jag3cQhV6#IJ+1Df3`~!1!rnc<_WkK8w?X zMFJyfIVCW|+uLHj(}Q)U2kS7*qr2K`^g zL=%1YM;Y%d-E<2iZH>n8vb!@mbLO5qXYSpfzrKD4fEVz@fe8ZdV;y)A6Vf|mUFHep z#YT(hlkilVYi5-8g0K@CuKN?3$Eu?P?j3dNTuW|v>}^G?$!kV)7VY#FI*=nUpU{R( zHocwtArB0J=`|sRStn4g`1@R&j33Y8kT^qIg$D5r*FQT^6h9b)Wt7{QF zqXCmPf;y+E{ELe0+Ot1b&nY{cgP}%IM$N}IFBUS^8y)G3*bG7M_G~@`Hv0C7*@v)= zCw&KVs6~ShA>9_oyn)PkpY0VnYoQC7&aqNeggjg-!4%9ASgiQ{ih?yu$YxS;=6oUf zn@)s9ZI59QA+X@9fQ9=^3p?&j=1fb(1U~rxu5?xj6jXX%7)E8)A3Q?~sEMXzrlT>= z*Jl80e#V#8?7%v|>Zj%&#I0A?k-5Cvkw!#(OLj#pQ22%|If-{rchOH>SIxssLbgXJ z#OaD5)*I9~1f0<~I`V&9`>}kA`K=|*^_8#&T*|0Cxxh*%jfKGHzvaJ;I<`X=m^Uoq zF?LDbNX?P%xOS#NXAL!$yBxSnU?!u=fo1IQnF)JD4%{O!J7@<79w6{kG97qCAfLwT zz$$^Mq|6d1ZHqX@tG$O!B8FukFp2*?02BB%1=IL+aP$;s?R@bYy2|*%jd98LOJ2P)#JSl Sk8wPU%y)po3fzZ>Q27n#L@M6^ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/IngressOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/IngressOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..d9a79c063e8d961e57ea8ac0d24cb8b7ade0a60c GIT binary patch literal 5397 zcmeHLTXWk)6h50Kk>Z4=4J{N}=#m1px!Bw(wVN~z4K%0?lcXMCcv(vuXIou7t92&j zoj=1LUhLNHHQ|>NR2+#LB7}Y^|%w|<*v#PzWKJv>_??upw zq@swj!&*|fSE$QE?LmvvJpAX?GAn{XMCO)znotIa54RiUVgVRc5oJ_8=pUE%v#WDuLdVqojRqa`<@iv({BzIWCEt z+>Jt4_#8>m^~W*Cj1oDfNY(Q2!fat52-{<-XJlmN+>^I5szWmp*keX?_aKFzQd*62 zZ)9|=x}*DUz}0T#(X_*&29zswM@B)?G_`cntl0UufbDFD%UCB>_tikevF2W4I;bXw zqFVwRUYLU^I7#4a+3C*^X+Dw}W8M)VztatHhS_E~HV{~FBA5A1CWXGw7AMuNhzWe> zJf2CZPGF{&Cv>4)aRwvS23w*XGA$YemPZU4PL|DjexX}U-N~!k|Nl~b3DM4Pc0(ls zek)W#a+R;!@G2oU3`VW|i81?RFs?DiN0Ngl-CK{=7YLjbAx_XC z^Y3;%rm%|Nma#mkz^7tdALVGl%5b6U6($64%k+BpEwaeHO=eSb#J`=^Ld?(}qh(7lYCrX%8O0p9!4aWpM_$;&~E3 z771K`B+jm{AE5o${}H0$=njv+6U*~7>vZ)Jyb%$U&JPIua$G~lN-I{9 zxk}4IjE5oI%Tt=au`zlOGol@b%@r1Wh{rqW-mu_f0#+811)ma_&2BV;1)t;D&~OX2 z;0x@NgCl|k*w^NVMBjpIXqYdi-P3|)0(Ksf1uF!mlJ8#&R`D=NZ$=Al4xC7(ydyAo zI~_K+aV(AD4Ipp=kH-L}@oFmhYvJ7|xT@Dnzk~h#Lg`nS`xEabU_P@1v^|B_bNCcm z!D(2)-${58&fs%r@p=MYf|v1ED!|sRHj{o<@Cnw*aACfN%od k$G1*EHS?whYj}SSX5j<)2&?%ST!E|5fF-yNH{i>E0p~o<-~a#s literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NetworkPolicyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NetworkPolicyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..4332618a958ba2ae214893373be00e8f2f817658 GIT binary patch literal 3082 zcmdT`TTc@~6h6ak+vSep1yEPKftRkR55^)15>(=Hkya8DqnU0;7}(uuW~T`L4}Xh^ z8h!Ui8P6=cmW5)eff!!4Gt+OrIp;fN(mHb$f!?`i3yaIsPn_9zOVh>Y1p--Ti7GrK$P?(8zT7{E0-YD(=+< z?oFIJAWI30T57w(%xo%)o54CfR1NUUan&?{HDf|tGYuFIMw!{Dz8dUrQo}_Io8)EI zfOVd4vGPu%&{erVYfo@ojz_VBSK#9QtX%n1{~p1Z-q*(=ka2jTH_&sx6W~1BzP-icUm##3K}vt?xgca0}6aKpsFg- z(wF-HlTNCz^69BA-@KDl=w9qpehT@Am#cx|KAQ_RdB{zCd^@UAnl9lphPrBj`YgoP4J#)Zo}4(j|7DdfjHc_v zfNS{V+Z$E`ZeZ-viEO|)f$o$L2HYahpIXvsX}}!+M`>HK-WAE zLu_9~yvswl30CJW*h literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..fc5201b92d2c03faa874f6ea170cefb51d5524a5 GIT binary patch literal 2401 zcmdT`U2oGc6usWMr440YFkozB-uUW3YF>CibeotakPxAh)@>4xZfZJjiCsBvHTXUJ z2PBZ-ogam`P7_*fMePtEcyVm^`1l_C_}+f~_VF_SY{Eka#t7769e5EF(mQ4y<_YD+ zMvLg3@KlRyW|a1VupJw&dlQ<+s;vX=owVy*OKy1VRaJxUrYjuC5tvE%LMEHuZvB`C zhQQ>8kiu*cSStC4T$|I1|MCaJPAIrEmGwgcxg8{Ppg>@{NAgT-rSou!08|WHZSq)4q_r+KwOYt@U@s&n%q&vQ^nauEo8!G$P_JWJkmTrEc3Kk|a!2>iU_rDtWj`$kP#0Yqnyj zu?C16x@H8AH~3$D&KENy9%(J9jn9R3*=&DVOv(a*_rJ?s+jT5vEHM2xYGfwJYVpST z5<7}<99Y2;epb5!t5}__CI@a4$lIR13+%5Baac_FmQvnjc!1+6WWEIy*5D4@ GgVJ~XTBtg`~IDi2p@v%Eomcq<*(snlJA2ZQJ z-+k~W8E`KI&J6P(|d1EPy6Z1yAJ^H5bioKM4+ja??z0-?g48vS4dYI zC89UNl?hkONagxrsts4Y3B|QcmCxP7w8>S>4cG1q89WwRrHK(Tev}3+ZZ^9B4wMK? zX7C}4TkdA_fcu8P=(31~Ss^fA^LDv1M-A`!H^8+}@Ypn#b_tZ$WWXJ$5SZwJJW)!j zGMphL_A<5sg>4>CUq*=tnT>%aN;X3t=?Ao0+1ckb;C{#y8YRp>WGzk?g{*gzt>?+s zyUF$@@?`71WEW{5xu&r+G-Afzrv~BqQG!{05090t+sf8$)b*cUtP{P65~&PDls(o| z!oN>_7TXA#oaX8OtCnrM`GxtMI6DR-Fiv2m=JiBq8>KRCWg<1< ziI{Js5eniCL){@T7~yG#i??oO7>zR&~$@6XF_gFvMtYq+5pPHo9MzRA{LTeM3HqpT%vV1r}!2s#vDjSeL4o)3s5C z%Y^LxfVSrzeK>nO_ddo2c@OUKH-%&{f@9&gvm5=Xu*{_e>F1Yuc9{|Q{JRLe+QciE z`DTMfT;t8mgPcYAip!^81w|D6C0;sk4WB3{i{`)rf$`(Sao{?E>4E||aFf7n!4FFV z2W}H6=b1UML|`P-dIDqXLTgl!9lXIbEC7LFe4YUeVQ&ORv2}2C4`=Os^*xkdO;z8* z*vHIf0$XbXXgi7RSk|w?Ihevx38vvZ`psZ}2rj@Zey#OI{N||Ew}X1A0Cm0qbr|L{ Xy!kHf6}W@raYVif6c*tI+=ALy!_{)X literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..1ffeaf9824015175b3c8224da1947d1f7c08b452 GIT binary patch literal 4470 zcmds5?^7E^7=AVdE(x?C_J`7{2d$b^%~^lehN4J;RuAZez>J@q&1DVSCbyZr4MY7y z{MtXm8J*GZ{!xzaU2-IW;9X0`ar))5w>9n}_^8>Jnu*$Ir${Ru4s)zO}Co_1F9*Le7lC~v) z|NG3mpwk;2)6q#T?<<*fz=jXRxucTm45R`*)~Y3gF?e`3Q9d{9efN8p5Q9|4zXb2N z5}L}shdkI4hS#~_V{kW*SzMmM46ZO-DV%N*!cY9HD}AxuX;EWR<@D7KdkN+7=04Xl zeD6(8m;)IwRNe8nKh&w@x=jF;KW$$qy2FwX0(ND?=V4_rIHv&1F3CbUe1w`D4Px0X zuh8o2m5y&@OFZ%qWgy9^)$scr^(y33-i?K-oW&wz*HUyf@rr~b4f~M*{=Z8bgGKF* z;hI`gyKtfG1C%i=b}FDVXOs-z8UmT;8P(2*SNMt8*x z8EWwyc@2p|)EfWtpaz*h&lcY3Xo9Tlkvc z^6*@@g|M*7Fd4PF7S`x~8`hGA^`Yx`H%$yPTQUgfCS9c~L4ZY&IrM*k3>GknDH<)n zLY8K8(QFA`FP-8a-#CaUO5rO?sOk z*6XzH28}a#3vbhJh<=BDW7cqOm(?D@dTRtL!xC;1UzhdPG1KHR)4L;>?u=l{;(Zi) z9^NK9`?eHEFjOOk4DE6OAJ8*{4|_IzgbjLMAn!}~7@ttIzQA4F!!lOz4Zg*Le*jLk Bq3!?x literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PvcOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PvcOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..76ba5bdd15440b11e319e09cf51cfa87274b599e GIT binary patch literal 5503 zcmeHL-ESL35TA9Eob84rgtpMMz%_h1eAomEw7rnx1}6<%lgM!+@r2gr#o6{gti8P` z@F(z&#D9VW61?-wEB^{&_CAt0S?65K1uF4!ce^+9+u51fnc4aMub+PffKTDR0R;lh zP&hS@a=-S79?%*OYM~U|`;OOw9urgsqUN|!D495(5G)KL;jr4{sLh1WBnxXh2hMiN zV88@{xfsr+ez&&We#9I}V9MU!*l08fT(O(X34DjUoJt<}cF^rIVG)?!+}PS~*6-Pk zuXpOL`?~~6_70V}xQ~CQR=CgQDuL@2dyffuXxU#L39#mJ=1Xg7kHExQ&|wBVhj__E0M);n5ORWr?bix;pY=iS*p- z1wxvL@(pbZ?%XmR>MIG_%*?j`tWu^%7-C0HgYrPR-VkdKMHibolHAn-o_22yktqX{ zn)2HoE0=bd2ss{AU+x8NyeB^ zo`o|vW_Y?HH}42)&6VR8*$PSG%^}{!O2F@qgJ={{N8xE4I;^KkiX5T))sWO5IV?jd zW1yAC7@W_SvkcSl{4|tcp1|dbeOv$~^2Y_ztj&G46?s^^wJ6p+1m^9)q3#|PT#eJo z3AxWh0xf&|B_dXHrKE&HTjBDRCA&YmDS}vEg+9=!EfwzkA3L)+g)nvwTzU4~&8pt8m?tT=W zXDPlDm_eTigmO}h;rnQhi|83?I7fpl68K?!1{q_TP?G!V9z)%Sy$+S=({AO|HOM-9 zS~W9T!w+zKYspR`61w$||KM^fM>|V1*?A|f2yc)G;_>-Bn1FWU-pe{y zd3)|e+a+!r5cp$U>AK#=+cS0K7WG(&JrLH(@@LlQSvlK(c_RG|pOp=GANxPa$u{5v z-1zB>fdMx$#`dRB13o5Tq*2^}TUZfk&1AqG0#~)al!ykbU@PfV#4rFGQ8U?OQcfH2 z8G%dvb4hJ!z&!%ROn(M^PGB;=NE)!-*DFh^Gy>BPco<^w-NK7~2sePh1#H?CU;!p! z3cnV>fFiyp@lOfL_`Hatn@FYT%D=$$SMxJJ!Q5{+D!>c)oI)B!e+i${@pl<6!xbD& zz>Dw_@?FJmwZb)gE9&d`&QKL^g8H%sbyV2p_>Ga2qUax88+1tU=>% D4c8dI literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ResourceSupport.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ResourceSupport.class new file mode 100644 index 0000000000000000000000000000000000000000..8d85878a0f1b6b54c55e9b238855c16dd4885c5e GIT binary patch literal 9849 zcmeHNS$Eq+6uuME$ad3(bYU&1WphfgDHK{FH>FLJbWxhpIBCm1mdDOCvgD&BwD2!@ z=1=g%IprL98eD%%U=5C%}|GNJZ0Gx%E1|tMk ze9x+OD0ixN=sK-(x9SHT?|jXxZkKs9aJ{N!hkn4k{sWKsZs=L8x)wH==dghJ)f>HM zOJTR`dVvO`1olfvn>y|4V&e|80s>>^;{5#V4FZSF8_aSYi`$$A+;vR1-DaLaVAneH zg1ZDXb46U>ld&3icrZ<%RPH^STp=(z<2IQFdkF07FEi_Tu2+D4WdHBWj$qSXXHDI5 zJ6&$eW%RD+Hf+}Mr}R>>zRL6_vux@iQI}e4w9WKm+^zIfP>EGg>8YUqAXY)8uYzNG z(`CNyxPjiGfwig!2+!_zQSLN6>boNJT@hSY9(u8ed)^Vs))A#e8y>gL=oWPZ2Mwmj z;yQoQzby=yX_)4iL z<6sWh$h&nU+696Ax;J1kgrn!hl_{ zU2Bay?eYw@ZGlj$PfzMC&+W)?Ei9uykjgNSwwULO^+iPQaNkD&X+%8|D2lKF_1Y|m zp1UoiMSY`wF%0{d-}H{qH-=@Zw?fAfDUaHybWE%*YN0zQ=_cknM{X5c)K@+CD+L{% z_wP9tswA|7oK@8+Ro7P1$>2W9;qj)(%nDM^vmj6)Tf$liePL^Fy};*s7SAD+%!$3X zrSmI-T}Pkhe%=mITk;=Z?G)yWf;X`v(DsGpTVIZjN=S}yDDg)b7R60DXAPw%? zsQS;b(nGwWW;_-3KC;DCl%*Ok)x=d(hiZDUoP}%GcLZZUN5QCC^CKmkH!VZpV>Oy(~6Q*lXdxd&j-1i=i zih`BEE%VU~gm8{?z!GKqqI1*r){vJ~kI|-NJ1OUlNi*8ANL^gwZHEfO6F5>fH`3Hh zv2%@SqW~`wGOaN08CEz*c**hG9pp&pCJ%H-1P-FsdtFl6FsEwusg$Qh?WHl@C$81& zXqDKM(Om(K68LslHj3HG(Z53CA+X1CZ5wBFGc@!WZh(_zGu6l#12>Z?xs#lXzIuA# zo!ar~f!D-+_L~KGoxm>&T1ghmkvPTq&?ptx#&NID?3UOY*b>P^jnSn1z?j!CMg}YQ=rHv{XHPQFTk5*tf63Sr8qSxQjWC~rRUJa7Re!d()On2cv81H3R5f0 zhe@?Pu2g%*%{d+hfd~Bx5!1ffCZX{HY26yd~ws*@(mty8o9MPzlN3jikyxU#^ zyPKk6WwIKO6?W3VrZXs3)f=Cus_M7@-Ksj_B`22dsH(cqW9#>W?-8NAQ-pk{Aa82vt)(eubCvUwQe`Ft%E5_c&LP`Tu3lP_heGDK7%?1-$2-0A zAo8?>26%{LcdAFx;6pss(XaG1xImx~cXt|GM4wBVZ4Kt|Hi;4%TteEoGtl4)9u$ep zqk)Ov#7?cjHC#017aCm0<0skX*8q>Ej0)>$P)Cs1P8#4KW$$3}*5Hqk9Lx*NML*+`Z2PO zKU?~66bL+pM|(!#dDsPGcr^hU6!2606`_RR@5ZZBNHv0=r5|DZ_Qc*FVE@l}Hv$Ln z{}|E$zI_n?kIU;49D>7mN8lNF7O9@YYq7#cq!%)fPG=wi9D$b-q?a?0^bDkPnMlXr zl?3V41W9NilJ2z(q=ihRH=vv#O(sai1nGDN(l?n%C*Z9FsgfY|HD1j?`YjXbB)pR# zy_4f1_ai4M^m%-2eap literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..e9f6c10e75aa07b7075e04e3c98a3a023dd7c8f3 GIT binary patch literal 2503 zcmdT`T~8B16ukq5ZA%42Q54VtzltW^nD}5Uk|5ElD1JhVh5bWL1MY`RBdEdrV^-&MS*S`!WF-|@>4@x3 zq#`R_k;^ntJf>0^8ZqM^QiJsTq=Blk^qA3#&1l6&UHR>wwWAkNLuo^iXq^71^?z-&fCRKlA}nqbQ^1eS;SZ8S|YV>5143LU)Wl2-fxf0AynK0hl4R z?_d_S2>1ZjEpftw_Q|w|lT$gEP1k?6rCwgNWR^S zu(0hjtRnXPVP6RAz`2afw7DkDg}}!@Wx(|swnXNeZ5Htu zJ0%ZNccgz@J=>+TmKw@m4&216!Re$putZ?8*8mROB9KpGao`StiA*{ixQEw+%!J)s z2UZA-CAF47X-mX0p6-3@6frCTfl<8v0F2<*7>wi7!O`~;dBU!N1{G zAb|w${3yh6n$TS;WkVp17soz5{_M~G{GI;z`Q;k`yoARVj1Xug%5y>{B4?lVm?NZ< zXeGjr!jUmoOiSf>K{wG{4FZZMva3Aq9CX`UMO^d5*^&WoW-}}(5tvHx0v2_gW_zD| zn!xyqh=g7xFkf?bxzdLX_w8?l^+51QHH~I5 z)R#P=k<>I~+S{WV;rU^Vtd7FtQP#~-*3GW#f4o?K_acm?(iBnNv$hi6GwQL(?4ZqQ zPXB++?3v3S%IBmWh9prfDWm#B%5SZpZ6|G*6!1S);E!ArsQYs>EOi!uo<(TSMuD%{}HQwb}s(Rm|n zjg+yMsWtm$wXupIb6ed=i;%yGdLj`>Zq4{b>W#?Fc5@Xq%5aO2=Vx%yd`5wkj?*bf zzKBoue7eK4Y^C+@wJ?I3K3e)x>nHH(ZwYCwjRlK&dXt4b!8*qM{Oa>!yK=gQo<%Me zEMSd3N!)@(0u#sY(}KGM%K5Su+{XfKC|mH*#Ia{IX~8mqvDEtrR5wJD;1k?NlTKg} z2#n%i4uBEtjlnp!7LJ}^)Wq$tP<}UKe}?M!G-nc9lLMGLg>5zM+b|6?I4Z#vxQg>; yu|ERW;5vRy_6_{zsAg^-_2v-Ng(0Y;Fqh)ZXSlcF5soJi`3_K6f_v})YQF$7?)O6g literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RouteOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RouteOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..962d1f3a86ea88de5f7c855df5e9fdc154647827 GIT binary patch literal 3904 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetDiff.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetDiff.class new file mode 100644 index 0000000000000000000000000000000000000000..7dfa8899060233d30e7d2a30dc83f1f9e01e7f44 GIT binary patch literal 6036 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 PE>`390W>a)MmHgqO=5Y`>df};c9@yo>gidC z<<+ZKub#Ym)Y2-cvaGVovtPioAHbXC>*-0dkcJ(*)(hk^v)l9f_x^PE>+bjaKR^Bq z0N0^91O)<>So&qfVpU$JU0UX%94pDg&v{vNn50U`vL7U|VzOK@@7q~>MMO>BTE?zJ zu!q2S+CQLCt9*NHo%xEuaCKqzv(?$9I)S~ldD@vFFjD8Oh^j;~0_Swwwc2*SI%+5_@USDK@=&lz*Ch9^cs`A^k~QXSI^iyvIg^9=gh>k7 z>gRMiK#AhPQze)qFuNi>D{n6B1l;G!ixW(Jm`);GDT$A%(KDHDYTDzmmqZQLS>-FgwO{xZVyOb ze~fkiuy`@B5ad^wE24w+@JUx_rfZiMy$S$09Q zy#B+6pMx_Pk^asPM$ax~`~KHE8+POJl*FY7qi}E(Mqq-#;i;Wv5nTrvtKns0Aqm%* zT-HY|0uwdi(*O@u>Cr1|+@sn&CQz*npxlGSn1c$F)=hK8F?ApU$Cr{w@sQ0$T^@5Z zWmXq4(y|L`-dEGpc4iok6IjnvoEc13Bydcdy2S8`<@122=FCM{&g#-&7)}zn`FLZ} zLQ!8^2<+Et%wZP2o#^?Og^9oc7Ii=7s%;Jg1cs)jv#Qv6^DAd9Y#2^s-LAjcee*Pd zL)y+7kJatw0u5P=RWOF;pR_e=)9abQm=;(NTYWN*=dnZ=(qJnL<63Ms+USu>hoiTt z7klJk`MF3NN8qgfkj8B>34%p|*X9k~(P&x_dM@g#H-X7VNUqX=H}H{Y|4u(bXr+S} z{F=DSWQE4Kl&+_85l$7}cu4zlTZ+3e&UO9GEP({erFc=P-t$>U|H#6-)v?Ze$rP$j ztAh_W8(=y=GH9Dhij_r4;KBp;W}NK~soC1%%66ACx{I-Ek>Uj^YH9Rr5Mtuaai zwnK2<+^UQeffL)bl?clqx?sr~845i*uD@>c(&iP#O#Kn6Y3l?8EmE{wn|`Df~SGMSSkZmP;r_@Ll`~Mn9Q&_Int=pUORl zPu&Z!_aS_a8YwsoNAMqk=aEo=qnXqT_})o7W}#iO(q7C#J7J;KthARLX`fnYo+B-= z&q)Nc+l4n{uRmZKX{+(!R0MUUj5>Yo(oY zq!!Ad*tNc+V~D>>4Bv(n0rv_Gu03y!out+dx2X@6O17aeJTTWN2&(FmR% zELr@LBW=HxcG;13#7cY9k#^Qfd&`k_*-E?ONSn3N-gcyYXr*0sq^($KGmbQBrCoER dty^i=9ci(JR)8D0J__&-+)U3j1$Y literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ClusterOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ClusterOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..728a636832e1deab4162d418c516a7cdd8fc833c GIT binary patch literal 8696 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/PlatformFeaturesAvailabilityTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/PlatformFeaturesAvailabilityTest.class new file mode 100644 index 0000000000000000000000000000000000000000..b86ff9b397da6640f70decb5d6f97980a4858645 GIT binary patch literal 9267 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ShutdownHookTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ShutdownHookTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c550f4770a4a711c3e9198dd6d5ccbf7be9c8a0f GIT binary patch literal 7037 zcmeHMU2_{X6uojnY%dNep#e(yP(xcBn6Y1YY6?RpO$X07guzZ`c$C+wt#()1(P~ZH zAH&~Z24>)$AH{IBcA9M~+gZW5L)O*tm2~dak@oL@e*Y5yzJafbP$2Li)_&da z*wml00jmpDkBt`Lb5U0j*UTtg_k$!hT-RIu#B|j!@_VJ8wXsDJ)(PB5n*~hv>L;D2 z+&2U^9ttVUw*=OzduIgJ4^@{Jp-f=w()LJerAzQO+5GNQY96a#z`N8}VI%@(gpxGU zsuS=qen7o)yU%Ht`vKEv6fyr9>v6g(RBh~Q?ZVgE*w1;xB%rb70jaObA5#}4)K8su8Ij;(7@(pfwxF=5MC}i`P4skIK z9e7^3HKhs{bvb#J8PlkzIm6u1?lV~pljLgur>`lu=m(4Mm<&L%M#l0MaX>r$5^3vkbP4* zJSi-*k#HokY-BH&RREHWm}(AJQh3bwxsZikLYHxq|p!iS$>_rWPjBQJ!3I)=I|s6pzHL z@+`sUq;S6C?kn6~iTvz|=>l2lwN#>g{#aODypz>5Vmcn@pW;3mGWV`&FIz&C6EAwFNnz2(5Y<;1<63-@CO y?!FWE(_FZpIdFe;;@-)HyX(Le4%{`ki{n^;dvG709**l5c`N@CBmOTU5;Zvh literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/TestUtils.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/TestUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..55a0c47cceb0c11a3abe96b3c485b18376dd62a2 GIT binary patch literal 3190 zcmd^BU2oGc6umCp(spGVh4DF|3(1%RheHXub{)mN6Oxv$M#w#Q5% zO0uE6Dzcx-1Q8`f_Hr7aP>yqXO2C(nXA4Vc>IW!U)RK!t z0}G`~BV`s#RQNP-+q@%OltBmo;5Q3wJ&Z2XIto4fgDA?}P&bj|A(y%AD`)?mk`6~@ z1^(uKC=9OZ9J|KyVo)$uj4qe8?9DVN=J_qJJ_k8!_pkb(1g zn1E>lbH&=xP8=n*67JM9H6-^Ya9Uh78E(D=3N>jl8&?zIxIdZJJHjXMxb_EUMuosa zm+Nu5CGb3kUku~gI4_k9Tqa~W!QnE_%b7`I9EoH?9_aq0jf{1VD$?J)st$o_q6);- zWIzK8aGk)91O*tFoLRR2!bXBOA?vWcqXxwmDHLlMT-5WGQVsVS)PJ@ix-Qd!!v0zt z0j!TEb#!I}lS>JiN|4SgN2PBZ-oj(dO-fY#Z8n#(BpjP-{lXWurJho@XriqQbIm1>tWas#9~XBg#XXj?A=f)9Jr=_O z;Z zM#&Q%(?}(mkjzz1Gp&v!Pt5x?SQ(5sjd>)QMxl&FU!fv&L#W=QCB4&@^d>FoO}Au& z#)=!7DoYb)qYbY=k)B&0bgh+l1yn!&%UD(OI@8uoSrsuN>b_J zMIvKOaw}wGf;B2#K;%i1Nf8N4O^(Ke1DfIxZ=*&?n4{ zF0OBeTUBTptXwYna;MCzne*d>+mVXV2)ad=R@j5{PB(aT2EH5l!kMlTpj7Fw!3JMC zIPZ?<1O5ynz5?z(Z}{=y0VlM78o(}{KTpN$#kKR{Ve#$0CGM_dmWvTy{}`zm7ckZIw{lZQ)oBn*Ks`~MchxJlrKBji3R z2%;kAA#m?$o?4M`%q4^osL!^W#m1QssW>s;WjVh8S%)=xgZ{5SEXAri=^^EM!G-&yp5 zO8BWQA2OM9v#;!aE@cNOY2WpR?G3xec4|X@*-RSkxvxh3W9Le?83@*Z@kK=P;@Br{+8=kKNs=&V+=NA<6QsyOl}}V>ws+GwGd?E7eFtZrsmY2--%;~RBpVQ~s`SYLO{s4gUaHRrc1g>f2 zHx1XOd7G`XrjSi-ln8$mO&N2=j8siONVMUq8F1F+iU-^`LPkw59kvINm20iVHh~#$^ZN=e7xm`}>|d0THY_qXS&;B5)Cf$4 zcTWfWbi_igW9D-Lb+6r8Y2UI~RhT4DO(~ehPka49@Ca9$@xDn`xr#V$YcYL?=zGtJ zNSF%*#%Jel5|~(&U0#6$xW*Zf7#)3AItMu5*a6k#ltp*XL{R+aG2P@hG1%~ekGEk2W!QuT|rvNI&9+!G^$qUD|| z!v7$plE}zgZHPVd@55M#p2n zAQfeiHI58;2(n(w9Ed|X)JV#xxf}D6MBCj)0p z+h-M!U(H==IrLI89+8Dom>m)F8|b(nxSe&T1Vf)(ueEv@q;^~zrMSF=LD9yCYf8qf zpM{G1-E4LyHW_{#^2!WMJH&-fzPv0)WUYho$+6_H5iCWh9hJlw+uC=09;e~-K{Cp0 zc2Opgxg>vxyfi%S52am)fwEarD740;G4<_sibnGvLKk{AGh0WTvC|*6(iWgyHc?kEgfyM!uD}LLg@)@% z6xsMxfMsi+BrJ^b3sMFgGogq3!etg0P?Tc56wwu?*NWG3iWm3X6YeCw)Y4A{=%`FQ z5&DADFk-ZSge~Zz^FJaBrOrngqB_jLtCKJVuMs#jdw*NP_6nvvtUsPRFDJ~J&;+h~JKa&i?!~m`CW+h8x==C-(=NwR^ehH5x+Q$61+vw$Wqq1^ zA{YC-jp}5+3dafgr9?+#W6I8+m+iVOS8{BhRlw8pSI`hRU^r7h1c)Yhw*GOox( z`TVl5h3GM-XqGzZWpM@05~vI;xB}-;F1giL0B^#lx2vH7Ut$&Pgsi{3O&aEm(y1zcm7rW&i*H literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..e0afabe74b8bd6000de2473835904d3e943b55a0 GIT binary patch literal 8244 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AbstractModelTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AbstractModelTest.class new file mode 100644 index 0000000000000000000000000000000000000000..546586a800c8cb2b2bc3c122caa5593befa67ffb GIT binary patch literal 4252 zcmeHKTXP#V6h2Cw_(Et(3WZWGYACH!!27}gLx35RnkL{h89Vh%pE~kdw$*ASkEAt} z2mSy*h#8oHcm5Br3`e_mVox@#OENH>^59*`d-UmCKOO!4=g+?az~>MYVTnN9nlNzO zy5JETvq0#;IwPX*MW9FAFsDrr%Gf$?f=Ktc4C-AJV4>UdvqM~1gaUy}$!f{eAlUCd z;-MpOxxG_wHSRoY-0M6%Xzh1)?=)Hjt~J|3W_Yim#=>Y7apew-9*Z6~TLe}<6H2%* z2wbRcb_f)uyX{CHP zGz}~7CvSJPB(T)_Y=--f>xL|?ZpIgZ!uCWs`&q)glYBR{g zI)lgoGfYY@+p%ywV;|}?Wz;@XSg ztay9g^XWq8!r+xahB|jugsrym_)&w5%=u>Rw`{7GcKjD^I5D`($1 z&*jKAMQ*0x$=PAKdm6)@EC6=olhae`DU$d8iklYibHi1b!+aH}z}hMl;SzyY zs?FopB2A+$-+HVyk<9MJQJ0%ThTQ~#^`;IP7K#ymKKZlYhQboqZl1Y~!tUp)!-B$y z9B_kF8!waH5BtN1>N_F4wo%?va^-L4_#6k!R`QhnaYK=>#Ffxue}=<{|4+D-;q0lnsZ euyJJHJ2=1LwL&f5#osL))o@-y?^WS8y#E*EVQFdr literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AuthenticationUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AuthenticationUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..55e2f490f6d3265a41d947756a83834276512366 GIT binary patch literal 8621 zcmeHM>v9`46h1O(d?7R?kW$))s^RAJVnZp{l+0w(KvSHAY1}XjKNw}L*b2L=Wu*-X z47>wx06%#GW?%;X^D?|ahoiNVY=~@YoJ^(#|Jn6=zw_x_wMWulkAC|D06v8G^N=I( zv5LK_=1Nz$*fy&QSyeg~!MCC+BOWs?n%2u_mX}LRLD8SN0UIbQG_oiciyq z%Y*Ky7t-$GsXs|dzKu67}}i^ z167Q#UD(`#2}ab3(FN$>kZzErAo7JLG*t;EB4$H~@l8BTNZQV=@(dMXOMIP0SLiaPuX%$g%0d(KHgSd$LxeH6m`$~$jOyKpmx{|Q>VsIr(y_)POXCE( z$5iVy$Fo$m#n%6_o6NKlaNUv(%9P@z{qB29I+`iQ<6WUEt}oo0%;rF8EwtR%kwsT3i8 zj!rBDHqN2@tyN%i)p0Ap#(8}AKYoerRFA#0zuRPS+z@o*9frYL1>M{=41?*C+@|?q zHS8}Bvfp(lw>W`@VK}q~%R2c9{Wds--O^}UW^t!J-f6s(YDAp|n~$Oe8E%SZf*TXq zd@qJN-nE#Q4fY^1PRgX~fhuT}t9^Em>8sMai6X=ld`e~l^b06#jzUkvG zirD6>>6Vd+%-;H_pJ;+RNdb3+m!JU8jKLW=OJK5GJJ>*Kn?Gwdn8s_k%wI`@4IbAS z?imr7s7a6c>ns-Lx%20UZV5$Tsdhr!U$X?B)3~BrXTE6MXH2!7P2kdlwuwvOwon2U zm^a%)Y5L;$qcu}Nvjup8kR_MBFGTlo>2P){bz-p?M0$5wHWHt&uz(lfA|b#0ubuoP zEibTiOhL8l=rf^PW}Zn}KJcMC8@$j>JeOsC27@hhv|!L%)_kGnvzarT~#2uyVg zBF>Zv&dyiN`-39IaBC()wfJ?y{58=GyCT+jAUx?yL|iZ&m=qS_f4|B|T{Kdu78bdq zFZU%2@EU=w(@Q-9sWJzJkj`uEN>BxuA#k_1GU=fS+S)HvBLRAz!1?kQwohvTZW8#Z z_ekmaj8i!|fd=T^umOlzta$bleBIV6)U4$AC4Q5Tza6Z!iud+#(aGp;J!7^f?1mZk zm7SxSPSfSsR}v_#$t3ppN5V9Wmo1B^I@V8mB$$V{vH7${KM(I7Is$Eno50wzPzuk5 z>Ua{M;40u*C?3E9oW);fU=*);e7cSQ61r+yE-7-vXyOmK(=)&+sh7YwtV~2%Jzx_+pCrgX<6A`cVH`9*kTJ?5w5{? vtS?hd*ACU@4GY5$DMJpiMW{g4D))v(?#F$(9Na?b9J~eZ;oa2qZFuJ&4;ZE0 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/CertUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/CertUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..9dff35273db8e99e670205761740c2566646c361 GIT binary patch literal 9337 zcmeHN&2khs5N`Qze{e9EU`PlcOh}ePb}k&K7?L93R8h73RBQ}6YG<`x!OUn&qj8x$ z1<$~h2cQb7$SsGwMP4M8*37ayUbG$oE`#H_%&uly-?VzZZnawa``=e@0N^@&Ux6tC z*JI^-n#bCE%(j>(q!()?!asy3`&=OJOADKSbwn(oEP!T*QL`!bRV6wSw!(qRs;zm*QNV{Mt|^|*hz&6Um$ zb4Mmo(ITasW+r6QpLmix%wFT>2F0ms9jfrfJj}vT0w)`-Q57poSyoJyYoUd;fV)Z9 z=4zc`;flawOZqI>U`m+w;O30(iI~98t&gg_tq?e;@yo7mW0HtTlktDi6+Xk8w?wzg z6@fFqq0@?x-;TCKEKq|RraG0@)=+`DmKpX+6;6@aqb?P=Vjh*Xj8Wk)ADlD0xN-3i z+R$(}Eh$^q9Xq3ES~4nEw-7Q?P(nBLgUV46pN<6dZ>|Y!NttPp9C^fz(O-eHU%Xg0^HuJMDn> yl?5%aqMi9bv}abdZyeChT6BA1MLX|+MlEQ6S<#jq&@Nig{;{H6!ml_5-~9*kV^C@U literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ClusterCaRenewalTest$MockedClusterCa.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ClusterCaRenewalTest$MockedClusterCa.class new file mode 100644 index 0000000000000000000000000000000000000000..7613f8e84807ed1f0c10e0d76797c8bc99973298 GIT binary patch literal 6675 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 Tg7=^fAHYY@fKTyT1#bQW6V(LW literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest$ModelWithoutMetricsAndLogging.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest$ModelWithoutMetricsAndLogging.class new file mode 100644 index 0000000000000000000000000000000000000000..c8a56dbdcdd0b3317942827879d0c9fffa9d5955 GIT binary patch literal 5073 zcmeHLTW{P%6h2-;HtVJ&4U}>#jH*7QFY6Z`5G_b;6qL~21a;G*zIE1~-JNzkW6g}W z34aU;BzWg%@Iw%1Y-i(uT|1Ye3iV;VzI=1$+~%8e=8wOA`3(TR0n&wz2hWTS1IvsJ zp3^xExC)HbJpPFXDq)&hrGrqU#xfnmDqq(q2w@9RzAyQcqQyb2RMLFy+L6ysL&}n_=w7yfX-z+uPhsTN1 zmLPmW$LOW6NJyodYRt&7LH~bb5r7u9zeVyl+e=DMn-t6zNQzW(X}}hfUI4NiCxVCE z5|bkTA-zbLCQtsjQtlImB$R|mJHIg}}1Pi@mBXF5A;8z%66YDw?hQcsf888kNng z_3Wi3*ML|0+V7o7&sLV#8B_PZMH)P$lNYqXhZ&~bLa5fH9FSId&gh1V~V!G7m3dlpEdTYi_s7O+ z8roOSo0kHmPN~*0IkF`!6cxrf_u#XrK1vhU{AES$yG@#!wx9rcE)>y(c zXx%E`@&KIyno%jPWQjfN2piXSl(2n>Exx3pn5f;L1z$X5MsHlW;)mab{V z0J+37K+orz@8d%(Nn_jrS!%WqT@o{0%=)_g&hEj+K!p^^FW>2lmrHiWjR)hw>ptnZ>w!N~sSeq9+-Y-TksgbqqU^i` zE!veKHda_vV!6M=@tjGAvm*~ycQI@AmY~Kk(}j;bcyMv0J-C@MYyAP$ryg8A#bjN$ z>A{r}si0~@ZVa|+2Uz5wH&^zsrrA-(0s#-+!2>nGe-8t;jMpwceTi>7`0xJ;D^EB4 zpJDZPeCog&UL6JyyN=h@?B0iKu#vrcAFmzw0IuUdz=!zr5rN)>kMZtvd|t-ypTKAE J1>Sey#@{Pk+=>7I literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6ae9a15bfbc0a8dd190def2353b39a68de57aee2 GIT binary patch literal 7653 zcmeHMZF3tn5MHHe{X*J?q%Sn3aI~c)Ky6+Ml)lY4$#oj)I2k)lhYw7V&x)h=?&Ohl zA?1%T12gc6FZ>LC2*c{`;@FdOt;B{YOg`9mx?8PQyQ^m(>HhfZ=U)NfK0L_51c5~* zy|QLXm!H!eTIQmxwB*5$yev9QQY~cJ^CP91EC-^+{PL0rw|IM%cAjYNs}1a#gGmC@ zad)4F?ebdlIrB7u$y#OAB`{Onf7L+UVf!wD)2K#i8tP5zM=TEo0w;r)H@$#B!E|e^ zSC-s7Oc9vE#~}@v>QIjnIJ@?==GLFp-G^@7tu3Mc>FU}KA(M5s#Uu+ohT2b6D~oQm zK_FkP(kAm2KAUYks?^=(XKrot*?N6#b7k4B6S!P$Y*WcvZn(px2m==Cbt!gui%FyB z9uK*GK;Xpu!X{2=2|bX5i)h9Elw2u=%)=!z{pXWVG9~;S)^a=%bhuA77opRUqUp0h z-EoSAjcw+%nCF`@9h}h%+GfsGE=sA_OM6}~rCu+^Ucc(J1XE5Zv=dP6Z95wEu-y*& zxmORyvSeaeGUkbmk0tr*?Ij`G z!wifUNQ4MBHbIL)M-W*FIzIQfc2tD0jPQc!DI*Wz*-7Abe!=0&iNY4!;vr(f7QVrI z8u_|cy5y`Pn432!<8J%%AIkZLfFhH|}g_L0&u?8Q;^hVS%+aF`UfuDhKO)W~L?I7wk zbIaNelM=VKL*{6eZ;3k&AsRy|uH+E+tPR|_+ChT5izg2u_0xguI(6~lF?-oyJ`RXv zcu)aKCSvItD+EY19zyhJuK6a|#iNPk(HIc5onnkXoq@4nR8wUdZ zlRE}fb_lY0_2#WZvu0JU*_O*0^g5wd=cpbX;0uv*MzM1Ir!4>n)s_%4sH`T(_hzfaEHL9frpzp zxYzeBFQFIc=~b>2p2=+BVTywH06&T0N5qpbhrd(U%3*5)^4Ko+wBNw?X*h%L=HM($ z$JaMu2CtLYXBN)k|9NcPLTv=E#b4mUw=-}31arS(YXYv|ztL_+dI$ff5-E5W9BdJ^ z;~Yv|#d{-l4X+2aUC+>VD^uGI3vC}{Xj{zGwqT*{!whY;3~eXiW1QOr+=LQdXYj6! a^ZgWk{TW_w;q^W~FQQk!fUn?dxcfKNX9!FH literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ContainerUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ContainerUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..fc0eab8c75264ed5a98a9f63bc4eb94fb61a7bf3 GIT binary patch literal 9116 zcmeHMPj4GV6n~SZiM^yv2$Vou=rpw8fMj1dR0NRHG?5~?ZAjc8j+5PSGG%vXnVpSd zZXCIClxFCT97fyTuJ^(j91mev)u{X_ZysVv2Dqn1`=QqE3^LE~w_viP&fBFRg zK8B@fm>_UJR&GP{ST~-s1J)3-5o;xauS7#eTrn+G!}XI`bJYl>$Nk2t3^fxWS5LI? z;}*`GhDic*>2#lkdyU7tPr0iJOnoFmp+6yTskXF3U~(1bPeYZ!Y#+O(lvEXXiOl`= zBvd?>{sH%>D}zY*ObZ#(NXcEF2l0p0skZhx^|rfFYE)Vf0`ET)c6=uE{ev$QD=8ki?Q=I~b zz=Fnjd-Y^UzlqJt3cQIa!`U{Jwp#~=>)7}0udx;$V0J>_`m=wnD;Z#iLvd^h-?R;` z3+{VcyiH)q46k@z?;y2gmo_#|;SrXWS{yq>n4}PR?@a7k5a~`IeD_RnQ5=fZ#xBzF zJ|1xFiwBsfZ3Nhf-bCp(B@TB8Ts6y?qyAVKp$RzKX|HBom{e||x4qO(T8K@X&Tt#B zTaMj%fGhaxGECv;G(LTR{}TLmeum2D^UjYj^D910z$|_m3?Oz6KWDlqcp2vLiNGs3 zIsva9p|0WgX|~raY}Cs3dI7dKENmNAwi^Z5Zd%w5t!!_VWc%96cB>@YH&!-UlI>e7 x+wGEU-&xrfOR{}$WqZ3M+YeT@J0;nEv$EYS$@Yhp?VXZre_GkzMa!Ik+CO4jdEx*7 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.class new file mode 100644 index 0000000000000000000000000000000000000000..4efc27b2e745866424864c01d1b48b7cb447640b GIT binary patch literal 11513 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/DnsNameGeneratorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/DnsNameGeneratorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..aaa5eaa61539cb00dec4f8217700d2f88f34e4dd GIT binary patch literal 3968 zcmeHKZBG<25S||B-K_|U;0wN0R6G=R)%Z!&gdC?K0VLju@slaL6{@@KrtK2(kC|wq z-~AQ-665stkOS6WF2soO!|mPN%sy?OnRcFj{r>SY06c`-WhfDtGdc_`H#T^~Hdr83 zV5}C&dl9IVYi5-W!ZmX4PkApdBmRQ1{aGASX_-+~c37lvH#7wRQPgmdY&=ROF z%`P^Y%d_tZ2l@9M|Gt}^zdvd|ACaU=Te=-iLnhr&tDJ5v zsK-d9*Y*SZRmd{aERK2H%!K6yAk-?#sNGDtSDjDNScJk-lVPDD`B(@#3$fs6UOu%+ zDh$nJ#9s@EjJ-w={$^QhyQ6)&h~?=#7)6sZQ?RjykM+rASkDrE5r)56)EKl|;vKwBvm+rR;dP{dt-hGT0 zgdfgUL|}X;*)Ie(x6IaaX*;J9CM2fa1vPVt+2NuB6NHowHO&XIj|fccC8wChF&Fqk z#8Jp}w3AH&ZLM4EEJpL1D$^l23KrQwD#>r6gA|c(GU% z#^Cj%g~G+a6~LPU-iP{N435B2w906epn|s7WgkQPc$YnhaR?75@i~ld+(QI{-`*!U z^>TRh1DyHN#u>w>Lj^=XkI#WT3NFA!vW|P4T1SA#%W4!p~qiP9$sXELls6cD2DK!Hjl$rM70K zH$5}5*KmPj&N)#WICA6!RiO&*6c^ykCI18mswlqh8A&tRmR6p)!U3sjHPh4Yeed;q zuY0<``OAMk`x6npML#c6!J>sgwkshE!pcKu+o^C-2|~%eC%hthOgf>Em9`rNA(ItP zbeLPI`XLYd%SmSwnngNc(OIqTI{rpwdHo@4hZdDu)zwCAd8uL1^Y!lJdUF;{Hr}0Itu8*OF0~%4tS+}|i`7+&F4h~Hj%1yxzs;raJ?4iiQf%`Mlh7IU z9ghV)r_C&ysPCC=z;Ay80^_%YAB2t{wj4KNB^tNrgc_km#bhWYI&0BLR|q&MSjUX^17Mpk^xyM8ls)v^? zdI4S|P-_8`JHcx7Slgl(>v0J8_rUY>u})L;csr|fAyFFWg4RT=l~p*GD5Rf47Q+oh zBvtH+aZd2?xhw#Zxlb7~r*3echc^+nnX4@X^cIStNLLY|y$n>P6tYBLx6b}^%~yup zZPu~d!s~HF4~e&XQmnho3$EMc(dH(zJFM-hOxsB37GiEsb1|C~;H*e$Y&OZ-tS-Q5 zyCYa&`y#YGCv0!pA#m7Zgf>j$psZ(A!e*6wv%^tif4J8ZGPEJyb=Dkxd`t zofC2bk+;rd(*ft9xGK?h+?FG`Y9|j*gqs}H z(_;OL({LbZ#n(7fMCuPHS@TlN-B59$mGUCjs`4mkCQhnw@=t|Ha?FyDmphz>Y1 z44_&KJZnoo`60Iq2 zb0u=!25U>E%4Ev)SjP|i=%s@?7eu&;)T!>o)*$kv>V=(1Vw7NIL-rV1*Y*;ffljTm zi?kxZ&Gt2Mi`=gD5S#jZ7nLyYx=8vJg`atcC?gJLo&oi5D4Gh5-M z6E_GqGfZR;?O@S?Q6J*ufNV*5u!?#~lA~^G{vz*onZ&GG+GEEr4}@olg^z^X+6n7R z`vX^o>8G zRiFy~pVB=i>6^G8i>2rd`W9Lx`ZhER^j$6cJ&p8w2I>0-q^3qHK*ypV&~@m~;l7OP z4P4*CZ^t7g6MJOB=^H$<=xvNCMpS;klS11Yp9$?#BiejUv|ky~7ILEf)`)g1C)#I5 zv_+teP!;hyfwM;5K+L~9w*S~<~vX+--VC))3fXg|t{_ID%Ny_{(OGNRqj zhc0XjLQHhdI&i8PPt*e*u~Q%Q^r6 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/EntityTopicOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/EntityTopicOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..4e5685c490c82c8e8900645e0dd6dc617ff08c05 GIT binary patch literal 7653 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaBrokerConfigurationBuilderTest$IsEquivalent.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaBrokerConfigurationBuilderTest$IsEquivalent.class new file mode 100644 index 0000000000000000000000000000000000000000..19b35706801f60090009cbc1dfaa6e4d7cd460b2 GIT binary patch literal 6426 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterMigrationTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterMigrationTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c774cb898212a02044a416c819c38f64a73566e3 GIT binary patch literal 6583 zcmeHL-E!MR6h3mA$ad2vq(9J<7STeR6l(KRp!65VQ5qA)_Q;7Dt}=?ecD9kVp4BSQ zz7&_tzzp2;3_Jx7z;Jfuv=)&okx7_bXV30Ad;a+Qm)`*3F|6y5)1Ve` zw=75?%FmrWr%YKn5S;d3(lQ$m?g+-qt``P^@N%DZh*w^7y1Py_`m|1a2%*g1Kmr}k zXfUf-Jjd^q8{5x`D>TTrO}kZV)LR-{vXpe2@BoF%7Gt~N;GqT=TB{Y?T;4M4?X9NW zXxElaTZ5}sYscZFWBPlPGrv!K(d2B8b_hqALcOwXwwjfysllA}dfFDM@AnXJuFCvC zIKF5*UP$tAPJ`+Gi@UzlC&9pRi3WPr+H7r@b{=LmDB{>~rKq!QHmzEHt7;he3u|-y4h%0TT6Ch4b6Zu zk#rqx*<{Q^z?|aUio?!Eupwkt4OScV4ZC4kis$l(RBYg4G%z&!R&}*fe}Xp)2BYkLpz_>6F-gUM)b?+OlM8ICV6kBE4LvRD`mKnd111T!2%ycm!;R0gnw5jEB@!b6XVi2<&FlAtthcJ2F=1 zJ%>{V15mLLkG^9CqWz77vniFyFiP|N2%n-v410t+V5a1fAh4N-QT1T7i@fl);glLO z+Zc--ITK@W#ez-nthv;qQCg63+ALFMw5EjBI+Y-xJ(Vw}P`3zPAqknlaet3{UV;j- zOJZCSoFW(Vtp9>N^}_ue_us+b)C&(j#j<$T@WB_oI*wW(dPSzNo$ocAVs(d3)5i0A{J^E4pvlT zePG7IA^fd*^VkrkJ)RB=n-d0FCYmvDIxV|AxX zdtp?6YWS~8QCK&!LtoH7so`Z6P}H&_-})*gL8YcFY4eA9_)N=9WT|JIo>I~|s?&P{ zPpJlXq+_8w3C=w4&CZpFFEm(wv)8C1SgO-tMNUrJ#JW@v^IqlVG3Smtc*(?pH{<7_ z5{ezh=}W?6bhi&KZVa;6Vj*|Q3YEwDy2>7t%Dk%bro&@d5S6819iC#XHI{7ZfMwF? zr7fQdI#jX5s}S+ZuMSw4oEsg8G6Wr-X>dNCB#wtER|KP9q#c}TXu64|~w9GiA6 sk?sB=*&ZjdeSJu_ZUS2l9^fwK;2~Jp&Y@2}f+z3|EWt9Yz$$$E4{wViUH||9 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterOAuthValidationTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterOAuthValidationTest.class new file mode 100644 index 0000000000000000000000000000000000000000..5c78acfa36a8c583c338a7940a32f29b4efc2177 GIT binary patch literal 11181 zcmeHN>uwWQ5S|k*j$K+PmtN>?p-=(^n^JlsY1$AB1RN*WA*kX9TGl7=A?rQv*|XtN z^;ch@&(JUgsk{liOwTYkzKBAEmg&F17CAh>Bts$E7$F%6?;0m zG&dFK_M+{ImaT>K77(TYI~nW?v0U3*uFT!N#~saJbg|lK&dk-D3=Y*oj76?|WUADp zTnW143=TA}PBp5R?o{iGcjg;&i!+z14F<2(nr&P0R@GY-N_rjc>3JnrMT;xsd2Zoq zqguUFpSx5=yjGbI$uyY#k z72rh%dpGp1Dkaq@9AF1--}DssrMt>omLoe|;f9N~x=P-4dB?wCm5K{(Zne1M8bz(H z?X1|#+&U^`xo6DsnlZ~gW0pf>9<^GM`<5rQ)v>kHwlw1K2VJyS90y%gHZCd~^~&j} zkv^i+l}cM1*?ZDM> z>asP9r>wbyRF>_TV;};KL6(Z~lQTuLIH@_AZ=#KTf~QnWJYWgx_}cMcO`+(Wx+zpN zPN|rUdpoIW0(~%eOvV>|g?n5HC$z31H$PKY`e;qc#2hA^FpGp4G=)8fM2h8NAY4qE zDZ=`6UBD1eq+hj_urULciV0RL71uVB3BN>~Xdm^--MWp^*t0Eu&7Xd+ropW`7!0Li zgX5lbge#&#V2~t=mkk5a0UnR4Y(cyQdnWiKE|UrpV!d&e1k_TI!pdgzKF?(gxIP{t zShgTJWx=7OY;e_Xn|H8ecAI$koBA&)E@A<1beBpz3Ipjnf9SZhU(68ZDU_%PfKq}EC<-jVYk)P_9i9GlN)LaCzR=#IvnG_W!b*Zm0oBo zdEXzKcJb%LjJIm~$_92`fpU2Dfy29I0h6aKtfxl6jr8xGTY0FJB;X3v2IJi zPw~ibee0F)(0|W%d~P9>honObJQWL+U>_XX1JA=tI2IhMZH(WVIE3_;$IW#YHUQ)AHpbL|pQfR3N6 znY+k)F*ET*jVhvXU^xnJG4^GKDP)Ekj}noR^1@WQ$y!s`b4a9EvK7UBx@K%960BBY zaMlc6AFCd23EiIYw35D=(qcg}i?ig8?asTl@Nin)2(Y*Ba4au`FECoC%*Zt?y)Zam zsKs{?I`$Z2DuZL=Tq)-6vj7p9PspCl4QtWzKkcLOQNy}tjfp(-=g}yfU^{=?UT-AC zR=mcif<47a38=#^9A{C(F1+`wDo0P6)NLnS56_w$?P=b5b0}}vg{Ka28656A-yWHy zB?BFvb)#^Kv61aP=AOk?kims@BW*mwHkP_}f5peFj!%p6F=>0=4t&hwt-hqs;Jr5_eKMH3V)He67d0?HrqF^vaXfP{$9}D!*a5KIi zaCK7&+N8aeHO68DLjp2wM7vF*jpszWN1{#S zL|Y}%KFx{t4T(0H6YX0P?X#R{-w|j#;B(AUBQUj|wJzfC8~A@8=Go5y* F{{r15Y?uH5 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterPodSetTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterPodSetTest.class new file mode 100644 index 0000000000000000000000000000000000000000..7178e86b7e8ae3ae58ab40678e8411ae75bbd22c GIT binary patch literal 7204 zcmeHL-E!MR6h50a@lVq>q<{1e)KDO$)E=NfX-dIyoHj&>jg`7^)!E3KcpFKpS*5zIJ(RLP^%MO8awprR?GU6hr+Cpr^;S7N@&cj-}G54gg z+cy-GCkc%ETekx0vnZr4BT%T@kDQf8y9g5m$~f0|lfdX=ZGN$a5{bcx zHri@7ZFFJGwt1wqeuu9IRK*g3&X~b_iEv8@Z{|Kqj4aj(oJt1!(ZbQOdpzLkK7nJ? zH#!84*D<68xJuykjt>nfg)G9GWa6Jkfn<^JHd)tlg&%T{Dh!?6c?5LHdeN`vC{XiVzzP0>IxQFfl!uDmD{rv;;?5SZrUIYCPzgl zM@5@g$wp1=;eIHjvQT`Du1fCSv0NHxRjbU}cIZg*C`zw-hV(ztA-;|yNq!WiL(k8n z49Uz8A=k5#$Xs)=;@&GII7DEMMA9plmm3!+4nr)MqQ_JQSl31=S!pR@QA=%wtXyhQ zNj;BwPRtd{kX`UYkGou1QH*symX}yA%h<(w-%4ut=^GZ0tT^bhH6CD1xP~+MOk+{8U><;t{N?A0}MPvdz09h^#mi`%*4T|d4;t_t1X`Yu$2X+V<8XVIlya*v! znT@%JtxJaJi!{_ydd3B)8n^ba&jR+>5?&-7=Rre_O9n2zZ zLx$70M8gyf<&w5KWnwVjjj6ih%8*;eE=!9YoJnnl+3IqSCk@vAb|q1}-VM^u4IUoOD`pWM(Ys!J4C7^Y{M{K=GXvZ=Mq!2OBF@p zVU4fHNS$D-?kIZ5NxYLzdAD%;#MkMP;oQp+&3Qv*+gpY!aBUne!W1$`)B7nNO`n{$ z@y=O}{Z%Gc^g*P#AmLK4(?6K{gU3~mM+6?)FNW$u8mFu<-U<1IOjSD$6!+NzGF1^r zGisXaFx!t>PuYWkpDDsk0`}p&j;3`67ahK_1TGnC@O+nIgUMa_N8m!rBpyI$*;zeP z$IDyz{5k7xyEAF;-BWaUbTgsRJ|xh}HhwQamIKC;1s|`BR_u8Wb0t$~pz&+(@Vpd$ zy;+1$2wcmwguoT;WE#e-P(9o`Jw2CHHG8Fy+1s_aC9tm9A~2;#&Haksb`rJ6T=kF$ zbuf-L_c`*O*VBa>eyFwv#Ej>Su*ZDlTD|_gN#Lqp-Nrw>!jX@|h{TesE!>|Ell<@5~Y9aVr{spdlJNd?sVEty~-@^Z6W@Z$wPhTzSIr;-H-NO3YwRS_I^&ZA5zh7 z?c@Enkv~(>KFx{tcPiSQd}t#lQqexkiFQ5}?QTxAo2h6sInicQ(eC9$`z96b^PFfh w743dbwC_^UzQ~F8eG1w!_!7^c5vcutCe7me*Z4Pq=Vl!m@BkKI5tg9&A4{NBIsgCw literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.class new file mode 100644 index 0000000000000000000000000000000000000000..bc68670df0809706b9aa837c587770277463c945 GIT binary patch literal 18364 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterWithKRaftTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterWithKRaftTest.class new file mode 100644 index 0000000000000000000000000000000000000000..54ef21efb9926a1e2a7e5197d05333d3a4335f2b GIT binary patch literal 7133 zcmeHLTXP#V6h3m(ICj%Eq&M0?*aql@wl5#C>(m`)n8_$>#Zj|f8Lc)n z49~pr!aMK$17?6}-+AJ9@FO}L$#!E;HnrJ?P6zU0S=vvZj*gCwr0zdizhTTo3x zf~ejj>Qw551=}GoQ>?91$r`r5$))gH%vV(@HhF_d?2{_zN_MT9%i9E|i`&E2(0sp% zfWvv=2a5WtPQ8##z+nQDt*t9QZLy$DU53?s@m_7&c2+di1WXY~BcMB70tc6Ji%U5I z$&S@Xd9-rBjBv+Zv>m&wN1iHHzVVrK*cy|}cNv1Fs+CG{C0{8oJC$M)=Z^h43}tj+ zRR|A3Ck^+?PUxWyvbZU8>SqIUBk>%NcV`(AoxX4sFAmpnp*Yz_-yb9@BM4JB7w zdk+p3_eNrU$${Gk?2Dhx2&?%2f%IQ}BbLHa!lIViYO{2zAF8j`_b?WNh(77mt~cZe zbpHr7b4%U}kg;_Lk-^M|+{3H;5a`|+R@JWze7N{3?@`{W;Zp|hv7=dWhvB83yTqYOD>q-a>7kqZLeG%xre)HS9e5SZuw<@Ui{ z6=6cZ%i|{9fn76Xi~;OuaXHd1e}Oyf`SwW~X5r0An1Q!YH@dJ>;L%#g(IWR*Ic%*m zxvW#ER)T~}y?Qsbb{ogkIu8ge757Z*LIvlz)-ZH*2RXk{Q&fck!$D@85R*WQ6;QMa zINFrcDuvm7_;tLfkMkQ7aD~9xXDcx%#1Ocm2k9L^y^IxT*{$HCBHXHxMs?qcUE#k+vte2O4&S#$Sza*c+bEeeeo zIc1?R+Z6n+y&hg8P@yz7n;BzRFLLHJuywlIswl>xtfD}LjdQxusG=pNXoD)+)jLs# z zRSLhPs8pp#WS5i}FG(d>_zf%Z4i!XkQSyUWDk@4LZ_%K%Lbi5DB`JEy)b<+Zfm}y| z92~P?#;^n=YL^n0VF@u*bed?)VQw&1k4Ty~ws4X57R zSaTcA>Z0RXFkADsiJ&bf+GT=AA&u0U;Jd6v1-8l8%d3vJR<1Y}oT}}2>tXm&8v!RO zJd%n;s!4*FPQnQbroz4J5ecd65T9bUQhVU7JMM<2nuHk(3JB;9*Mjkt^3qD#f?N_c zQcgD>))DSHOOET*bMHow&myrtVqr()_ii1;;ALmxI@le}B-95L`^cWozcg2a%wX2fMUo`#kKh zfGC`6yCe8!Ktp-UF67s@sokP}peNVHsn{WHYR@rV>@Iz=xAevCToldH&)F?br5$l) zheY|?wn85IxPz-B+^}NQoA>xBjock zOWln!#2OtT+0iUL^%TDlJA{k&pk*}IU94E}90P|K#)|-{hMj=X^S~Gik?Bi*B(9AEzy>!T%%K==3H8GUmYATz81LVNM*A*4Ya8cZ+D94y@;;tDIDu!#BYO;>2dEj_=iC_fPR3V=he+M>5_C^{!Tu?(z zs)@WOGY15b!X9D_|7Fck)%#RRmj@^>pOk&c?%$tu7xir{eCpD#VkW5mE|9~GWR-L> z_zU?jV*E^CYA>U*|L6?~GgGWZ{Q$bB;R<<|;vM9(fF=5U@U$4ZVY(c0r)XHURhE*q z&9~P8YLDX8njzVrb$R+!WrWbbf}>u#sZ%qcj}&&eeL2)AKRRLQSN7pjX+5f<2rljmK+YLGT?aJSuh>zM~dg%PiMC&f_!> zx?~z#joRq3m=P6p-sLeS7MwRkytT-rh&$RxT8LY1s<7&Kw+c5O=FaI{5(c_%TdWgS$A~)a{&u&(KITMfx_$0lIdlO*U;&=AdH1$@DqM0os2T4t!8@ za6jdSCRaR~d#emz)Tpfmri9CYwjR2%1-J;~FoFLrLJlTPn#WR{XZ$|~Q&@hoFF%d> zm*JGborW_eJqxdx^c4k3oqRCGo*DSn>zpr8K4eZszwD1dD`tp?h6U_aNxiNSP ze?*`*1|Io0)7kMr2#gWcz4DHj>Hq@rZ2SWwL!TBHQ;FY-4Z} a&(aut3d@+z;2m%a?!Z0x92Q^^mi_?_R?x%% literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConfigurationTests.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConfigurationTests.class new file mode 100644 index 0000000000000000000000000000000000000000..7bac753a63ba06792dddcd5260e03754c84db92b GIT binary patch literal 7102 zcmeHLZF3tn5MHGrwy(}h1EqzwR1GglN@@e;Ep?$2I)QO<6Q)Ts(@%_YmJ>C1C(lWj z6#fuDff<;g-{C(otWKBYf;IIyaXVqi2cJ);-AB9H7wziLzkmA!0KS5|B^V*_or?Xs z=1SL}vRzgevaWP2!k+ z^;u+=+T?U!p;JUDX$eqb>R0v@a-LUV`AR7=XJ{;A8oN;B*R z!WWvV1Y-alEkf5xe2fKZ-Fj}G3PqEs%{wAO@95wRzOy9IdFmQ{h>>GvkczU%xRV9W zL3)*ZMD&p?Pin&MF&aQQc)ZFQMseh_VqQ_Jje|c=R0t^*>_}GVgE}z7BaWNqi$K_j z?~NZT^Dc`8!(1@Xw(dKJ+0s68o9q&Dy)E06DaB*GBGdFVXSZn~^N@MkiDj7P5aUy{ zSKTygV(@n`H5$=Px(S6+#%d{x1stX&dxhwu?7$4C)kxMeU4~kqcAtl6umQZOC0`Ju zhps#TVvm2GR@Ki0RYjuzB&L7qsp(8OS1J6zHtT;T-JGW2c$7q1gnap#&%36h>T@hF zrG*F5xl6wR(Q=6xD=f`Kr0kKHl{Ai8*VHO6Dr-CsJeaIP38n~KoNFDnau&H^TD{2@ zR>dnxxXI&nQ?U`4Zb_d78(9UHeH_)>LJ?@ThSaEH&w0UCZaG&au;`F7C%3JX8@VqB znv~%(A*%%%Q_IoEwr3@I+Jg~zD~Wa@xffY0HPwpLOHo?E5xA1Mcr)4+N}%s7nPxg| z4A503TKRLSQHE;-o)@rBo~w_QaxwF2x&Q*>M;0P5TgYMOH_C8>kedb6AD(*-+%^o% z@DlqBOiVJ-tDSEo_V>yZ=w*11z+VM+@FWhDOGf`{C5PXkV2I>YY(}~avjp^TH7wTJ z5UA|MxX0_*B%@du#Y-D35N&)U_~B9@l*X+|PbG|YGu6~QL^izOQ_8Y=ZJA&au!HlP zQU;twc2w;m)t-#o*#g319Nb4%Q^mD0{9+L--1>||xfi~+zd%pnM2M)AbPPDlKXfD}qJJIHkiMHrOyLn8sdrq_u3!u5YV%dqd za7?rZPPALcL|b*D)sBg_?nJ8>Ky!J>6DQh71<+hp_|b{>aRIbX9I?=Lpq;~vW%AQ! T2btq@95?V+#!U7F{uciMAsb=K literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.class new file mode 100644 index 0000000000000000000000000000000000000000..fc4a9338d6d57fb4140028e5521e84dc91d729dd GIT binary patch literal 9297 zcmeHMZEqVz5T140_$BEJDSb-|-If9=ZEao(lqLjH$8FO(FW9aT2&vkfH}*Dnx7WSB z(14Km%CA7;BYyx1B=`>hgP(zzJ=^3`U+S}!s-(>a+jqCmK07xvyEC5o^PgXT2Y`=Z zDGezCC0|(u&3#>Xz}8to$bzqxaJ~@*>2bxhR0Ycpe9cwCkqvGa?y}W2R+O&GEqx;p zcB6)q)3Bewk&wY=ZnLno@&JbkWa_0#b$)5FO5j*IoLT3}7t$@1rCbZVDFR2Uw`VJ* zx%;KX`u*j~Qhk1|R3UJ>Tx~JM8zpyLDCs)f)yqn*iw0LXC*2W=z<7Cc(JBh=HgWhM zisx(Q>N>Lno`Hh|a?ZvTt1UEvtjiqkd(6VIBLoiMnCqj2515)&TC6flFUn$zTWfyc z;M{WeDRQ5PfIb(xwFw(-@KqMrdR8@&Y@}QkzQzgJs%W}Q2Z|Gz2p>-O$~=R>k!j%y zJwssM=Qhd=VrqEQ}n zoV;r&tqNR?bB(TvQQtWBziMx2m zJtRDL0xj%*ihqVcsha(y+YOLqrkHJWyBY}1V_t}ANg34}9?xax9nTh)(9{nwgTUZ~ zu~-EbW)ifW7EE5G!l!|Y@lv=LQC4xJ6FZ~mJYB%N!;Bz`GS`HlHgSY9myKo>eI$!Q zP1bS`eaDZPlgnx7c_?Jvrsfe9RQk4fr;KC5op;Cn!-)CYC^L;1jEVc-}v2&-x00+qn56!`8pkr_n&S4E}vbVTos!4~-m_#oI&I(sG zh6N&1Ig=K%>r4rA-+8!Sw*(fiZk2bWDu_j`QBxthsiad>4Xo-_0`wDyV{{R|z-4Dm z=_gDXaMeTQs41s1@D@qkNl@mB&g$cV(P%dSG+B<8=$J|b+8t+ERGGUVGsN<%aYn2O zi$>^jZ7utyNBGwz16K(7@r87@-4l`soY`u@ZXEC0@NGi=dLeB%$bqq&?0sshz3;i= zVZawn_a+1HkyL5V*nOf{cZc+W4dOouDR+~b9Wrh<$30tam`-B`J|LiX*0++S$OO)A z6~(j|WuTV>zg6Xy;walk1jvVHER~7yDFLs%gz=;q=u|2m8_HF~YRFAtQr(FjNozPU>|2`5xT~tLxILAI685dT zPM(Ha*rE>SZ|z*CVIF(5rdpYXy97>cTdqpO!j{%}I{_pxwjg{T`_(n9!uW6wuJ;3hohr-oq{pEKNPt?jQ20$$KZ~3eqV-Th(8|UPaql<1*h

x0*#3@X zyFMHniT9AHA=xg($~HYD+gGt{9}mg)eJtC|kZeE4vVAffTWU0x?b9LIF2%6zgIV0? ZDY)_9zAxhaB7Vm3jGBX+a2xJG`CruLbIJe! literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..3feea9d7c64035b32f901655560b6cd6d6e44084 GIT binary patch literal 2620 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 a18o~z#<)^~$$N2T3a_W5m{WoVy#F`;gRH#( literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.class new file mode 100644 index 0000000000000000000000000000000000000000..11978de03150a3cdd6c97e34244b41828d682619 GIT binary patch literal 8334 zcmeHMYkM0<6+SB`Sy^$D+G!Hnl&}dDoQowc0ZN<}jIA_I))yp4rG*m4tC6(P?vB`t zV~0ECQto#O`~rRfJP$k%eCIdtfiL_B_yD{!vyxYMeL-B>g7ZAl>YO?A&N*k!8ST9O z{a=6mTOxXfer{61pt&e?Dlw1Z%6+!MDz2zRap?LF-HPb(ki{abI9?LPJgoSl$-T-Q z*6OnAW>19Btzn``M+|yY&GuN(uB@!z=T2M@5KG-YpN*5OmohQTBAB8XxZ#0};pyhz6l zIwHL{$V}ZV(g}mcT0$6940+FU9Tpj6ERG@QF@uh}K5Jv*V+Nh{w`P=d-D4W#c!x7D z?ksSRZAtr0ET~m$uFpjhOXYbeeGZ45XntuK{ub$+L8VkRL)O@LS)CgGO-9xnIE;6SWhOT?zRIKCm|AYMe1(s%t}V1b3gm6ocU0Q zKH7xBu46M1JBIA^t1{~j^r!7Qvh4AO@DiVI+vw@GXy1-RfV|m@f#(JsiniXB64n|F zpXF(BtfU2$+7;<4(%ETCq{B)fZQm>js^+RdF@+P{kIao5&=XUB0My z?cD}VV%PdB=5Hs>izMigJ2Hl>0|SIqki& zIwCGwO~E585V7U6*y&iPcncBZRLJ7s;3>}G~*K6Q@^VC)F^<}iz)ove8U6Er@8c*+qOY+K{ zW1thc!9theZ5_!xNK$Zn+!ZR_lY_wMJLWz}^6DV3x}s@C>P{Jp0P9a{N3UA?dC77k zD+!vsh3jO~YKc(Y6{IuP4xRx?d7}rAUa9xVUA5QYKDZa}VCFe@_J8jJL%02XpkEKR z2Wo}`8D;4RNp;=D?^3jD2DaNVJ8xHW-Evvey_P7A|1+umkF?)w?!bZe?7wSNqC2!Y zLAU55ps%JgOq_OORx&XsZJch)iNDUnHF;c1YEwAOYoy0_syq^RT#!Wb_P@-?O8Uy_ zaHqTSAmCw*w|K|{$st+O_ONQ!zQrQ^*03gv8JsQB3kF@-n;HT$gb3O^23Msh9Z

    Ut&1RsBNwTf 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ConnectorsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ConnectorsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..2e3fe30301d598fb875aad63b1643ce2ffd4a152 GIT binary patch literal 11758 zcmeI2-Etc>6o8LR8apO!`cG*o-IM|@v~~%hFr+Pn{4kx`O&gmQE|py+QM=ytNZOL} zH^XCa#Vx}NFat9%!zJAC2s{AKP&nFku-#R%wi2ea^^NVdjy@gfXpf|G^xK0Ue+Gcd z@O~b01eT<5D~d@~xkK;K3J)t%3EupSSHcz(RE47A`jJ#jRGOj3{K_@DdY9I?5TU5i zyG%^Yg+ahv6qF6by<{$hQPrFg8+f)STxujvl z9Ths%QTJP{ICiz!^0~{EBO`RC=yA}=iAeiOC-IA=vksR|6nNYJp@H@*3AhVc98273hE6FbI;i{y5%)dao0JFY?s}@3xnvcoqeFaTgk;(3 zUxgZN8M;{<+vUr;m z#@3tnjNu#_``=}`fB!ptv#mA=8B?*#@g)oAQ~3f9*Y@Gs-oGbGx$lg3EG2KbNLyAL zRJ)xYDF!_dJX$Bz$ICwy=>)`jj$PSjq9<?4J*mlI>8&lRWjOgqyPMwm z60<7-SORfAI5~+ls90mFeXhZ*K%F+(tZZl4+kY3}3>i5!+%&Y)_}%HYVIJV&Wa2PZ zuz5>m$LYt%Dpt@wSG7F{-pwh%s|4n^_Zso-m(24Lfk}Os>7Z|OwO+%FHE;Q>9%tb2 zoOZNVW-0LR*TW{BFOT&W+@O(Ubv)i-(aGK-&7F-@hPY#-cybWtn#%8?MFCI z*LLBJFqupbU7$*Oq#F$*g*{&<@S$Br&1kokKnGW$;mbsY=>b)^;Zu(G7_?g56|^~c zwIv#l)BJ!+#;s`!`Ens}#r-&6OrV&|-$kw?A!ky%r_P*jpgrR&TsmO#@U0MxYV5&` zbc7etE)h78!sG$(t99LxOR~5G#%o+koG%Sb^Glcnywrv_^>T0=_P{7U<>RLUJ{RFx z{Cybz8;8C4xeuSFQJUa)@h6!0uv^Oki(?;5qC2i42 sd()EU8fnv(w6Be{w=8Mj8fh0TX@3}KId~g=cMjfx_hMh3gBiH|54B{L{{R30 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerClusterTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerClusterTest.class new file mode 100644 index 0000000000000000000000000000000000000000..18e1ad33e1b2e2eb64e0f6b53d8dda7e4cbb0352 GIT binary patch literal 12916 zcmeI2`Ewjc702Jmwss}o_noX2AhJP{ZG6hcLC4x&dv%~)$v8kvYqlkgHOFQSSxQK_ zNeBc;2xnD*kc4oAD*;kK6;$yfKZYubU-$#~5q>Adw|i!#m9|$$mjdNNKgct0`t_%~ z-+SHL{n~$i>vw-3qW94oDQYn2df=NKArHci+iZ$;SYAgE`j+#E)!~)7&qB}dFzqM^ zx!>ViG?_-nP?}&0l4E(*xci}LCD;2gxL{K(`JL#i=i5nO2(9? zZ3ZveKuGQ8%Nze25og_+N9KJvlz44;b_YYdYo&4=cZ{t z2J&bNbD?Fobhg~_oKY6GJcgcB6#M$o=QJHMs5$x6W;z(kY`H-j^XT@NHQvXBVYc0N zru&jsb=n;bsmG~HoY+?UebefJDL~}~Q?ln|{4)f_U0)m&6kgD=J_4ifA z)$Ms9!jzQ@+@C@yrK!W9?IH8WdDu270<`n|@$)AQ+E*E0Z4H!e54^}X`Mesbao>x| zxl)==!xiwjl-sNlJmy9YVv92e0g|#@#83&oJa14#`!R!dd1GS%4|_bvvBI1Sk4!Ne zQS=f*YzG^Kj|SWVcT1OI-tzx?ZObK77 zDbY_~HiW59j;-)R; zeg+eK5>qhKVtMV!+SFcIo7$6k+%DIqmQ2axLB{pMjKe~6B7^ynsl?nI2P@mk|N96@Cdo45b4}A)v(lm~*jj|F zMabg6asRgwB6kl_XxU3GA$Nn~+%D+9KN`;;U#ii&L8TCt%h(78H<<6@{23_5lnK2I z%Y-v!-rO|Ed}iC+E<{$ym(Z1a_2kUF0#$J)A4Y(xy3*WK_h`LD3k7++z6+Ib8j6qA zOZ46H6bi7{s*QWGZp0!`?h+cTs=}g*Pp#r$PRW5brlDO>RM=u`4+<&a+$7r zd#I~7>eVA%n{tp?z#+TdVh~5zoc$K&2C8!ob#@4*$^8Uyf<$h5_mdKlUCbLJ9NJ~Dh4<{_7ZTj-7m`g=o zWtT`&%**{DC5WWxP~?V|!*fWA1{QkNCDITwiGogS$ya_@go!Ss=|ct`Sv=)}j0;R) zPH=OwwzVy-Rq04!lP#5mN}i2!8!hfv8807aFPjS1xXVJB?s}k}-o;wu*M7MKgY2m^ zUEntIh@M~RLaOy>(qLQswru1MWDK)ORuWleI9BA}0Lfdh9{ioWUd+d(7eqg{3&-@v z`B0f!MxBk~+hrtWdwiq{cM2&NX9%w{w`5~Okm$^|vPbA#;jYNC^Il}0y%~|;H4CQC9BdO#pEwy)m!W&|^qE-q-um1@ zn^~?wn}kM@J7tkh$7GWge5CUSxo>%}qO?$A=PT6(a%SX2Vtz2P?RX?G%mG1I_*weI zLvFfWVYep?c2E>2Z7oD3{zN;GZ-q11M}&MDrjzX@b!rNw7l!~vt`I5jn)1D(!9lOo zYXyEJSLg1iglI$_x2h{jg*dt@!yoi;XEB2;vZ#gzWlkH`*dpZFr5_)v!xk(0D91Nx z$#`RgNh%Wa^0Tx?yp;Ee;lf|spN-u61i4PBV4*)4#y+7nQ08tCv(>>B#!L}DloR2M zD5?#85#gvWuMP%86p0UArio2;(VOH5nX@aXIK;=W9iPys*<)Lnh;djMbZG@`4hP&9 zw^ChhX^;iM9ZxI!oY@4@L6^dJEY`<6j6%e_o9%avsjzf`sWEA~rG#bx`Y zrsjOBEMnH0nk)574Pd2ysRvlfFE#a~U*rX?+L2=QD&Ru2H0u~y<9Pj$k&442$_C2p z;fTu#f~7z%*vSR}dkCQrubs)MDOn@uYxH}GjO($2TzM{AVxN>*xDQOOi;9@|^4>*k zr52u;@zc5icV?0JF__)P$n)`q6nz)Br13(9twoAnz`awvAf@Oaiv zC`GRrw0Ggxq@OAJ5ui1N$>JpL(^B*kg+|4HvBppF%OM%_@4HjTn@M!X%M6s7UpK~2<*(v5g; zpiPjsRLNT*Z^vJyd?(&_Rh93Cythi;2l+sid=TPhIlaO+E72OIi86oIJ14RmkU1H%Hg-?{!G0;04@=Q}gdBe{)Cw8#MSw zNDWlLzm2kF0~PVUDb}K48i8cc4GT@X>(Lt2D`KEYJEiPfs7ZTPNsBaTFDhwMnzUDyv^$!#KPhR`nzX+tX)~I% ze<*2>Xwv?rq&=!fTi2+heN2Lsib{bkG5f>lJ*r%TC0-wj3zCsq&=%i zn^e-is!3Dtd!N&!J*Vv3*EDHwDrsNWqcxsT(!QZdGnKS&YSN|^v~~0?nGg8(Y@XtI i$iKng0pv5jL*JwC(@XRN`XT+8UZtPWFX%P;)qen4koY_R literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaPoolTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaPoolTest.class new file mode 100644 index 0000000000000000000000000000000000000000..f2068f892e923899d9a725c15c2e2cf384433854 GIT binary patch literal 8954 zcmeHM+j1L45bZIJWeYnA4hc>I$zTZBkVsqtgj`EFN?|NZE=h5Ur_^XQk|x>RQO(Yp zghyWa3aa=As-OyZ=2!R!ik^|;NbxGWSs5o4^s?78r+Y3teYX3re}4TP0ItD}3``NY z7APmLd7$(6*bd7JnGduQ-uEIeyIe6XRo-#KKy#J%WRtu34c5BPwxo3H*eCuOYYJzCvJOP5OamzTReT$Y)`Wz`XbHg3ml2 zbeY2m9IJg@s1|SDEta?MZdEJW>o<#40;fy04pY2Y^ml}kzQ=vNrR0uia)qq(Yo*(@ zda-)fn4g8i1hPol_n*L_jl!*s0)b4)b^;q5soW_eyjr|ftQO10+oPq*cRp8D-r|b; z4oA@RR;5xxY_C-rN5OO-U(8$;zR=eRyt1;ojkq;@m4TB8eca=sQc}&rX|j0nwy$^~ z-5uVfj`X_1Wm-s|c9m?n+zT$#>|DLWX_Gsy=_18(xX;?0E(@9KPfG65q~!XY%GpU- zrcKEM>Pt;MrkxJe$ip9WaV`dVaH?}=s&mG@Ts&*fAK`VS(iGt>)==ZEQw>fZ zb?C)H_6IA0pA)2bSw=~!c3fBNvJbUz4<4AnyO#vA?sZ+^2u*_!0|@SPxX-K5!9YTL z(P3qkihzcGledJA+fxhQ;57?fJ&4ZHO$6`XhOqnS!#Jae(!}9GP?au5=e<$0w?ucC5)2gp#!!sSBVoOjYh)@%}!2`9_I)|-VO5N)gBVyJ68YFzNU{*Rx3(~!+)`fSEo zEW=+>+=!&y(Tu?KxbDcNQH$l!b*%u8+LMijG>eYzt~s+llkT`9X69MHh{x`VV5NcU zo-;opevI;Upu4HsALs%YaMn*VG5gp))nM(T{pa2PiTyMiL*zFUsL)#WV0G^E{ELc`>Pm2mRo8+63C?{|L##61+7J$Kect z<12eJX(sPO^oYNcfjBm@>6lvSpp{vsERe!P&pj)SfXh~ zCn{z0qMx`Me4edY=q+JI@~(`mBihzPGw_+I5}OKl2EIV0YcI`OHNDNimjn(EE0heN zAU-*=zL0@yL-q0A4De@C+A(y@`HNVa@Rwt6JnM=9BUjAZ*bCEL#tY*X+FuGcB}6t3fW9#{B9_#7_5 HWw`n;i+M}P literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaSpecCheckerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaSpecCheckerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..8c409483b93905f03956619889d7c88acccf82b8 GIT binary patch literal 10045 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaVersionTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaVersionTest.class new file mode 100644 index 0000000000000000000000000000000000000000..4f8adf4c41d3854fc6869cddd5319d377f6d95e4 GIT binary patch literal 12043 zcmeHNTXWk)6h51V`qK15+VozkCQw{RY%b-}rVVu+hnhG|Cw9WXOJ`$mZMCu_q*Z!h z_+8Av47~F<_zAr6(BZ5lJ8O4S$+j9o$U~f2`|Nivd-mw;r~TvQFTVl6ZCFmg7=b&k zQ_FGY^4w#(MRU59bGf6pUg$Z?W)9_+ldBn?%bAmFS#@UQmg%D>bb~prZkbh_mw<5s zC)$$@YBqAKn~zzI6S%aTUs}#T+$gS9N~`xP4>$7V(&EFlVr6xGtxzN|S>B#gL6v4> zp1{$9WxAZ2e1jSuOG1i3=7~@^x8-YebG^g4Eo$iX>~q>O2wdq?d4F}WxRhTnSG#JH zFhO9p7os20L^mH%&)@;-Odo3X+YW3+!aYtP`+8jdv;*u0$kTnui|Y@{r9!@1lz}G+ z%)K7C?%9T3qqv9x?%`Xysq+N_hceeT2#gm{aRSZ|IKCb7qT^Uj63&sStLvu2T+7&E zb**N#Y~7$7*H*I~YtvvY_okLkRhvw!vzkF26tZdU32iWKTDP)6vSd5Sk`0n2+fJ5g zt!^<_GcB&QD6cg&jyUX@jR_*-UF_f9=&B-4%fEDwHh^rs!gVK9D3uD zfyH5}2N5%MD-xW?bt5)G%V~sR{TD5)bDO18rIy$>I@eqe zD;=gjRvyQzVa3z@8kV`H>8|FPSPpa(^Ysz_5|jp6I;*WnNe zPIb~iJfC(H_p@LCL*f(l%TkN+rd8Jr=DO7;H8Z-&6&WW=rZ82L)eFbcDft_Pn>|_@ zxHR|>A5M`d|ADpCb(zDfO~-obW(o!lZ{7D=o6K3V9IWxhXEkPv$H&5~hWlr3LHqHi z!JJZ}DZGA>+v#DK>h)?Dwqhta$7Zu&7sds1YeHxrtT8BTOO5r zN5=eggK>FRxIX00XBu2F1-`gAn zPIYg9NNsEqJ|XZ|yj_K~@Ozgf!&^kAwdh~r5v^AeJ|pnwZU&;C6dRh9>IZs#Ge_WL z3$HEdw!tL#37i+Vdhq5>@dpo&qW(Rqm6Zp6Y;F*8G~U>R^nyJH0NlBIjprh8MiDPR zShondw9CPgqbZEo+f3PZ@Pa%mTThwe2k$FFX8u3H8~OlE;B1h8K?v{ZjbE+^n9^Z*{XE0*Wf*pe=IxT*eq)V^yd7`sla+E>Qr6Yw>G!#?YkfKt!R zR=-0aFtMV$f;y_=tsEDw0N%623$^2L9^Qh(I7;AX43aobOXDLrJ}Qlm;rN6!ejAS9 z+>>w$Kc^7kI-(N%pZ*n2e>ZvdXE^_R8}|}^3N3)z-oeiaUkWaRh9f|GrX_?i{KiL^ zQ6OAaAP{&DZ5V^AI8*3(AOF86rwi4}j1hfSOnx{m&69Fx+ eKzpG;I|K#HxiMJmW?T`+-{4;o^KllI;NCyfeUg&^ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ListenersUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ListenersUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..9645ed4df727d3bd18c286d94df802757ad593f2 GIT binary patch literal 9554 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 HB9#6Hbm>T= literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/MockSharedEnvironmentProvider.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/MockSharedEnvironmentProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..1fb3e0a117578b97e0910a1d716971f87bc285fd GIT binary patch literal 4487 zcmds4U2hvj6up}!UE7!@4HQ~hV49X<^RWw*k3vGFstRf(yFpE;#N&89iKp3}v1Vs2 z!XHBd3Eue~{0xLRvuoo-*=CJoSodRq_4BVp^fi6y(~?Ks)I^~b zsSTg;5f7yfQ)^`MqYU*>7;d!*qc}^gFkzzmA`ZJcI@%j>Bl_EFB#l;yQ1)A+N3t)B zPs<*yMxvkE0;U1h&hnpSj zfpwerVSjN;DrxU~bfMLL>e2E;xZ~5y9<5H7Z5yLajaI$dpWi7XQXP*(pG7(u%9vZJ z6&o7ei$#)t#Txbffna?R#V!~&mrYM#stj7shNxx8QcQ*YEY9dH>pnR9$jgjl~qnZt#t9`%KPs&8R+iO_=J&yOUU1}ogiaZ zPfcu1^>>YKd)}@2WoWuzL|^`*s&I= z(NXz(Ix~^@M!L4Qajq)MZ*SdvzkcZ_TKg@xdj(IoieUdLp3TCFuFz|Ea|o{kt-!qc57H8T z`?pBf=neQ#AYG>$KydrMiSev|Z}J9Gz8m-#r2{M{0? hyCrBBsErtx=skKLBhfv4){ut}D4>t%ll){p{~L1ThNl1k literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsResourcesTest$ResourcesCombo.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsResourcesTest$ResourcesCombo.class new file mode 100644 index 0000000000000000000000000000000000000000..116ada1307d13815f85fb130a641479393dd043d GIT binary patch literal 7175 zcmeHM-)|!|5S|Tfer$Vf2^0=Ez?1`0=}36s0l`rTs)MVP9?;8G@W6w!>n1*S*Ng2f zmqYwrNFc#Ge-z^L?lx^j(x6k}sI(7W+v}O}cy?wIfAhzmzx+l-A5*76HIELB4tiD? z+k425c~7dIv0BEDWlyC-bE|YOh%#e^?!_t;QE%TpA6OZg17TFA17QYWzd4=ls(7dx zwB*r7E;8cDsQ1P2p$M!;evoDd;`_&Fc$C6j&dPzCcAcAcoe8^(rTQ(W zkBn2LEd%)xA8HwVFvG6@1!ZZ1MY}6Kx&)HkLKz}-k*t4AcsY8_ld>15kqo3|CPT_W z>?AN(79jPoB5icGnKUd*LUAM$IK>fGFy>ig&r)~UJ`$B%0Tttk^P)oV8Ie~w!1@xW zyEu7#qBWnG8AOGXpRog*lgGQ~^LVF7N4MC;{WenBk2&D3Z|CJ4j%rx^#*;lyY&AX5u zb1gZ5uL~~Re(MTJaBxy}e}39F_>yZL3!u^Ru?QXRJlFpUG<9Ftu?p|!IQ0V36X3(a z%~Fe4B-VVI$tZM~)P<1klXHHR@x)3yS+K!VA)9ro1$yo!$2^kZ3Fnhhp3qq3vL-)eok#8)15Tp3t3J48Y*KJM71wX5fPkg>o)159jh*^W-i#<0)=7 zgV6VBjh1RMCknE z3Dcn0J^K8Tj^NSSRFSgGv~{k`bRYty!v@_v_qO;6gJSyyEIEK*;H=Gi$RBr=t3=fc zMtYAtdIr_8Woo0L&9c6O|%x8k5;Fb@vPA+bOSxnt7tx$J$j88*51Or ej`cU_O?n&S8s5KyoYJbB7PnKDI+df*77bq27p*0gGa)&;Tio zzNJG(*0>DDgA$a35{w5W$OmPO3?$RUS|p(+8WDqf*pn1TU{Vhbbzp}&uqF)VYxP^U zJv>RJG6cmBXkYQ@;|ja}7m{NW%&T3hs)7GY0~Zj!38RP0g>$_jd{ck z(HVv<#*RR9Wf6uiDI&4mAzYJ84A=n|=oAO|1kY&}n@Q<_>|n6lCn!azuwGOso=|y) z1FXxjce9hnU8U%et`I7GXu=L;N-hkJGvk&_`m$Z5qdR2we+N_90aKb_BD3+EaII|? zvng#{)U`kioei7~?AzV>fwO`0gW{FqV!_3Niv<@8?mN+aE4%r^t2bvVGE?Q0vMXnR zsza(cMesFa!tJ-tkOqsB-2C}v+u#9JG+{_|`BOHq?6$%&Ercj(>JBp_IoQit?;Oz* zeC)FCGOk#{gwgjh9uF*&nu%+(SvL4t|hEtzNS#5(RI6yu-rvH`9+rWnd;dL>A^}@Ml{|ZXUy@< zx*2ip!FKnQRyo$OW>qeG8*Nq?uvID8++s+W!`yv7qYuZiaL+VMxlj z=18jU+KsFEu2w`xSGv!@Sfof7yOYQjZ=6RYn6V}hulCylwC5R}6(Q&V?`)pBATBQb zXcBnOvG#K^)Bh3R^}sJy6F%dX+}=3B!KFF#E#>((We=9Ngik)IRW)D}GHM|SBp&fV810FFv;Q}5Tc=b_!4dDL_&97Jd zA7SZNyjz21JX#sR-z7XQ<>x+Jh84W>;R;+uscU#%gEw+bx5xSmO>b6cTFo`pa-DC% y+gS2Cp4(b(;D6Z~`@GQcPKAzp6|Fgky|e9DgZFG%)OQnqx3Go|Uf1#bgFgYK8$JL4 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..2feb1fa75ec462c831ba6f66e45f374d1837d28c GIT binary patch literal 10134 zcmeHN-E$i?5MP;mI3_f0LZMKgYD&Q=jLicxbO>}PX_*F`CR3*Y9_6!=D7lkvbUFih z;IH6cVVHp#c;_GDjbU|m>bvIX$#$9#@XPt*RzIzFSHIQn-JgH|`a1x83Li{EiNKvm zdv(JjQ{Q79Ru`%s87+bXQCA_?%qU&={5UdP*8|n&etpee9~cD3CJ0+E^QH*Siw=#FhgLjFMD5WrOWUlSy+24HIJ0v;ce=vAQV0` zLP;8G)$(}|eM~Deo4cI0x#u&DLLu|^*$$_RLe+Zu)(-Wp_4KVJ`YzJ8;t`d~(100l zmm0+3--oDW8V9XVvsS2C^=ieaU429lDs3o=Z?l#b-fikJX{Ty&dbptTD%mru!-~d| z;%r+<>7614ldz9*S09^Te-9NwI;b~-NHY#Y+>6oIOiLkmq8x3gQIt{hL&z&L8%#6b z=YBI5h8M`L2B9xJVQ3U1S0Zys+zPRWoJqSpSY4tbqOolAZ6T3vw($;rXR&Y6(lxq< z3~TS86lK!#Qx`Y|*;mc-Zh>ZNEG&>{BFoFXut*!jN$4xKz0bC|j*zjfYDsSR*V#Kv z3x=d#nK>`xY~l&H*;Q?HW>rX&<5ZheZ2Zt{c050eJTJ~TX+6izPaS2t)Npz`_>2)> zDmFrc~?k{+;Ob2nCa(yaJQ1SdAuZ8`VDT^?X1>JOxs8}=wG?`QfP^Hyfg z@a+L2E=jjJ>r01EBI6cm>)%PPAMtIjx%7(SxWIy0>T4eGJ#75OG8{k#8(5%VR%*|aP?6v zjR^Rv?1)I97I$s)ENT7Wq!$|LB`=rZRWfX)4^p zapgU1Z!%@YQ>lDUd42-7>^|vLicOAvXUaJ){*v6u+X0sdKU+h9#>o%Dc3*=3dCT|#ajuV1n=6c{cm{2V+p z%ml9O2?7gAGUd7>Jbq6`4_UyYGTb82c(zULyFKnnlR%}ZV(sxSgl$?Z^rLMPotnJ8 zV_O+dKlH~2#AJv0F%Fq~(pE?w@h`)5z_*m}jVQpj35vlKUZ?TbhxjkS&&qF5{&v3d z3(Wq3ze+HNS1SW3dl9d*T`9N(^Y{yO!n-ASxhHiQKaZlll7n_L7wt+0?X_IA*K^Q5 z%0+u4gO;z`n>lC?a?!3ipwS$(Z*tKV9nfy%pzY_P-E=^ECkO4vT(qhK+ENbM&pBu% Pcn`f;g7=@qNFCrGELdU9 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/NetworkPolicyUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/NetworkPolicyUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..02514a20dd2a4c4ee3747b62ad0ae5356d95070d GIT binary patch literal 8143 zcmeHMTXP#V6h3m&_(IxTXt*R4wxK{msSUJ1X;Nm=j5B1$af0o(!|=e!YsFE!7mrq( z5?=UO%)ku1^GEm>3`e{1WEX2|IhWE)9(>X6(Wi5c&iQmC{q@gpe*nN;xSNL@fsH`e z70Ciwc|`YVh5MC23hw^QD}Ij&Dt%G0oiLD0R9wHqoJyU^C%$;R<2&3wxG%XAw6J#` z#tBSE5DxXamF@N;W=jI&^|h@kf!W&8t0v-m-4y~C*L^RL)RPaW6S4vn30!awZg@Qc zMb)jjv$kF>z$Af5^_aRW=uw*ynA(0=uQq;cR5z-PYJDB?r)%3!JSG}!mkH+C4ACcQ zYxk847p?)oh|8G)RG51Rw{0~JJBov1e`Wl>LseGHs{ zEESs(OAOJ;NGQz=LlD!#_d@P;l(7T(lk`kXFUJ)s6}MeisH$}e$oaLOQY zl>BeX3|guQ{S$F<2}(7DbWVEFQrGU4n^juN}c z9ITRkVYW7B88_M>s)9!rGZJYyWjBF^ zM(9cIvQ2NF2OLLVQ``IKZ~_OPs422qDZu+=>=%4H^+v-Q31!C9NctFAXd*=5lFHw8!Kh?v*Ij@QN$$JT$;uQf zn5SH-TXwu;deX3e76~U7gY*4K|M=XP?=rkf;O0@BsdDQfmwP*YCyvoIuT#e@LcM>2 z-Y=mGuuRC@83f~tU+@vQ^>l|;-JU$qc=QuODleo*qfqHb#xvbq5r{6JVv^Jb?|%aq zOQ5IB4uLC!Z=?B&(}BRX=zV;xwS9QarJ2jm37I^DxyVhp$v^8ePTZ;cHwO(@Sz5u-Z-BAjZo*-u-RyAmCoN zh38cPTm`(m!|Tg&n1>56fvr5Ya!|l_Dbaon+ZW*yzMF?Bn8x2C%Fe(ne!q^bTZlsN zxAZ$){(kn2U*WAkv6X`b{8p%d=S^9$(t#VAXwifME1GLXH fe&ZUnF}R5lmcwZ6N8A_KUd2xVXh~_)QkJ%~X=!aP<<=WGj?=on1v_zv&M+CpRuZ+lE6=W+ zw(tahg5SU!FAOs<1H%IkFvAbvH}J?i!;x&qb|Tl?Z74GxzwAv%pN@{CbF@dl|MSC7 z0B{XTQHT&o`(8aInJ-g!=@w0Kk@BU-ozHnnG?_=G@KSZVq#kQz-7W43*I}+)^28QzFb^BumrpO|(*&Z0JYBy>@yqm5xm;MyluOH%a-oo| zR0&MA3%gxKq5WD2>$M-|@!=|Wxx7x`xw&&S0uvduOB9Y`JdsV^i)_aR@M+1k*xysvG=9XgnYr3?HbIPoh7D z`#SUeim)**?v7XO$+1N}PBHc-;sae6D&L+=1G3}pcDFQ-yWF1Q=&CL1h(RsjLKz{V z$6alEN62+ojouv_WE1fULl;)(Hg9hL15Qr^s^7;IY11H)h!6X&yHisxLb%F6!_?im zREF-X4XyX^E~D&l+I12jZC32^epmU_b*{YAn+GJL{hxW4k;H zc1geycx4i1-~@r0x!su+m5!Jy;KsSsa@Lr)tadpn1taRzu61@josSc8llufRg(uDe zVUFamL|5On;*#`hQ0w7e37vn29ckTeNO5B2-) zU0MJaHxB4}?>i3YJ9Alk6wqrydL zrK2V(EkIz-sMhTq+IMGXH3oD0yrEsaYN{mkPdS0}3ezjQBSfAtOc~8npEb6X>IiEy zKS~%4EInb{%u_W8oKSSFaIe-t^QVUhR9Tbap$F?Utj%TM6uIx?qV7mt7y{G9s@Xft z6BVWsShPFfJ-tdo{Z`_4t#t3ZZuZuiXmspK;OwBy%C7xTSKZx&?p_a-^D`8U(^&L` zQ>5H2>OV08#})7f!wiu=;K?;|>*)P*u8xfaW;?}Y?*?<#SrFS6#DkcsXnA$E$d$bh zcPHQWp^!dhh{B>ea8c(hQMic*KKijM8--gq)rJP3C=>>cmD*pF{fe2YK~-xGcB&*S?6cmd01VG5@8{Y5ya?}s|~m-PK8GG^c~USG!2 zOGqbpPy7f+K0P@5JskfT-y-lTUR7&=ty*}UY)hd&C-IHIDI`STG(Ib-*YUoacE&(k zHPYq+(9RiXwvqNm0NMou?JFZK8Itz3k(LTc`_@Q%GbHU-Bkiq_w7-qCx5LrMtdaIk zNLtQFyA+bPW~99vlJ

    wqoc`D)O~x%{@I<;DrP+u8rPGK&YECct!fi^Nr18{G zG#IKjsE=KgH7XHU^xDlXVxCQFn(9Zn0;$+lU-C>^vW90b;jVINwoTc;Pi1gQ$!v9Z zeY4Fo&U|vLGV8YS=0mgk2B+BQwPx7r#n;VP|JWFQc{`a(SU29a^0;U#({OMiKfEy3 zdez?NqcYbz+>5)%?Jd%s!7E>_)rh_)#@a5ox;+Mwms3`v4F}_vo=dePkK?}^c<&wh77vp67`iw;c5#dil8R)yToE@tIx=di zzmaMcdc(neBb2JYQ9mquO09uHiR(rv*ns;fP7>}TGO3uyaM<9Mz>qp%urQ+2l8GmH zr9*ZyV|ZPdRCd{0_c%r#gL%41YA6%eGI-P#)?QK?c~-&rn~xtfs*S!M)|022CPsu~ zbHBQvGJwoxiktf?gL?jI90kSenGV{KT6J_@BMM*astKYZ}9QK>dq`x!{WpsX5q>Ys&p zW-$2ZE_6F|La7<8@k_Qk;GD~S*^M3^@fEf)yfDV2$$dTbTw4Gee?~E0fIS8$(i>Fr z{#pPRpIp^I7C_(=EQUk@eva$jt=5MEV94B`ny3W`ap*=CnF8Eo@DR216#!TFV^|~i zH*woZjztCdXykc1p15e$svQKl;cwzicK~Mq^}{FgBXA1tgQHj~U}*}9ST3c?_hb11 zco6H(qs$x}!_V(v=|ybG@VoREIR5tWhdzaqe~a2bhM$TCNIiw0v#}JMhR3ml$sRm` zy*!yn8Tj3&P2umDc7~u;N!n8r(4Hn}Yb5R51hi)fnn}_YG-;BgeNU72Ym)YyChd15 z?faUvKasTanzVnCw6Z4c-z2S~M`IYB8VN!pSo z?e`?@$C|XileC{`(*8x#mNjYrC1?O|!U|@;{ajaN-f^zm$mWyNr%A#ZtYhYU6#KQiVd|X-Fn=(}~kCUv?Im>hnfLBP6A@36Wn#6Dw)+hVTpUG6ctu|?ae z&i8OB7ydR1zFrsZJ|Z_xAPpENFdJ$0sJ~a;Y(8SHB5+}e`&`{6@I%>2v2Jk3GE3VXX0@2>QHh`)b@x$`wZKJX;DJiwfy%%G!w-oE z7Oa+Ff#nNjb*XYYmO`2ApofM`%S0bnw2v!#tCh29i1*36Jt38aOWU+5xqI7ksjt;G znUx&$Byw|2B~l!A;UcSuVhDGm)rt5{IA9dxtDi@X9kICu;N{ox1$IcD(>Y0 zpV`)*K+(Me#r)RSTy-)|V<}-#OC9!@S&CYGgw}mH2fW_J2JdoZ1tD?)?6f|nRp?^V zwqiO_UbJ{%g?@{*xsNRoNdWfTHVr+MMpvvlavc2^L|N3=Jv0`a5^0tiNR9lgNJ<}| z5a>9u$vNejz!8}lDX>o^r^rD5&a-HKSHmh%r#>>DVLE1b|uyiAAGU+oUdIJ(WQq?dDqG-v3$BCJS zYFj}t=gIwu;*u|!^ttkb8IY+qE+Zj-d z!N+mc;Q@i~oquf5WD_XKWI#n=z8nvH8d%N4Ko66Uzu1e;YN$s;8rZ(FXe88~ESE uy%Jb}>sa}g@qHeq;VpO@7U3Ou532A1d;}lEr|=orI6MCWRuD4=3x5KHl-<|> literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZookeeperReconcilerKRaftMigrationTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZookeeperReconcilerKRaftMigrationTest.class new file mode 100644 index 0000000000000000000000000000000000000000..b2c4d9be47116be3e53e52e0fb685dd754599c8a GIT binary patch literal 6613 zcmeHLZFdtz6u#2}n=Iw6h#(-Y2wG4Q5mcmrE=yWsHcd>@BKXoX*-YA@o86q<+1UCE z{0sgP&(U-6yFbd~o!z8K+D&&W!ch+&l07r~%$?`X+&gpk`Qy)Dp8>#K_+Ei20@U}c zykNe_KczjI=WgB?9`F3f^KO@URJdN=vIAc*Z`eV7pLLq{R{n|WZZL+p8nax-;x_Y2 zHQE+szJ^1&>om}?0tW~j53SqOS<6?NPnjhMWS8`EpSpqYit!obLFuzMJhE2mSAH3P}3U~1fDdjxHLbwUTcv#(c&RAYgATo%7x-0fzzfDEoP;^xaeY= zOJ}F63p#-dX4R&m?RuRBMn&K;U++3(cG040tXDY z#T0m#z_H;L6+F-NGB8JuKU;Q?q-*zBOS9Zg7rDxP*SenDv{}c$t*P0@I@4OrvZ;q4 z+_()~L+v7WbNxum4I(Yq-??GOAkr>sEtmP4;|i@qg|)5;w8=KR7)YZwF_v>OmUEJ7 zZhtdGJb9<bxX6TBd2XLZQ$rmWZ#Wf$XBb>PlZ&W{MpC zSL0l7Ey;zK1_{q#!88y7du^>TU=;Rc08B^1b!K&H4iq)6_qv8J?LrX!Ec@D!u4|8bG^{H)bw1tIKjXEaKz#JmNB3 z*YHD!Tj83S96uBByCuhBr0S?YI>l&HFS*%_I!wbQ|@XI__j_fb!o+bu##1>~5CwbD}1!Aqwh zOA4u0xfZoo`Xxrc^MF|AJ^{;o;er~9G}-1LZU~&K1&%DUi%yUG90`t`;8NV#4zc+R z+$8W*3dLr7NW#WVinuh9tD=~NQehaEC`g%u7)6%12t3@IrIeKh1NP=f;5rrxB1Wl{ zHTt+(S#xc>iTYF+3!!f^+)<(vY*Wn3SU6-9DbrmZLlZBRqQT0cy$}LRNQ<83Iw)ZcpzVr2Y<|Qfja4g zHwrwIf@-9p8dQNVaj#-)TLnxhd`g8>0hD=9j+S+Ou~dO7ruUB9M*%7M?y9d9Xb?ER zSJkQj2FTIzvrK`nkwq9v3Oqrvd1q89@a>p59^I+99cAwOD1*zw$cMK9-_-nK#DGq^p%W4>=g zdL`$Gyt)%(V|n-Sm)BN`U0O-#L2)QfeSI1&t$!@ zxxL3dOW=Iv@#^NrYN=c*R!f^3C{wO*Pf1Vsf?1*D5`m#*A%$Hba3;6-g23Ras__h* zBQV~^d#tt6!!Sn1>d&Rq#BcB#^;8fFKgOY2M1jL`=_R^G<5Hsq|c? zJ~s8S&4{+w71O@l|5YEmR$)7KUDPoVzz99PHng+Si@;_ zxITy}OJJ@NNh<Qi)yRZMDBXQ=F=y`^E8CFI+2l1h~B!Gk{I>@=R}s382! zc!I#?BeaR6L`t_JE=Hgea_l0I-HPjHPlR)nv)#U;iad&|NEx{0>Sjl(WCTXng)sd$cJ9 zQ!tG!bo7WY0GC=)Gx+`;?Q#OzbRyc76Qa#0qRpKUZ7~t;>Iu>AC8AwB2HJeWx)l@A Y=n2u*63_;aD{ki(;5NPoagT5Q1Q)X$F#rGn literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB$BSB.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB$BSB.class new file mode 100644 index 0000000000000000000000000000000000000000..93d9b31bef4db8991e5153573fd3b1820e2e3af6 GIT binary patch literal 4905 zcmeHLQBM;=5S|63^sE+96j756;Q?NHFFuKy0Kq^g7;V82pSIVfUAXREcDEJ$VG0^Yd2#cmYpxFhXF@=qR+@*zkaLSSVCz ztQM`0B2)?2%qks5aobp~&o(qSs;wg)ZnFJDw%lPNW;GEDdt609^P82G`IX8_4#o&f zrcz@j8{zBP0go(!@#jJc`;x%>h4Mg@FKsOD5*S-mb)JJff#TU2*0ff70&bGxj~(gE zh&#MaBh^aK1S^!JiB`3kx6CsdpY5?Mo_|{L)PGQPN-6sqS7fvr7lHh8>bY_ z(YoS>N@Zz_*{De^%H&50GSMp&c__I{D7mASuBPGSoT8N|ZRy!hX~d*cTjTW9&_9tK zuIsT@KszOo@Nf6Yt!UA3)j5{pP!YTB5pF^fseOYI0#Ha*F;3yV}3+Lm>`FC?a$ zeSCv+){bp2xLOnl7XmTK_f3pI=y82 zs#|BKnXNJ#v8v?0XuR!KQW+NX_i!81@`iJma|J>#A^$4M>o&9b_Y&g;>X%3O5$>nW z>)>9XY$mT77rNo*G|0rqRLG7xbdg74b^Kc(3-a0ez0B~VEn8VXFR5SJw(*Zn#>ebu zz890(r}m9jWnpYpB_c8y2Gg8$X+ZK7>t)42!tZjuC9;yX$7T75@xi!1;~9SOKSBbS zfLjH)0k;WEFO*$H8>S746USL{&4XeYOQG#{tHyQJ)gT0>$|_>Y3e2>jrJg!z+PLX-G7KZ%DYlxkbR)?o z;i>->GcW`1{71Yntj;zu^rokF>bI+1-D>am`=3Am3IJchXB8+B_|E7k zwA|S6Asez#sL)s~`ag&7jn~fZwF;C8)H39R$!>VN^N>fDKuN>|s;#E9yvy|!0?!Gfad^K;U?Jfw=Gd!h zo+ct{7)@0%}ZP;K`(jd_$XjY27l4q2DeHK7{gP&Ou^ zY>Y#BGB63{8jTe*1NzvXr6MSOU@OIDHUY**j*N-fh z@qJ-?Iopp~MH#inDG#c9E+c2s#vMkFr|@avX5Ss-!csH9k^)aLiRaQF!qS3{>Vf(O z6^0IE%nyXb-SoQpWBL+%`!-{(zcC1 zIt3rI-}1dYS!}g$wrUAu+bR{2!8DkiNss-pJWGc5TE$$_@71_3iVkg$VEMrK$T-rV zU|;+nMFOb7`6YM}UL|n8-f|Ufn2{)>jdR732g@xig|-L%4%cm0gAiD0sfZ7LH;DF?>9H*tYs12CUD`&vRA4cCR>%Fo^=mbF0hTgJf+^u8oVSd<&vCY!AN&Hf2P-Q-!7IOIb6>;z z0?Ih#*YUoTwF7tqRNHG~X{VVwptJT%&` zSZ-|PG3&F6P!(gf=>8xoD&(43r7M2WGnVUdhvr80w9hMd*});Z*=HhPO%Vut(mAtjh_k)W$<~R4Ln40y!a3lVkw_@`!-vD|sN= zhQPVnE(=j0Ul(o3Y)>P?71y^h4Kv-di8Bi!(^goaB*Lk|)E(5;=DJ#&n-hxn>RVN( ze!+HxDSkxY!F-fC6&pedyGfv1nv;%c&puk;#~s~PE$+c30!!mPy`{C%Ie3{Y{c&Hq zhza_5{>6%dGVKkOU(O4cv*6+GW=7P>Y!SIK-fv#Kf&GyLc}0wobrh3VpNmiLGu^knW-wun`Q#Ec_U?%ANuS%ub&1CG+N^7AW9EWV_G73SJA?S^*Do(K8PP96gWi3@l>* z^AqncEHA?nEaO-fWiH?-ffw=Z8lq+KS@;DmK3sX}CwS$zX#Q(>UqBhB>2M(qN; z0dL|Pz*~_eBLrvB0O4{Bf{aCY8;TP)Wd25YCkDa9BD@Es2?S^Bz=ri0grgXQEL_1k s8TbG`#OEq{q6}BzWArA$)+g9^4O^e#^9Eiy9RD1?geq*}TL!NF1pwtC(*OVf literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB.class new file mode 100644 index 0000000000000000000000000000000000000000..8c18282a415411e6d83bac17c7e0b1ce21a7393f GIT binary patch literal 7929 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerConfigurationDiffTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerConfigurationDiffTest.class new file mode 100644 index 0000000000000000000000000000000000000000..21189143048b2f35ac14a124841c3dee6ed1d0be GIT binary patch literal 10490 zcmeHNO>7%Q6n+yz9J?tEq5r?zKuf}pO=&66q=nQ;z{E*Pl7=54q|JJ4PqVvY&F)4G z7tWlyazz|DfT2gRpeV-mpuImx53*?;}>?Eh_Agi<09;K}f~+4}u0f5)LiR+4Xh% zy5Q?nl(}DLjR-jy_orFCzJi!J=qE571G~20C@rqtqE1L)Xk9X{QV}3Afyb&bQ1U!M zAm{TMU7~dY`RaoDioXs_GM|Ol2s|=2zDl6Kj3YVNPvF4z3^PJ-F$f39@Xt4WxlVV3 z)+~p6E#}5cvs!|$xzr1;ScUvblUgg#}H$7gPi4+^QU^ZUS>N4|a*yJ^fdaZC%N~Sww z^2(J5!Ri)|6!Q1BfCauBInDWa2{X4H+LFOd7u{CSKy5!{akOE~&5A7=G&JRtQBR`Qy3O2ws8J&e>8VXt{8kj=wAA*x>_tja)K7fQAB41>U9gD> zDz{!)G~H5#*+m;Y-GrWkO$lMgr@M;;|K`pc2yAo|Vp;W1bG-C zaA>T$UG-3oXF^s*4pcFzSctqeDpq6^MPQ_gQG&agL{-U;{b7>@1U{_Z&+-q}Y!0)n zaEPXS1A&X0^=l-mrkExM;W+6ZGpOsNn7ViaBbRMNgmVV%bg);^_g-eQv%Zx+x~7|g zRY{W+)x>1>G85w*=s%E|5IBNC|1=F4R(I9*Cgo`Y$H%HNo|_oo?Q*c@yv!QD9YzA3 z=eQ!A+~J3=>G%f0BIFAL=VWBK2GOR8#U^>gUcwZ&0k#7oWgF#42=+O@m6~^|wt?Da0j)_FM13jQ2mrVE5=j$$ry!l-jpYM^jT(d@N3`4i>QcFQw1H4SZQ3=~m@nX~)Y3D$YXQc@_lHrm#a0z*)fe z2k`xeKKy$W2Jrs~MZ1_0?Ncq&u+ zuVzI1NsD$RBib)ow26#pziH7XGot;jMZ202?GG*5wTx(gYSCWHhDQ3eXs>5P+pk5N n%7}JUi*`LD+BpqcAC%);a~hWMa~SXS8F&LKFbDIn2yg!l%(g2- literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiffTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiffTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6dc3a17a8d43967265f16f9b7013afbeb6e41a44 GIT binary patch literal 14168 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 LTTq7EP=V@y>4f5p literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaRollerTest$TestingKafkaRoller.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaRollerTest$TestingKafkaRoller.class new file mode 100644 index 0000000000000000000000000000000000000000..5fdbdc41f3c2297c6de2bdc724066e8129e1806f GIT binary patch literal 8345 zcmeHMTXWmS89h*BtwhPT;@Hl$3FEj8O-& zZx=ZD>%af-CjgJ*Hv%IDUI=`v9I7BJUz3}%Y0@jORKm-yP^ zJNofTDLIt|u#?lrq{CI5^V|))5u`vK&H|bDxV}1Gmwb=cR%}E=h1=&JuPaA2WT-fF z^OCL^xU)N$TGDvIC;J|8jYqC>{U<`Jt@SB(jG3k#g!KHL=%$(q=ModtZA2DLuKV6~ zNDs*Tp^>l;9H88SvQzWm}W>yVjuC%QfGA-Rz%?$UZ zYWB(@JDYocrzA5{_LGQZl;Ivk5%(q=NX^}}1DmCF+I2mqFLxeh{SkAi({6Kr4X#Mv zWtIobwga2e=`g)V=eP|Ce4hJPKPqQ^-}A@uh;jJC6<2S}&ZeptEw9zKod~tqjw?8L ztXP;>ZmMEkS&sB6)RxwD*-*t3wl|w>`m^0le>U0l`yJg)|3tCwsh~)si!B*i&0$H9#jc~DhGY_&U1;Bz zwEvHyw5j}XYZw0fPs@3JBhQ6>k?iecKQ7sENjCJnw2H(!q3!GoCa3aEht+;~hMwiO zFg$$V*wZcj7P_*(g=KGHJH_SfR;b+i6+3KZY+A+8E6QScqpb=PtNPg>k`DObo+E5} z4Zhju3oS^OkK4_Z>G!jPKJq z5(%}FBQ?nSLv!-GUbj_%#mWC5p8 zp29;QnRTp`B2VJU74kDUY}&56*lDekjMdDYW)nP1I;+yRbvx-C)ufn#m-dpl${>Ep zTO8FS*&xNl?$XRQ;)&7)bCJicPhzSvj&B-xa5$YoHp9TA>=VTdKtxbg)@Bm=mzX`8 zGY}wMH$AvC0#6y3nwOz;5~7oY<2Ifvg*ZhvgT%_Z?U0T(a9=6W)paQ~N}ncQ?s$Hu zHP=+u^_1}WMEaTjs187%5H;{{sYg1WH#?Q>tCO)jnRAWRF%j zE!81)$y4!Zdt)P^7~|1IT?~~L(%CCW>1fvsJW$dM=yqR8=4ob}<}*0MB&z1BXV)Ws zc)ZIf8#ta(Hsm!0sC=@vm=sP-<^D_}9i$>uLWzb4}~ ziI{T%=D=9IE&{fJ@$La2z`Pxc1252GjSU?60v>^rgFxVA*4SXh3vj!+Yp}O(S%+VE z;?Y#`2)x3AiMn@4Edhr6p_If<=_T-5*Q!*(34E79h^EIMums*9#i~C#2z-w|B@YGy zZyC6a=_c?FC!`o}f%o_w>*k6S_<*_wpB4muNDMxU2>h7A?Uu8^PpMJos=&`VO}{9V zqpxJ~t}gIPu4cctcaSp87VIEk=`QnWl+hi($jm(F1tE%{CVt*K#Qy^rJ3J5qyc)F`{Yj zzRaukgi`nlXXwAL;p>$89PhN$H~8B{i{v7-N4KNh_F4woC>}!vqo_t`Bm89gWMbp# zObt5jvAtOu-p|x<26H>uJ2DjQx0z^9?focYc`nmuonbrs z{Fe;eQJlwx6z=1hxWm2wTPCiFg&n*fj`mR|+C?npT6tio_kYjCy@Y3o8|V7vOy7s+ z(LXa$m$00&cI9K>{wo9b0Itx(5qulZ@)ua+e}TDR;3}SH|F777iuL>gUcx%+*kG1C v$vSD`8dl)IMH@asY+?(q;yZYqwf=p)jd$@ret;k0C-@nDfnO741Xuq9d*2D! literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaRollerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaRollerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c8f3ece1c83061c16313558a27dd914d60013b10 GIT binary patch literal 12871 zcmeHOO>i7n5$@5CM_Mbf>aBLY>#!81 za@iWa*Zpu2p`{8sin_ z>OObJ47=+2%#8=!)}7+m<)xd<@DF0pKFq5loa&@?Sb-=ehskE|p%a|`SFpQht( zvDp%~NaX2c%Pw-egbBS_SP8PKZ`oUf;i;TDthUUv=~>=I^WcT!wx;whE@dl)$x~P( zyG*Y6%rUQ9eo2zFvOdr1S%1C4GK1oNFQ`4bVsE^dCW(U@qB+rw?%;LYl@NvkB{L~G zSY9+C35ts*M2RY?31z`#j&J$vmvpZ*qgR?x=gqR!%vK8}mw!gbdZh{0RMjy=b+ftY z=UFq0%wkP7$CjIjo2%kF%WQJZV3iic-sV*l9G}SpBkBIBDwUK?7IJ}eo9WHG(4uu) z)2lni;8^cd99;>j-zH|ctqY#IHQBA~$qej)gF|o^3@fmAWMj90+5$+am!Bn8bJ$TU`558sl12P(R$}lV<4|ys)hAyVO!yjzpyQK_N57R6W*Bdvs z*RoZV*y?P{jPVK-xUUgc-o~g8{DbloxQ7VmtA@cmZ@Frxrzw_EWlR`pDjGzL={bzh zSSkj#utDAMEWcXiZnYeu#PoT`yzHM~c7X0MBk%q7;?7RdYTh=!7IuZi~)xudd=|gl!0dCtz==6G}Thhn1@V<(9m=qaKS}2VBIW!5ru2JCC zZfH3{;UmhLTx_qmyQ@jkYT>)8v>D&%u707VG`w{>l=Fpaf8Jf4Hnmw=(?h!F;k&|F ze$6rPoMUF{D6V#49key}o19W4CYAbq@yjk~q$T$Sb<@Vg+u8{mZI?^jzk@<5v31_- zuCl2xsMCA=bVBh&k6?poCJub0Q-gt(p@HxE0C$?j)MpEG=G+!K( zDtsROQ7a2o_##$lfq7JT1wRG|)1?Zp;i=rHbW-6f_=2B2s>0W(#1r2gsPGL02+Ic* zUdMVgagk8rTl8H*nD|uq4t^+rrH2Y{qAf+`sKWQKN~|v;RrmqQBG0MtqtwR)!saUc zIQ3OTu&q@1DVigW;wWa(Uo)0RH}nN;je2klP!0SZq7R0lAGYDsFsLwqql5U|0~!3Y z9frj79dIX(?-0*B;bDBf3wGhZyK&?pL{ac(=6A5?iCz1C0|)*f=nmn(+r&&i9LDFN zfC`SlQT%NX?nZF;RTS@Spz6Cy>;QKJ#k9H1xH`=0&y@+3dF?b;1 zrw2nDlh?@yf!AegUK1E;uPbn-O|+LKXc;(*(HBHv^SF64T2lr-B4W6;czY+}!>YMW z?SCQBUV%s2MEkWA?a?;T{wPH|hiJW!Ll5_%g~y|P+PeSWmExZ7823FX?#DXD{f89y zqFp%=<Z%NTEBU(rKMfsH! z_e#gOf0E)}ZFBX1m!i$JiS|z^+I*X6?@Q4Z+C%HfNYSpfiMCIQwuopQMNLmuihI3d z+|yFr8y(}Glj1(nG453oGQ46ckmurE(6eEDY`Kjt=$-U{w%Q*fC(%@T8@zVH`VDc4Umcv zQYk{Bs zlB#*1MO`*l;gWi+_mD&{02jPSFF!)s^d8!Kw*;vds;Eg1tin232R-l{{(S*QeulrF s!p|Z;3opXU@CEo1Ruiwnm*K1Mb@(Q{0pEu2!dvit_#xW-ZTQK50JFmsF8}}l literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRollerTest$MockZooKeeperRoller.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRollerTest$MockZooKeeperRoller.class new file mode 100644 index 0000000000000000000000000000000000000000..e572838dd3db8c0e36fe063d380e2dc4a70d7aef GIT binary patch literal 5878 zcmd^D?Nb{?7=IR_N3K{}+G-VFR;(I)Nwik22AOGj8KM_(AjQEi&gQa^EtlK4x5t40 zm7ko^8U5}b<@oGfGFjl@E)3OaWhR$n^Lu{#?DMv}&tHH4_6Gob4PQDiM!=7hU)4O) z)hFzLRfViZT8Zw@qAGh_F)dZq58_C3H5^bplCko6^#>`x+Z%nAYaVK_pJ?WB*5+zeg!rs|Grvt>d`Y&s11}Po9&)ZI zCDkNMlN-N04$b<41Ky^-?Dj;!w2&d~DcK5mH~NaYrDliIHunRj5Y%J-KHKATPRL5% zc9ntcDt+4x2L`sAqix9}8cI#OO#2Po{<$!A zhV3gC8!)E(g%%-juk0P)lWV7!;+fE{&3oy202$Vc3S~CX21E}m47p0`I*%N9o502;JCVT6%;x611SXQWcc6?d$<#Lv zypOF$<1Pn2#8#&j^bS-ATs!V-2R=r)@qz>QFkDZp-+}wMavVI})O6tUW6jkxSJ55~ z5k=T1ZQ`v6JvX_ICR~$|1_}gTzz#6M&jeh-ZwKGTU=lyrdj%JtS8?P%q9*X${T-%u zX0H7T*Z)j#H}PqtjPxyhP9^Uy+=iF%KY*9v4oaq+ufVG~V$ierJzyQj_muUu)2w7M zgLMMlK$$Uk6SX&gZ{f%2Nnj4{qUK-V|F=;0ci=skhY#Q*sKO`kDSQSG@Ru=|`v=sz B#rpsN literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRollerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRollerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..8b6b36b2283cd1a74f4623e55fcee61758a0bf8e GIT binary patch literal 8996 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZookeeperLeaderFinderTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZookeeperLeaderFinderTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6037e1721828b2d029073da7637c195351eb4b03 GIT binary patch literal 8448 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlClientTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlClientTest.class new file mode 100644 index 0000000000000000000000000000000000000000..2d51bf224fa73bd13b0c7fc426be7cda2a309a38 GIT binary patch literal 11896 zcmeHN&2t+?7JqFL%T^2tHeo}O4TBeUZFZ5^WtRmU0*a(yf&76b8^V5=@u*`>Jetu;z|{N09Ov2w~FGzf!f#esgYWmad}cPkb^#Y`t`5h zSHJhVd%pPL<4*zLd3Y-a69iP-(u$ngym(#hsYRU?ZEoqETY8aosikse6*a@LIkln( z7PXmUX|$+Wj&4(pncQMVvFx_WUaM^A)Z|SB&cQJPr(ASHHFt|^JJ+ek2^?EqYcvVW z)}yWlPHpZk5x5soY_6JoOEnxi1=9qk4W_9^o7p(@RB64oUD|9eZ&z1Km+RFE0rJK@ zC>0@aQuH+%^{DH9k4>Mkb!H&~sS%iqJ#SE}M=b(>t7oT?6{hXQw1T2dUeryUUm|eN z!r~Tcq0Cw|2M;3Skshj+#jGhfLr#6TX$ox{J=#(<*6Heo%5`QcU5o7)v|~S~TIC&f&U|8R4B>WJk%Oqj;(Ab85C;(|KE>bcHiTRrt*=%};NMW$04d zA~FxhtbXEJr)%h%&K29i^ok)J)12jKm}V6(FD@)9x~({7i(b=BjJDUX2mh;%fnE|( z7nBuD%AyCU6x9^r*#qt)%1?U` z(^qtZN;>+d8V^u5RNKB7ORQ13aVY`%&d%;u1n4j;s)<<|9bhQK^{b)bxV2IORp}a5 zXUXRC%v@D5pO2q4rr1(fPat>wKY?ZtQY?dnAUOiXQeE3@ zZa1pswbe>vAl*q|r5|KNiZPq}>#}q*iMl zPQ%$5n1yo$PA?3f?T9mvlXWawSDnrdwVEPPi$frBxU=OaZvWvi-qvjbT80NQvA`JB zjCd?_!lvBm28TfTFpb(d_!ai{$xq8@L>r?A8ivTl+69)?@1mw+zV3 zQ-nM{o)`Dtq{OjjvxKIU0YJWuF!2t`QtM4!yZ>U}*@a@mgPz0VB(8wy|Rg*cpZM?eE z@%+?mu^V<+PEA3XKxMq5+&itrNJQY_ftfKgb(yUi$iW6xTQ>=u^(ZishW@l^Q!F~| zy>PLWTCK|#+Y<@RH*WaEH*P3n*fCzlkh73}n6q;pXCXxeFWdy`zAo-JX9LMPtVaXx z9vXfaGWg_hUlNb=!$XGIyf91@=k$c8g{mcRb#$7l)k`~g)U9ffDg33q6t5n_;|hF^ z=iN?+TA1VT{ZpmrBop-Y#LlPTCF@Jg}=r_O3N9*ITYQJ?`pi^mD)Sr=e4Lj!pn&z#IxJ$Cz#Bp>z-)vj#hS<2e4uShz zZDxkxLanNiRc-L_HBO}z25;Ss>MH}Gwf<8T%~li12( zYXYXQore=)dj{M0#@czf4^AR&9!|mi_^Tl8EX?8e1K9c_q7u>j37oz<`-_j@q0g{2 z0q5~s%pzv|C4SF%RB!huO+xoxwsQZ zI}HnnHW6YhN--XnV7w4w5cpjT;|U)lE?+@{aYZ5@z?1NMlqS%S;L_93A0!AX5(I*p z{gbbuNtA6Ko(|=ErjIvaQxExB3G%B_sk!u+sevt0qPL%Lrconv&PIC8+p{?BV@@{6~uX_Y9EV zl_GCvfc%~m`OOTF-i_@% literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/MockCruiseControl.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/MockCruiseControl.class new file mode 100644 index 0000000000000000000000000000000000000000..6b8fa783bd574881f4be808e7a45a81cb594577a GIT binary patch literal 7465 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 IY{9+10kh)$dH?_b literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventPublisherTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventPublisherTest.class new file mode 100644 index 0000000000000000000000000000000000000000..5e0496accfb79bdfbc04823ccd6d8e815727e0a2 GIT binary patch literal 9532 zcmeHNTT>f16h3lDdVztT=S(?0d3KdRFsuNg0}VMR~&@GX3uha7=5 zt-Pw?+Ekyi4OSJhs*MuepF~xLTrne6)$=25xEkD0T+2v#yvjFtV086S)Z!}Oh_Zx0 zOqrU!zZkWAp*vhP@n#-I2wdq6;j>`9y3l&cJwu@Qc(zenUYwn)5g4xzo-d;k!TKEn zm*!-En1NYke#8qThVN*z9oH=AO?K3Wdyj#@0EV6tdE{aAn)VmA-`sH?}QYi7h-y+mdS8qwuhN*_!xGQxL4bQTPR%mO@4c73_JJj9S9JYlGgFd(9{$8e+~ z4+A5OgIIZr3QeP+&DTVL?syHK;5CbUla#K|28L1l1f?hotpARI6Og6iaxd_un4cO+ z88urWcNEG9c^O08=Qs~uV;F4q`u?OYgJI@;fnh&G+y=!iHyzogUFkh5&-qO2ySqW| zrP$QQJUe|l5Pt4uvo#qyjhHeN?$!5CyNXo^mT;gk7 z@xaSMJv_cSA=$lPhB0IP8{DwN5?n;G?N8zcQc>Un+bdNnX7@gr#fKwHV*LnRj%_~l zVmU#e+5BDtA}~W!Y&gA#>wPxsWa4(* z-?h`ybciEPII~)FWixl3>ibs$-1XU9n70>t09Pmdl4rNeaCbs8){&(7ujJt?h&&&SAubP zV-&{VO#)ZTdn<0X_BB?=6yBAwOQ>;9(Lc@8yvkc@UWgw^XUArtz0@FJkNVB8lk9uCJ29~=;Ys>Jt z4pR)jODbJ}j|lvIgwEyVC36I>+j%bpe8;El_99nHoM{;pph9xL9L`+NvcmW6>`3hcrjy(zfm;Qk9@5f*J6<+@fTRC_Oe=Qmy z>ID9d#!_$%-o_TdJBW~j>v(0QZs7l3G@62TD-~^W2im)-Xz!(<-AP6Jzya;U6tqXF xXj2Yo(Yx15FLlmBugMArIc@3RS)H|d*Og6aEXdqk+u>IMI0SxNZjt)E8B@${tdqZ z2_(4lqY$&(lzNWoLxe zs-DvQ*0HOWs6d&)e12psbU)hZ?xXY!=AJ68{Bs8V)%N*Ew)Sw3LAhmmSb-XY#w4C~ zYmKeK6*m9jwa)GvkFdw3Nm3OHuZ-rYHQg8!_k;(v&H#B2Wh^X#QXvmSANjH};h4+t zgv)Tu<-~BpWq8cxGVd95TpQ05;pKpPa*c;6k@Kr-q9)9e7G@ELe{|4s)GA4h^_)Ds z6J4w1V=jfxPVXW=xpsjpSURr?8UH}eP;~`T6)c_lUMec2sF2hDxrz!YD&*oTguZ_L z;ThiD{{_z2{;aDOkm;Y+{}?ZM>)};`v+|t-hhD`6aNJ1#)=~X^dM5qgEXE6DCUsmG zOS{7~rLNk&5mu8L;-(zTz2SoUqZEVMPqpN9TmV(LT8GPUjltq-JFBNC7gcsi$

    zxT%pw?vX*ELK120wGx!Mgue2*cgT@S#VdrVA p=j#BjLo>H6&{%>Sut+n&O?m=CFj#`yw7y4AnRa*JKCMcy^aCUM3|;^L literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventsMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventsMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..1ec0fe1fa50a69bede5950a5f03ebe1ed4235fe4 GIT binary patch literal 11101 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractCustomResourceOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractCustomResourceOperatorIT.class new file mode 100644 index 0000000000000000000000000000000000000000..eb8d334eb72190f13f8b6e8668ae2ca386861f3d GIT binary patch literal 9334 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 XYJCU3!S-qNzpp@pWw-|o&|&>=&Svvz literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNamespacedResourceOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNamespacedResourceOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..b29fe6e67918f79630b6c16c80108514f6435501 GIT binary patch literal 10948 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..ac49017c14c9f1f6fc50bbee336dd4d92b64d358 GIT binary patch literal 11649 zcmeHN&2t+?7JuzH(ML=I4utTTAxl6`jKuec<#^XooF&EB4w4ctyRg~zsAUZv&8TL2 zjKhg4Zk#y7iNAuar3&u+1Jqvjx_`jlDPH%?Xj*ve=?K}iRrq47XI}sM_3Q5Ue(&}C z`18NM2Y_qPEx;6kLEu|8&H`ThnC{S;?bQPA+x<`Nnm1rR<(^-&oG{?bPapU!@Iv2W zwe4_|`7XomwdGChM=ieQxofn~f&sNyrx^>b$53q?rvTFg9+rbS)ZMDBZ+^@yPT-;D zN^AX2v$1k-ZFzNtz^s|dv`{5?tByhq&kZ?M}r>qS!cuZx0%1P%d8ORgc_KmPf+sIqV3vziNJ}<++70G4X?urFiYTUs>zD) zdwvlfCFj1pO12mrsj|*BA3tAOgSH~VK(%$Y5 zJf9ng(xsceZM|(+)D;?RG9#J(vE<=eDc&p^me-e*$3z41|60!TxALZNWFqpgh1_=X zG}0D4GS!a~Y$vcJI<)m2ujkoaRWTz|AOlmFnl7KBi52ZK1WDeJx69Vu;&P0 zXJ~4+>|~u=)kZo4?XWODVOw}k)mebv$iV|U{UG6l;Kpx zuwyDerf$@|pXJ?ulOoF04+CCJ;&e}+qLQ*2nMe~~m&{Rej*g=57UN0$J8-4i<29!q=hAw@aEg4 z43EJ188`!v6L_q$w|XdQdS^|{o7TcUmMz=je2OxoXHn;Fd|u;+)4XQ~1bp+Ti=$YD zJU^-s@~l{?&yHN1#df3KZr9spz1^%Yi3;ha%$5i|)eK#3_t`CX#|~^XnEtm4p$3t>quY}keVoS{UaUnpE0s=;cX;N}w?N?7`G#Z2oEQGugwj?$jGIPB*usAJZP3zp9) zXNgurhKpPGdL_O%*gM3Wsl`T6`Q-!z$Jgw&=crxXPe)OjS{0VS+ZEbDcNPRic!$6j zI{WQtGFJjGa14eGY2}R`b60k;N)!mq8$G=9VYh4Sh;qmOz{Ly z(h@oOUyYgNhli+Or;L+x=#t%$Bc_mwWM3a0Jyy<+zM4uZqV%759-?6D>vkx->~LA- zZ_GWF)yPDe__}0{qQ64Nx$=Rfbj2N{A@*nrXIjxIXQB5aPAU^Wv|O3MJl`j5cp*r?)ly)!H|V8*J5%9N6(9JgTRf0 zHdm!lcj`)s-z>8woq_(A)EYYNm zxn8gy;%7P+M8uI7k|~icL!=QFT=9M(nYLWF;rIz^+Gj(s#nCQrJ-{$chIxz| z+@wx`lfAaLCyUK1=83*WH9Q*IK_c6^AL-q}85eiPOfR$R1;C8xvX-(1_zQtE zqX|_3{z{;jXi|U=aqq}rQGmZ=w)SfdUx0rg#Ax1HfX$Ilsbr#A05qubHCR-TM%`DV zt0BRqgX!l0Kgz<7)=t0^a1u^otAMR3D8dYs;WYj(*mnx9VEd}lp2zk}P#wOn zVf*D@wO@f(hwop*_pien!}gmn4R2w4D#m|vXhUK9$cArc*zlf~4GAnjU9sU}Jb$r9 z!afoHwG8}@CjK8a@c)#7|G6gqbq)MR2L3mi_$y=Lf2WCmb4>i7H1YpDCjS34@!uT} zpPbgje{W3unkK$ECVo>Be|1d!9ZmeTG4a3F#9tp1|DT%px5vc)j~4z3cwc(uX6!v% Wz_2}wG3pL%zz6U*_z3O+1?v~1iYCMW literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractReadyResourceOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractReadyResourceOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..f8486a900d400c3e5134e10b29aa537b9b9faf41 GIT binary patch literal 12268 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..cf950611dbbc92e658c8d9dd0d01619050021c04 GIT binary patch literal 5309 zcmds5-*ekU5Z+6Z$~I|J5?TVGa1EigAz1tqB z5IxO1;T`Hqzb8DVg$!s<$+pM+@Gh-Y_q&{Sxa%>6pdNFN*%7C!LN*gmnyDwv#FN2| z)RX4GlU3T0Jfwlt)Mwi5QjPTdw1>tI)1z$7NVaBVb@PcI7F#d;o>ZD5%OPtk;ohMx z3nB~JoTl#o|B)wL>C+<5r8+tjqQC5MI+lpk$MmHrG3E;ow27w(x?G7UpsbBq!dwhC z*In76TgmzX^LdEL#5)g@Y#&bU4O|3!U2&*)Jb|R^=Be@35n-}UcWyRa#hK>mI%dK& z4(kVz&+BxAt`P_O{QBcd_n52th}rA(zBuJc6+rjUjS)mn=%|*I(a6no6KPxq zmnvR>-Nn>XqQi?|*`ODovsx5@OInag?gC1aS_POV2oG*CZJ~&{oTNJ*3&SF+iDaM5 zrINarG1J7RWWr5?EoowzcV`b2(+({M~ar1cUVeu2R6({nh({&)|n|7tJ5u)AhT+Q%kO zV5#01%6d~-G0&=d;wWIcuMlx_9I-Jb?TFaBc zL_O^?tw@BM1b+HwMabAtka-he2~<)62(09l#`ujwpI;?peR@6{8w>m>)x`{vxtz1s ziC^Nr?1)1#_?)T0>jZxLZ;M!7Z>&Lk=FH+_5w+86W@lQOqvHzm9Z%rvY4y^Q-;rZw zElKhCC;H53#eauhc?;emFlRil;5LCv8D}hbH@%havEUAY%h{G^!Cjm)MhcV#8^~;$ zg#~y-Gjt?lilYS|X3litmjVmdeG!H@Sw?j$gd2c|J9xwdVBxS}_zhQBFW^pu$G*&Mc|T(;-n z`9ijp9Jb|Lw(IaBdi4_8F#|N$#(~E-a#*kDvc5dTx>msYN)GF4F6%9*pW*q;Uph8& u*ly*ry;g#4J%?>OhwTD1je>TfqVTD--Nf}9e5AkhZY`L-un}=d6lXF literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperatorIT.class new file mode 100644 index 0000000000000000000000000000000000000000..d1660a039ffda78a8638c21242330da9c6ab1a1e GIT binary patch literal 5900 zcmeHLTW=dh6h4!>@g=4yftE`tOhb!oFgBNh5OyN9QIR4xiIf;49>=?5d)oDkH9Kns z{sF%T2_$&u35ho({tDvE+KVIas=F>}D?who-qClyJ?G51&HVb;k3R#z4t!dKH3Dv+ z-In2jX+309))J}}7%j%%iI$ph&5Y75*AD~3^Yspc(wKoGDE1%yN z(i3ucG?(A+7NJ1kYQ*m|Icy#EA9B|aSnmia%r1dTwR(?0VNZFy2xS7B3+w}}l`g>s z+4%h{X+P{wxkp_!o(P{Ap(LGX)%W>0_?%YC-4UlAcYUT2G-2)|Hso|$sOH?LW^7b* zZq#BSHmbQWYMXkB2UIFU$IQ4RYLK3vPEh%?^ytB+^ zlu`5TgjdQv>z@c6*aS=l=vlB$Nh?MlS0U&aOAN(b#YE=PM2RNkh-+apjrB2onTuJ- z%}9Cl-u(Sg$wM~g0VX>4j^{;bQFc0C{!^aze1Wu$qzWlZjtER6X6qzHc6XaB2+##F zCa6UY>0$}kQ_}EL(?~HkZLMA@FYB1$&7?Xj3t0OygksAwU@I$ggc+lS$1`|y?QaIh z|H`k)jfk@#!%I=%W?)wIWX?TKs+^(5Nf=EH`B3*m;d@+XfbFny%m?{U`6!cS<&!(X zp-ZMUise!|FM$D~eQuOIV3XQRxIt&nIu!v8rN;+CV(}a(9hK9}8eAz~Y#oldXC~PH z-qtNQs*KQ2M)NrfRGD7WpgVAH`kJ`Bfr)aWvt^a*S^%4L3! zX<^^ziv=?h0Riqjg9A;QKq)>+5UAJcPOg@PV&xMtl+1)0&G`omz3?($Fr!>tt;`$5AYn$cUI+ zj?3U!_D%*o>AIB#p5qLa)c(2kdIB3mZjQ7V3dwu|*D;`z>S4&dNywk)7c$9DWbEI? z=n!3uJjKyr76}K+69d6Ltl3K^Bmz4%XSw;L6|B^?dand;6Zqr<Fi)i~w3W;#L*F z5_=L|seK`AgS(ZKkCS}A8(lLI`0czJU9Jke-+cy6sOl`PAh0K0o-#kg3&D2@+{vY6 z5gIrgBz;$eCKjjUx~<|x_yF%Fmpe!iKEf6s_st^QMa*){5U3uAzz*VFyxs`l7T`rD z-mC(SGpIbQ<8Kk)?&2!JXXPg-eX~{h0jj^?+Zt@*uf+lLbE&5e_CRtxgVZE8kdIR1-zQ?oOOkum7%J$Y1vhAd@QS@QDZUwY@=D+O} i-Fhi(m*95fxjSkp$A1H}TDp$_ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..33a78dd499645b706b0a29fff4b83f689271dc08 GIT binary patch literal 6795 zcmeHMZEqVz5S~qwo?}8&Qu+dgvP~(qTi52LKwG;mNqAAkB|%Au#K-mB#@Xh4YwfM0 zz|Y}NAW;dv!#92qV)pEd9p9EaH=#vPMY{8?W}cmWc4l^F^V^?4{{jFHV99|g0z6V) zP4h_C9?x1e_IfR@LXPUSmA=r14EVAL zeG#_T2l`tG?!YvGv+)c83){8z)?@Bz0;d}y6uL>^RH?j8V0uOR+<{pF^F!G$l#;3d zuaLRTZ$mS6u+M$!$xc@UObZ#(u9B^QccS~WIJ>pWsn5NDDHQ55Z;!P(T@Tp?$)R#P>q13d)w6{w&!t;YJ8b1n;999j7RbzGanJ4R8FFIYRG)0sh z)>6W|OFb4E3tF5e%YP|3WNDu(eUQabyfHm3f-FI)+Q$*m-*-9v`&ghI3@3{Aqs#J8 z$1WwpU9N=jDb_+qWghw)*SpfEOM~w<8LqJokI<#LzcC2F(GY8VeHe@@fk5C&+6>E( zD$nq?{?+6#TYBSH+#9jW4A&EeR^*)gmPdvX$(D;Z== zHQ^>q>@)~0xYA?6HdDfU4+f|8u80V<-RII$)vtOm)!B-t-D8$&v+r1H+rEK9sVfX7m+~AmrP?3H&JMK(M?>WUVux4csbgwL?a^v z#;wZ`KWci0@MI_LNSyr}PJRNHo>pEHST4Eo0aj1%ZrROM3!szCZi;rubWfq%{&;M_ zM%olNofqqtF;fN9-6VxKEE4r5{uST~nYw*)o|lWJ3=f;od((Vm;HMQ{mP~P1lrOtr z=JMi>cMFvWoGX<_(s*1aVHn&Rf7xej|7A9^T24)^%7Ks3 zans|*0tY@t^2d)P2ksF#bF^-90P|iU2^j|-5SWSU2?rh?xnYlU6y}Ll5t-h@q=^Ww z0^Z8wKMDXG{51oo@#)~#9ULY2E61CC^-yO<@Lr4f|WA7!~I^Jl# zj;`>-kf;RT5x;~VftYn-;frZcHDMK7mpq=fS^b(n7= z7;zde|0#0C(wr-OR)C{IIH|^YuA)5-wea$Q1$_Mr$lWu|efKM&CmC^2Eh(e=;f&X+ zCx)L09hhQyJeiVUQ$EIwW|lFXq5x2&9;=P}I;sZYPq-4M9M}kJj5$~;Tu-D+?<~iM z(m!NV9$+T##O3YjwX@bu|$I<7&icf!pDX)afa~u}hryL*uR|*qk#~GW$ zM3i|sn19Gt!F^1`nlt|w(i6_ZLFnbB#tQgZC_I;|9LI?eiWwYZkKt!YZd#Os;hi$8@FJHYU_zIK>us$gt5QuwzSyc_&N>GhV(d>4^vkd~5%gjdX`V zCGKDeG#gF3kb0w8^;nF3rbC7C>!NmDJ1tcmJ5l3n19QT4?D!DtuHkx}9)_?x2z@Q4 zeBYmoKp=B>OkW%I@JL+Ej?1xAf$N0)R-oIDEppPK5Jx#a(nRFI6D$=+o=20A2=v@e zI0Bc)TpuYh7C!T^;xIoGabZ5ZM#%S@%ZG&ToXuGsfQ5m@4!%SP#SG5%q+D#!fpo>G z;4W@Zs^2DHHSDySuc^cOpm|b(HwgT?xh+jkp0iyE`Zt9{1v`#zL+%N4MqE!!5f|3} zFuEZi@Mu$qL?LC{A8uC1>-Or;C(8Q8IrBoiwt1Vt%|h{%p@j*R;HM02%&Ei+BZOsm z5ATf9vRj5*cm&3$Oc`z?CcXCr>IWh)9nBE`$_8))@PY}ix&Y643>PlpXBkJg@h!n; z?GaSI-l_cn^`CLH1>5*(Fb01WKkEw=JPSKGD#3H`JX&7E?_2N!yogVOehHtCdwn^> z>u#pkU3dlk{k^wWGrZl%^!EA_db^eBjUtEHv6XPu3;y;pV(Vvky8v%S%-viv_!fMK S<15Hv6W)P$!GibUgFgTeE7SV` literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..d46cf7c21046521f0dc4959619963870e27667df GIT binary patch literal 6501 zcmeHLZEqVz5S~qwp6!IDO(`w3lx=9K-5Q&h0;P6c((s~+OM;RR2?-(A=S{NB`PSN7 zM}hyq??F%j-{C(YX3xHO?OeEXni2t3B-?v=?%A2yXJ%*j_dkFB6#(wTf&&u-z6q6A z)jZVI$848Xg{+2JiT3xRDmz>;EmhU?yP@W4@IdiUc9qAgJKZK%0ms*?i#^b)^!ZBv z#dTzLV3NSuh}vhtR&}NMn0uPQ>ADDnZV)(CENu{&T$C;DK%T(t0Q-qjQsrQpO#k#{ zVCM99d5e0o-4Q<1LI$*>WYg#E@E$GX*S9%sanEN8K^^Apuq{sKg{<`bsl@(N`u+?a z#QszU{>;;sw<|(jjv49} zsL`l+iZjjQfA;7xwZh_tiEf#W&QatRFPRwaQ%09+(}w z=ElXhZvU&+z`q<^B@^e4PhFWJlA@w96>7PjLTn+QcQOYr3akwdE07nR57+UeLg0L{ zWYyuQeL+>s66X|naqI?Fr=d! zh65iGI5XV2IDi!^7mMA2`vj()o}TO?CrLt47F@y|X_1&AFd%=l8#V`4s@}!9xQk z2z(t#tD$(H8c*0RYY4v)C@I|UM8ofL$&@b}meUIqm+1}31HUIN-q`7Nxb!$a-e~*Y zrr26x-PQhM>xgN_aJi zS%Q~H`Ohysy`!_sZEE>$S2#=w-=kgWcO32pcWHTgeVbF8TMm;b)MeHV+v0Rl`1QUu z_1Kzv-M~_*Q-$z+uZzkL!lUcz+I4lUb^Tv&7HKcst}hiu zlug!=!n#8(=4lN&oW|y#e92ud)n1ptNzN3H|B8UI1cJ(j_E(LLqF19#d7*4{eQSry%BU$dx+3cK?r z*#|GI!DF&I?jbqw1%uaiSP(jH6&49*6_(}Ob>d( zvAG-vrY1uD$rPXl4p+X1tgI3#RHM;vm5PA&JezL{4`ZC zr{PBrCo?a7M9#cJu!T$cgp|$oa zVJ4%pnO^Ft*)-!`*-HOtF5#yH3xxbNzR=`*;c)+-KnD2yNdy+76~3CRBWosbzET}% zNFj5;)V#U>ZbpjfjJZzWkMU*9b7w9DW@P`pF7gk}@Wid8g2JM?N#N9T!K#wzw9a zc77%_`MR7;&-m3$A9RK%fCPRT7yHT|kb2jQ&O1<%>E+?W-GKKAEavZMzz0Z867voC zh`^a-srNA8V@$G9-emyJjkCk_%7A;=UE(%mz{o@@gccr^v5@!P=FZM;kHxBL`JU(J<&hMC`RH375utz`gZ&*Aq> zBn2xk57Y1-X3vLk2kt@(mf#b3@DImyIgbDU literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentConfigOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentConfigOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..b0c7724da5c07d0f3321cc15e42f5afe7303118b GIT binary patch literal 6222 zcmeHM-EJF26h4zCS=$XwNePq`=p>ZZf#9VOAk-$129S{4Mv6luF2}nQdz$^RX2(&& z^Y9KxAi*_U@dmsJ;>@nMcGm0c+H(I;Z@ih&nQzYd=9@WZCV&0=>+b;YCEPb)hJY1F z%Tzp2<|B5(OyQe>lEVE-n0|*#rhI8yPB&0o_B$jG{I0aPdE9Ms>2Vxxe#1MCf97&e z?fTx4XzlezA0V^=vjnb&_zv@0=3es=w-kZ-n(&0$CUB{|en?<;*SEO=MFNX`+i#`x zWdSae%Z(pAJ+X7bZEE>$M>tFg-=iJrHy!Q<_h_kj(B{A4xL-NejJFfb>_V~VPQ<%^eg++QTr`(5GKTxP6fE@&)&6cZko`7mEN z5|Yc2FU%*y%6OaQ{Na|d))TG^dK4DT8R%ge&afFTxa6|rbEE_Xcx3_R;0l4|a=l-6 zM^dlqvV5_QYJS*tvD81%yPUvM-Nzc_kV&E2z0O(H76AcXe+n0hDuI#}R!;|*cL-c7 zuMhYh9?ED^Y>1Y}R9B+K?O}^rJ;88w8wcIk?|MqO{Cn?21Omg`(bac&)4=FT^;j3x z0;~}DGsm4I9+9!!&p4G3SkTuCeXWZ)y_?3^=p=#U72q8L|2$nrMmv;2_oM>}6k?vV zss>~iZ<%^>D69^<2>7o&ESy;QF>W68-B!0p25I>;K5# zWUP-%=zLV}6S!3#I`iu1vm&1O1z0EW^YqwGoU$2WJ@3xN#ssd9y66(vEZ4&2bl00VM_Q;=)Au=DjfaD7ruTG_W(|PTfOGS{>@qx68OU?Y2@I8i6@&yK2D41XiNR(}o$aiAPqF83R5;btZe`7!24V zaOJ$z4Y-H37FrBG4jE7*Fc-?f0DLGNco+@q1p~f5_p%zD$C%3>h#W8|@h3ff|+uv|ixJ>H4kg8$zJ)g<+gJhoQOM|Hg{T`DJ!|m!ib1iXfGsoYE z_iZDn0<#1zgvgfe?5P{Qhs^K^oNaT5`yB#j>Wv)&vuna+3RDR!q_iJNDP#rCk#paE z?gU3#hs>mguw8EHJ{JykrRZ7A_U_PHb$g#tlNpvSk;v7J1AULt6)u{wIL${B1%*^!IPXW>zI%|Lg}fa~U|4~w|xwkxDh5oK5JNp9Sx zhVBF$^cYRVe?pmRDK=~gEgdrH9~IFFx%XE{{9~8V{2-t<#t%it(N{4(LSN#}K9f9f zCcTG(=mt6(^Y?{GyYYIH>E`if9BJ8@YJYkXb!!$!z}58F%&W#de|1w>mX0y9W$58E z!E2{mI-RB=neMaXZ_!y8UtWDDP~0jVKCltF;nYQbpxeyD*k$G*FG2>neSXBu6Z@l?he>iGg!+Q&H1LI5HT9~}gn^qD5RY@>f^DUl*}(iDxycIf z)-2ug3TP(O*M#I#Wb~9eJ>|BNjF-097Pcr(Ub@bA#=CuPnM@Ygt`ulDsK{aWG2Rsp zb;*OITdV#jlLTxyS`>KEXKRl0y?LTgOQLk%kM)I7|= zc>*m0>#w4+4vtz`kTB4wv}jtiR7a0$*!?>&2u+pk{>K z(>7Kv0vGFz4A-HDAW3zL?>V~Pmq>AAl%lN-tF_g^T}zvN$LBV?=Nxj6qokRnfyZiz zAG9iPmB6nhE;q@J0we$H6^g*Tj62pyt!kdq#uX7%UIktt@Y_GDk#X!4DEoBV2viac z5ukaIqNTBi>R2J<>h#o+LKg^Esurebr!B zz>m{vB8KNDiN3dLot6S`qO_@i3f#h;DP1Q_DDVy@ z!r{a&!`vvJW6i(MJrD0=LCN=E z8E~qL17-jP-{#;f{wlb-g&Pu=b)W|CUP(XYHZ~ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/EndpointOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/EndpointOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..9f895133b84582489a5ae752d0147b9e29332c32 GIT binary patch literal 5274 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/IngressOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/IngressOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..f3f8104832458aefcc0099e48e1ba8347437dfd0 GIT binary patch literal 8643 zcmeHMTT>iG6g~|kv%A57Bq%1vbVyr%P`wOhuxX2o?b*B z{7JrAWvcXDe}MnQN6XW*Gwib4qp&+q0*?KIingcK`9uufGAn9eCux0D*5K z;g=y>#}j-=rAA9*=!FyYBil>J&Wl1#Ke2o{A+;j{8ibAyS1;q>xiu!Wza zm1NQyB04ZcU^IrUdBIkBW#cLHC4tiw9&kBFV6Zr~PGD#utTG4k1V-Al4}=Is4$hE~ zzrPODdbM3vrG8j%@R}!i7|@0YH)^aN&Co)AZJW_5^J|_!qK4=1cw3B4^01W1Qc7hh zC9XolnNgUY$kgfvox@2@;(Vq4L#!z*wkpM4e6+ zPTww%MUjCfqgpbO_mNRc z1zM6>GG@0OtC;iyU1ZZ3)V(IJRhcmCiWQ zO{*gVxN4^iBpLOsx5{pi>=xOLVBk8_w)ZjdSY@Y#xixpyZsk`|7)t|9M7N~2@TUUg z;I&~m1!oD27v1*BKx^k_)yct#i}k>AvyO)lYaSj35Eyeq->a>Af~#@zaY%0Sh`@L5 z@f~%{5-9j_N3({Rm%zE=R0qp(zCx1xD&Gn`*%U}|qnD!Mc014P9L~D_}IAY!vW#vL06X zCT|~C;PGUuAt!LX*z1t)!AcjyP!4X8fvf%7hVB?(Fsp<77>N5+yY|9luM>JP47?wq z)a@{uj=n($l%0Pa%JU^4Fmc#17J<7(H%^MPy(Ty1nrm@P6FYp2!Wq!W4U#Y_~i+bsZ^4b+_Xu9gABgqhPUGP}ljPPI!Xon(W<4FM~IlhRBhq%FZ?N7QTs9`f7Y(`jD$8Wuj{V zjRiv@C8Njor4;8d)C2Nn)oAIBlefd>cfpId%{O~n$AR1v9qiU_U%UPR-CIAFtx zaBv!*4vs#?uLR$PXOR15tndpA|Bj;p7{RBa0i+$p=WvS(UWYLp4Z%4$k2A;d_W-;B zZ{k}~PvE;3^(_tR1ug2u4%D{|sFyUTm$j&ufg+bW9tV)$mgHA7XxFr8SC5ER)}md5 z>xb~BcB{qPyBgkRv}i?`+TWG;v=X;bZ)#8%G^hmL$GvUqucY1MvIgx-4cZ{w!ubR6 dVPZQU!9yIMhdf&1r*Io)paOI71>A%C{{p_hE4lyx literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaBridgeCrdOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaBridgeCrdOperatorIT.class new file mode 100644 index 0000000000000000000000000000000000000000..81e105060a81ce8a742cd87b45a29adb7a2f2c48 GIT binary patch literal 6957 zcmd^EZFAd15Z+6Z_$7vv(DGISN`PXM)GjXtrbz>d8#UQ$#XiJ zl%E28;y*CVzzlrnM=|V4c71l__|kEkK)+ZzY46eQb9=kD>%af`{Z9b61Dh$BAn;u% zoRVarEIp!aTH-+|l!7;Y;H99+1eJj(IbJK2O!OWI76vWhu+mYh%7o8wdg(qrJfa(d zyERr8?rvx9RwV_K1TII|9`$Rb-RdLeNCMOL?!9}Pdj!(99n@+}tl+a%?sK_D;8MPD zKwz>QxGV)T1ZI2lH-!j98eSr~Umy5N5wFc$%Ly7y?or7D-)f4W>aj+6+sbAtb!NHD z@u)zdCUuTzjaiF4D0Yl2c8x4{jO;z=8d>ZaxoEio3oSp8R)b2XZb^h^$4xXyhet+> ziqWFdy7<%|i?!#CW+0@6D2KEvxbvmuP+w_KWmebxLCKDBFQjCf33+T_xshBTYNMde zU1alEGT;4{%X)&UmJBRv$;VBW%^WCZBI!_Vlap?w3#*Nzrdh-Gwbj6&V4-*7R%5=5 zwgUI-OmMXqXcc{sI=D}mtOu^O-Wiv1Qqb7z#E)K-SiS!wl9WA;c+1*%^?RF#a;;cn zvWuY%-(lbHG3q|vmsGaGyf(EEZ;gv<2@OMBmPq@2v_KUM9Ob~5>{u@A>9K^D`gYP%;@Bi3 zcNu|pL6|mK!8R3~V&XRDbRW+teo}naiC5d{f#hB|l&EL(-Se~9&?8M0jPr&O&l=oD zi+gV3cIjIfOfa3~fRST|Hdu(~GnOw{hazZ1>E!gNE!ZIwp@LMWum%r92h`QHxoDHVlWw- zn|Zoq7P2s#gA`mQa5ZoD3Y*wzS5)CMYvao9v>I4kRa8hMFlPr2^$t2Avh#3K)_F*P z+RwOz!^$k(t&>o>e8JYz8NR%>*YYKAur0sMLyr2cs{$p?`~OT+sF{O7AMff-bxTPG1%NQySLW)<$wJRvv6r=^BHl(GN#8H2#v z8p)~{?JIonb-s_{LfHLp$7&JJ6Z zs8dTIv(IZjwvYtM{xq&r)yUSDJy@jov#nFFni?x>c;w32y|y0?r`ptOVXGW(XEei7 za0ee~MyKE_)p?Kl?I~Et#{3}jDJb`~>*F+zAKZ=$tP1u7Ls$Up(c_;87~WtCrtvO= z_bEu@Zw5!7;ah^&>>rSQIG6hkUj7S56YvWDPDgL1U=Htdu@t-tS8y~5SK&33dc7m{ z23}91y_tZvkcf5-wHt*tpMZ8f5$#kkBT|z%qUU>^XkFH<9 RUA*Sdqi@41tiji?@h?7IxTydD literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaConnectCrdOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaConnectCrdOperatorIT.class new file mode 100644 index 0000000000000000000000000000000000000000..d8a7bfc5f28bb011ce9d7c9d9c11cf90d3624d7b GIT binary patch literal 6827 zcmeHLTW=dh6h4!iFEONqmRo7MO$*pG*oAUalZGZHR8cpHl(-JRVt-=5o?+u#5E{wDz3hpiM$5%@6>R!Ooz zmY&cyEpfjTNWtBodC6}wL8UKBmeUF(6TKIL1%69dtaQ|>G2t=XUV20ik7(KVJZ8zV zu=hHfw<{@_A#f=Kcc@n{?bV(j34u9t@8QF(eFACI^y_sdR`J~$_qbdqFr6<{3Cxsz zo26i$z(Q~TmJq&3!)qjGKK2wRPMg_=<-1MpP|1DIXbQjPFgLhoWHXfpGi+u#R3K54 zT1T|bjAiZ@J5m_FiaHf)~-hUZJerP68`65-i#69v-YQKdzt(xT$J z_}o8>xaV%u7t%nKLs}Eu`r5Flr#PrFqbvR(Wk35uGpUqoB^6Wb0Tm z&;FjvMhvTl^bKmrlP1e%s!B5YFcG4v1`E*@b6T?x+x^JM6^+-oqw zmE+PHIt;bYshMo}wz1J!mvNKt?sram??|sbdUo#14oAEd{l|R^lLvCWSZA_}qGaD? zKkYMWpBzXkTR~pmT!>uxLQ6w~0Id^BkPq!t!LyE`PqJgV(r1HLL7D;E?D#f6GW41eXctD; ziLBVBf>X@8iPd_5RfZQAuyx(5gY{T)Cm5=$7xUk96gi<+CgLzkC5bex<88LMW5*tv zKHFf@>EsIxA-mLN0oGS6UoZ}Z?}iy>L=+e7kcmKHsxr#uL7+S$+!XPg*qLL&1I7F$PK-TQ)d^HX45pt5Co$Bs5TbCJ)jfqkIhjS)2 zz8FGLX#_5#5l{JE8kPwBGCA`k$_QiRUi77if0YH&aD%|pm&~jlmxg-Wvs!^bPET2B zxJAHwxf~OiM;5wG5rO5nkYnm%;UUcva%XaE>fl3l_R5zK1m4#at-8;?4u`-}zF*CS z{$(0g2$?@b_ z#X>a=cM1GDIVBJNa6}x?o#t#(ObG|!jQBgQ>ZB!or&b+oSHc-7fy@D~dpHdeNc?nC zh11A6mO0pD4=B7({c0?+x{hU4&g_lxa5>wiP7BA>_&BeLmV*08s>_{%Z`9a39CoK* z1E=DH>Q6zrZ&n^9YJ}N|nxhI1`2x5BI3ULnK87}!g*kl6;ByMnc+KGIbNov1p8W%| zKP={cgV+DU)fBve*SYY^EG*)4E~0`r;WDmf;0nBjRBv~v-og86w0C3BuE(NXMeatS zU5i1x6^nK~0h$qmR)|GgPJnhZ2CW#2_5pl2MA9kLVPu7mV$kl!q7~rdk!ZJL&^BYy zK1qO9j6vIpMY{u^4&hDtV@_!jRu^yquA2J7$uHva_^ CzmOgP literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaConnectorCrdOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaConnectorCrdOperatorIT.class new file mode 100644 index 0000000000000000000000000000000000000000..4410661c20e1a503c569b4d83d3535d3e6ed7bed GIT binary patch literal 6939 zcmeHMTXWk)6h50K@g=4yq2*Re)iebgf(--;)1-magicx|nMvF*Jg%jUy^SS#R%?^; z!YjXl7lsFZ12ZrK@BAo+vyxp)$~snx)3hC4tlQad&u!1mfB*CQp8#+h)-y0cpzaH+ zBAG8M4{4WHxL5I|;Li8F;9m>UoMV=q261Lj( zY`)K}Aiio$mGp)Y{u(#+iHMaajaU$7lhH(*)Wu{VG=%xwHbxx5ZKnAcJ$R8sH#W+^ zhen`1Q~FM6%`O$3VqQ+I++D0hTwO?yT0kAP2a>n^p&C1#ea}?rl-`+=$1vff(sms2 zPKUQ_?E#8e2$NGUt6)&sq7L)14r9fVu`fI)$U`HeykPrG_zG1OTn_hrcxzy$)AisqnK37vCU^)j<2ciC3Q!Ir6}!XSY;)3a!6uNM}3FDGS_`vh$B^cyqm zx3c~22l*?O%t$)JkC%5kuH+8eaJ$^+$nu(MJHirxK;G=@eK`wn67oZeW~{&Bcx~n) zY>bWah0m(kJY#r8)e*Reraa<ri#FVF8G*n!SJ{i3As5wM&s~9_4Y!P83f*nC|q^1 zvCfFVd@-r+Qu0L>773X-BmJMqSaITXS^Ejr5V(?1YJ4=1g$f}{|0`@T9ZFdmVR(p4 zCkWgqn#n3?Iq99Hy(}yd_;q~hPHs6OLc|^Dcw$T%yTL5_YpyD)#Iz++M{LxBSuBCv zE^oLvZxTrU%eacHk<&6W*{~l`d%_HA%(1+RMOeWcj12K{s!LlP9Es!YOhmj4+$L~7 zuDJ|+p@!_iXgvdKID=0bA_LXfWIjykxaVfrVAXJ>=)*O@aXkKIfT0hjU>fgoc%OkR z{^s!M6Z}f>n*Rgx-_8|&gY$pk(*(SXzth2&DVW3iLP!O#z(stTgiG)$QoYurdL6Gv z(caLYUDcvpM(#$TUD2Q|Xwj~wKr=LGB`w-~3bgAQw6YfM2D~#w(h1aIXoYt*XiHkO z61+DO?R^c}nilPY6li4)+C44Whw#x5-jqLvl76f~+tr|*LqAns`6=8CuAjkIcrBnu M-+~obg)iaGzk3M5zW@LL literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaCrdOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaCrdOperatorIT.class new file mode 100644 index 0000000000000000000000000000000000000000..bcea4bb8086be2e2c9c5e272e42838130064a8e4 GIT binary patch literal 6739 zcmd^D-E!MR6h50K@lOmXp`}16C;^I1gI#_KOp^vu6Ec~q$xPyg>2SfUrH#FfC3#kB zlkx^!amNM2doTktaLFlTTfA*Ze|NZ?>0JsBd8JHmO zFceNjvQSnY(JrmKy&rfbXfr`&ASzC)6G|rfF9ZvNj&N9Izf)(zXSls`kM8Z$ zs&KdBT^qFwOcJ=LQCrk+RJQ7mm?H^H+gt1FYuf~}wjDGYOf2EMW$tsiLf}HNv`b*J z8n`S2GX!S)``3gBL>68kh2;mnVxiS#uH^(?o42Usfp4`%P;W6Wylv%kwI;J%=Cr6l zqBeE*X@gk{JSfNFm3!iqWAXYgdg7J);w@Niz(UIpq~%fRG%bnn?4XSTCE-z*Wu?oq z;=265e-?4iy>=j^g(!QpF1Yi#)&)oN zqoQ0b&Gi53>cxz(oR=i*~=ih&*>m^&hh~_t|F0!|tZ0@*jaYJ8)=gH_nIg%SqYfA%So0 zC)Pt@Yn1IZD#%u`WG8AAe!RNf@g?`zhTr8OM^0B&hY%HS0(rZq<)tjVPKayJH}!Um zP;`Qgu~9x7r4pN2OsA+H0+-NU$NVb`ZxZ-re3mdO3#TZ#=r$4msv=}zp1{v%%CnhGG>}<^QoZ3b za%3RzM#6NeyFAkQ;N+?p8?JO{z(oT8oUH*(jC>0FnUfN@HlUuP&36_mgv>rC%E%cW zYA_un`hWDWqCI$iS?W2}ZWcZ!@ay9uoCR(Iq%n89f7XsEs4UvQPXoy z0=XUD@Npy~km{##9fn4ZkLebtqu;C@o^?0Oa|`Y zH!WfYzED$YJ)6$JDyD)#-DaSAWV9XSS^U-gs1;IOO9=CT^K2Zoqa(l+Oyg4ypEHof zYYtbR;8%k8{2!2iI9K=$Ui=GJ6YvsVr}dX9n8W8nLicK#72XTz N(YIk4R^Usx`yWAEV?F=? literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaCrdOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaCrdOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..81c472144d645902d7da37220b50b0c2e2008de0 GIT binary patch literal 9966 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 Wd=^|khcEG(Lq^|)6KEZtM^_2 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaMirrorMakerCrdOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaMirrorMakerCrdOperatorIT.class new file mode 100644 index 0000000000000000000000000000000000000000..de3edc836c38920d145c321afee035c6411403ec GIT binary patch literal 7181 zcmeHMTXP#V6h2Cm_>z>A&~j-hYy)lW5^OHzGIg4gn$QW|Br}N{h8bSuUD;M+?|QUy zNO|W^@WunfPhbXS;GG}EaI|aJ8(EIm#Z748Wv@q{&Q0ec{rT6gzXQN+SWm$e0XGm% zQL;c5AJPL_vbkd_-%!IT&@y0 zlgsZBm@fM+OTiq0h5q<;HBB1MlCu{dc#50m0dpOjRM8t zQLP1~)`H@?@Whiv-1Ao37t%tM8m$WMd}=w=Qyf&8)e~Q*>k|v zYN5_#4^8P|i+#JpsQYMFQrQV|I!HcR1ka3gGzidgp+vdRh82t$W#5zRP%aPH=UJ0Z zv)!ie@)~!-_-r(t?js}oSU3KdLb z7-i^DBhdbJI!|oX11dPh9G_UlyI9wFrl23UgIa(OByR>o_4ah;J!P>IdTC-VqqLMr z<2vTu4sW`~#dO3@n8dod2gA%3ZLt6=JC@5^HQ~3yY?UAj2v%bvP`IjyYw;jZ9uf|W zcu(wHx)ej*C(_J6Bu}OzeUfCOHoPYHm;3k9IwwzjE#v={zq~&w)GgMQGo=`qd^CJF%54J_+fIUN|brV$o1$~5&tUF zq~QvIA5WNBJzfp`d`W2ZQR(tR>E=%!%S=^g~0Wktyfm1LEp~rrQt&YKTl5a`lMsJ>+$56f_B4Q z_b<4r)0T9%ja4Tbm2lUYKxUWMJ=`f1IN+yA6>lT=`fPnu!JzyBbExf@(khmB^LBsR z6JKWzXtRR{0Qfi;6EOw1@kBw_K??4uLxu1tAq8tlp_?QHt1vf?m zxB__mfQKX)MqvhK@hOAPDM;frgKszSFTs2EH^_dyIR6X0@CUw4!HamE4gbu*B0kSY zRPYj<$G2&?052oeD_yEr@ji(5ngPu+qFqAnMxk9cpj|bhy_o>bGN9csqAevrd&_`U zG@@OFYeOWRLLEj{xNbnZX++Dzjge^Y7|^~nqP?2{tzbagHKM%-?+@Wk`C}yM2L`ln f3}|Q2PnB1G1Rsa@PvCRB&!b1*f)!YW&*1LgH*Fel literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperatorIT.class new file mode 100644 index 0000000000000000000000000000000000000000..e968ec89809606fbd5a594470f4a73cdd40e16a2 GIT binary patch literal 4583 zcmeHLZI9bT5T3oJ%}di>xl$+;%J!frfe`aj5NblCaw^gZ-<{M;ui_Kh*n7#g&Th0` zM+ZNIpTJ*00;zoG13w8dYsVzG?%A9UXc1r5-p$OjGqcZ(XYRV;P(|9~&ZB6=wdAPo>?)t{Ei|@= zRj3fS6e9*qj-9>HL+%*@=lVhlGazuL)jl9l*+Q)<)CsIFW$$XObPdjv+IRP*-71)K zpL%LK69F?qNjlSN6!2+yn>Omh38y~y0;W-D#=J*t%;~03-Gv+7)Q#@Kjpah>MtAAP zCiN8$sZ@qeneisnAUr>sq4BHm7_+X8S=Ui+X8Ip^9OmGGyOoYLbWsQ5f0BZ4Bq5?D_YxqD=|^dAT_$=QS&MHw~U%y^@IV4aVp zL(AGHPjyw;^4O};KPM8MV(w9-2=bjv6Z28X3D?3Bl8un%%tNwrGf_UhvzYHHxyz0uS83r3>p3sHN=>fp)9ymMU1NR^Jz6$xNit@UP42 z_1$dd_FNnAWVH3W=cXmPpZqfD4RE(>_abS;lyA$q2n9yxj_rTqUJrxQa8ug%YVax{ zzn16usFACH1XVL!fs zej#jWy}U}`?O}W?Bk=uc71dHzVtaVv^4D~iR|>3#XXh-4@K*c|ft#hau0jVd+u1r) zg)UyOZDgwOKBkp@vsI-EAL1;n!&SJ2y4f=%(A*KBZCZwSB?;jM;Ef&sGyweQp@DD? z$12Wl;VQvr<0q(nwbA$inm^-g4c2kAGFJW)j?F|0UVsgpRp2tbh?-aMeGOiMm+@(( zuj2Db)K_v)ujZm&gVzx6c(m7Z(5~mAy>UXcPA(e780OnnL9dheZRXf^I|uCyycI|8 Y<|2Y`!^b$kh%s!#yYL=3@Bw`EJ3t@Ep8x;= literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..80f9322a4b80db516cdbb19a2ed030c6ae64cf04 GIT binary patch literal 5778 zcmd^DTXWk)6h50Km2E;(QUayrvJJGgiLuJP#I7ODzzl`^x3^LBGRQ$Z@;9DLuY5*s+6j7R(a3 z9CP|C+_$$nkGQJ|Tx^L@=r(~1)!HtB*>&7!L7Bk95c|1OQkCF2Qd#~wG>7?z+@r1x zdctQ~$dLAw?D#y0R%xZY)8*9TuFn*Lddxjw` z^yu2)eN%>;EZ`Bw9rqp#@?ta(T3;RK$ht3(xNZ)PAC8E0J>AnX%k6f1s(}{F_w@qJ&A2+=;*GTdOj zYO=Xblg}Cz5$%T_-xDFWqdlqO29;U%E9L)_vK1)7^YbtVmk2CXo#7Oj7_Moi%moLn zw%HGGTHRqdI1*TNq|5wWri6JPEY9k#hzLA%{-&9@iQ{k53<=zfoTJZYbrQ>bU5nakT^KV-VE(A7tOnXq+I6vq^bX8bhWs_CRsg@%op>BiIk4i2gWu2gFyg(>dR7^JsPu4Y7qzERT;mcx^ev|!3rS@(^KnQOfPtC z6i83(iQyk=OsDPm#_0=Tn)i~?GaazaWm9|$L*R#LHSR){)*PIXuSGh81@GbnQ0Np3 z-baH>He(AuByefG=UVVF-lrMUSnvr3nfYdVlLc67N@1h2Q4jB0epA`v6x7epVhs>EUAKN0|Qw-)3L|p9TYny^PQK z1O+d^BEHSS6?hR*O9RwP_?fbqQxdk9GuW0g*LJQh|0@5TveECCZeK9(qLcEVZ71~t)21XB1%?f`ZeTyX^Ma-#*W?&+F~)fBo_+04&2j3o-=uBH@-L zi)8tcbLf5w|1{ zgVosEXL7Rxu!HCpOc6MjY~ee>etEP0h`Ex$=_(JntPwbsFYFSSS_?g9!3=@9F6})b zLXm|x$eHr@f!fd4idNaZSZt=yWtd9o`Cb%*`r;ax5xM-S8HbRfCbjA;yCX3MYnfI{cslBdP{qERn*L;qsMGX_W zIh#kam?Bm+i)yu!E0`l$O4QyKJv7SiD%BV1;NFF{A-|HkXol_q6Zt`ri*$n@G4EJ6 zsDeQfjag9{Qim!%Zl=yPzveqpgibJkQY%m%(Kztf9uLq(_d=04?Jx$e4t4;}z|`)| zQCH~2(BOOtJZPHxA+E{eds9lDOc>jPRXz{L8}oBx6m^k<2=J_UXKKjnu!Xy2B9bCf^fwut_CwK40ibI7vx|27c}2tj184 zWqnBCkI7lqOD`!2%!x95&xu@EL(cGd~vGLh~9di!Jz)z}f!l*MhGw zRcI7y0cMK@%|8^c7A#|MNu!VjcL_`|3zbclXqGZw$yAJW`FOipLRL z0lb95i!lHTe@(+_d|EjA9A^o>b59`q!+h>%nEee$8JNSTq5-5mhtJtI6}$=aIGTd< zZ~>_Sp6I0Khz@t literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperatorMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperatorMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..28edd00006cb3fa6a04fa22f29d919449b9205b9 GIT binary patch literal 5248 zcmeHLYi}Dx6uo1dtnIi>2rYf_7{V(l)CP(~Ny@`9uBg~FQC<}Y35|Cr@zm=bYj)O3 z`C~{Rfdt=>_)Ca8>(|C{v=c~ah4`|&GkfOTd*{xadHnw8k3R#zCveY!9D#2l19(ueReRS0Tsd)h+374jODouf23`Evk{8A9XP^X?h$L z71N^?<8|e48|!;7I$fzWMV15BRKmMMJr)`dnw$>9f3}c=uC?&KW||^zsT75sgEiABYe&;Q;^OH;V(EMpx(tE(_)lq9_ZEi1dk5 zl%?WMBIp@DS%FZ}GiVU89*e*?VVw||bRSsRvjX8Nr5SdBvNJrn3T5~?T9h(y$pFZ} z9ABw2!0Q~d&TGN636t(fTL*1%R()?fMFe_%OiQ%#)5291!?J*@7ZYwQC z*_N#Y*WuMNTmeep^76^Oyx9iNyQq;5;tn1cc8v>WM=m`U>$4YXw*#AZE0<$&}o?S*G@bFvVnRMD7ix=#Z=!S@T*0thb=NP{j{_f&#mSRS67^A zzRj7x*Y)u$nWmGPyJn{8tZP&lvDaG0o!jeb<`PvO{_5>*avW1AfINdw;t*wY`u$FPPsj-Npd>VE+O CRH=*r literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..3a51f3bb2cde7cff0dcf5f3d9297ec3f92d18327 GIT binary patch literal 5170 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..85d275c3c7423614188ac3ad549c83ddcaeab134 GIT binary patch literal 7412 zcmeHM>vG#f6h7-FmF=cYNmD2^z$VbvrorY;sa=O8EldZcVd9V(W*7!p+9ccP;#tX= zz$5TN%(OG`A0C9aU^uHwEIUe84u-Tt|5#q>+i%Y~d-m+N((ivg`4s@}!2=Bn1itr$ zSr3>W)E^uBMxA?gKM>sciPya@6Gq^Px@q_PfQkMM!F;bLOjh6Pb(nA&cCT-EHe2DY z#oe9txZ@_WYA`|Ia!73(?oNHZ^O%_df%8r7@}NcFT&222U}Dv?mtJuO_XooqDjydhT>R5m02= zHadcvcc^K&(t-}7iTf{*&tH`GnFtP4a~UR3FW~mrfS%Y-G9~lnwab+@VBQ7B6O40o4u$Zjc99b7r zgQx%N+{b4zLo)?xwQ8ndM!=GX5j_?Pzp^FgV37`wQH|EqbLp$&nR`rBhFw~uYy5y& zhrXkW!;p-$pn*pXD&tTtr9zq?DQ886j^|7T>+d8At9}n^kwx3D)j~DnQ{vj9Te&+hRfm&NHrbV}orgsA5#UaZ{1W z*CAJcq?U<`r;p*ZS>U;AMz<1mUZl~rO1V#auEn;wi)DA)6Ja4fshE{ZXEWo^LgaIL zKH}0IEVioD>KNwo*AKrGUaxzOC`>%P?}>;yd4Mt$;o=lb!X*M%D|-Kw71ff4JcUi`SV$iA96Z!* z8hEfGFr#~>VQ(3N%XWNoBG~0VfgkjL_vqLlP&Pv)xQViaz?DihWp=n25K?OM9oGnY z0ui^4BAWVeU>hy$b$z4f2Har}-F@zJbZuE4w8BFrdREqxjBga-H3EO+IDRHQPM(F* znQIXOQzF)3QCMk4&~EFAe!yrI;SB;$|Jx8G!z-eh4@RJvxJ+O^EBEzOfk1y3NMUw- z{-(GU?&Q)2FT|4~im7dL%;E{(WI3M2w|V~rTZ9{g%ssQoB6IJI6)(Q)i%zNpZd8s| zV|`FS;XYJ^Dk0yEFQmg8fFgYc?NNY7(^09+JX1kO;M#F7N(d}f^iZ!fj?Pt8S4%wH zTz~#&3>jPYKz&X(q?&6SZdT3oBiy;<-c=*y&++Aw+J8mDjF^o1_l^|u|0;1&xV6LY z5?^qsUFT9ENi?$jBoV%=C-7uk@>QJ^a@28VwFVy&SWu6v!N<5|4X2z2pAxtG-d?6J+4esITAaz5gm_AHY5bKKK(*YhS#I4uV%2$WwKsRvCb)2U(aBj&t!cQC|a3iV*%}rJfF{C zyP3)MRt~neGuW0g*>1wEV{DVN71>tFVAC_%-htbPv$B}!ai8_w4AyoA>p7^SB?Wjd bp6&PHKDK9}1Rr4bd;)jiE;OM9pTo-E7}1Du literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperatorIT.class new file mode 100644 index 0000000000000000000000000000000000000000..3466faa348ee0bb9eee4cf7082811e49e916dcf3 GIT binary patch literal 5024 zcmeHL>uwuG6h4!>^`)jMDdkoQ(*ThT!ONwf3I|IiYNf!YL5Z6Ri9h4ri9PLl$C{nB zQeJ__;31GeD*xdncoM{!y>yMcFiQv^q5j$RjK4XzIp>?R^V6^2KLUVH;G;UM5V#vD z&(S>6&V4p#j*w2Im6(1l9695PX{j79h$GEaF`;-QW94z@K|JCrN)66Ha~Z1xz7m#=Hk?%;~z2z08eX?nWmaX7*MPs9_l2=ML6L~m?UQ-tQ_WH0dPH$KE0WZ@31M4 zu)w&#pOt@6?pvQfCW7ripv+C9F?qNm!cn$j%S;ajJr+giM?M>M60e3>P}?%p{8(=$ z7N^f{tGO)Q;)7}KR(?TcjG?`^fCumNW#AjX+Z;?X~S8#K;Ux6 zEqcH-o%*InTy-&*?!;5Z; zT{~0bn&yERhfK!`t^TUgqAhosulla3_w;FwEc}(9rs+R}{s2{7*^fglrhF%yi%4Kx zZkir4>6bAqEjKT>egj@6Vb-u!~%l1H61S~sjfmdK&1Nm1^ccU=xhAifv{*guC z{Fv)KCB`CT0VXOYT9Psic$JWEPH(3xM7}u6EMX{s)lM>_yBf06aaIX*>QtQW)UNc! zk>Ea3+fpA);9AFB=HbQqM?!4C>jWO1-li_Av+P@i9I!)>j}DRxgxkXK`6aU=FQ1)Z z@=;CT+tXrlJ3;LXPfWXQxA=5J7Ct*?L5w#VZxL9x>#f5k-jXcyUmbc_#5u{=;a$8Z zF%hc6`(_@08E&h?bzHl=dj#6MA~GG?5Wo8(xCVIDg10?@XDnI==kQs_(RG|9_-_3G zjW5?)-$DCF9Ie1AJ`Kj;FXFSEqTpFr!%+<`!E?CsGX7qH=ivo>8}y6#ep2d7B~q`J zO1%QFpu9hqcC|#>Mya&dPAKh0sWgf)EVr$OUZ?R}FR|^j5@~1PjU;k!W)a+g4{>|} PW7vha;T>?`J^0`^#Y$(P literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..27d547ee70046989ccdc69a79199b55e52c7d46c GIT binary patch literal 6770 zcmeHMZF3Vh5MG7A*(N14BrOHnDro_`q;}t-*cd{f9oh?Fl8_D`&u1kOIiEZ_T_*HD z^k?)pbf(O--}<5bPo1vrC4R|)&S0Q3@I_}Sj~?x=R=X?Z?|*;)0|2hUZ3`v{{1iyH zrdXhA51l=y#zieql6QXQHPL0#Q9{;SFANluy#dJr5lWZUcEc8vKEvs?HQ}+A+1DsJpB+GeijNCb5qch}iwbb*U%qDVDWq?#zw8%PzY z_7qv5ZNUQS3q?DQa(AdgdbZz1;rr>)YE^Bus+PL?%!|d+^G;VtMUiF8X-V#0p|0a= z30jP%>c2t0SS#%@srF5Fk2X70+%o}%+o?o#`aPrs6(}` zrJ}Z14v03g36^Yu31(h!6@6Utwn?sK&j|vMEDp5OIZf1WImH3T615dafB4t`L^$ph_h> zb?15k&Jg$~$K5BL@pSVSUwKL=FeQ^ZCN?Y0Fxn+MO~Yud0(?N=@yj(qy1c=f`CtSJ zsmcV-WI4U9g8(YJK*%rSQ#42L$(7W5HHE<(Jz&0)LJOD=nM=;TEHtj-10OCrqRqE> z@6uF&^MuU4*(E&0(PK>Ss)J8D@hytL`SRhoXAc%280rg9A>{t}OgS8C4emN9j{!Vd zInw8fucja(aQaC%bOP7Qc2oq^4{uV%HkU}4zryEZ$jFLu2#i`?4b=}aKqLN3Gs*;2 zLdKX3&8ixlVnm0_5s)?H^{EE2)LD<-kH6!(%$w8Nr*))$I*#5{3H&;)63@Khdevw2 zP7A&yuwY)og0C^H47-j6mkFF03`rJzi?u^qWLSU)Z&I7cf@^v_aTN=$6F3?jXbYAG zp3kFd&w}NF_xCuLVjZ@^1Dz*z85Y1i;6ptAHvquGUq|5>wifoj!cl_X(qkw*m?`}R zQ-5M_0;aLm7(nbvY^P!rybUwhn}ky^i!w6ij=Q3H(_OYHb zu)d$cI-kkg= literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RouteOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RouteOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..9018f46a6747375c457bfe27500b9d6017bc6a01 GIT binary patch literal 5550 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 a$M7XSpMfG=!|eGSZoo}wLJRJ|-G2bGrwNw; literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperatorIT.class new file mode 100644 index 0000000000000000000000000000000000000000..a70893e76dab779266325e4ed321118528f040d8 GIT binary patch literal 7024 zcmeHMTW=dh6h4zU@ug`}0xg#kSOOFqg3YZE>JTXnMT&45l$anSBsAU~$J4BLtl6=Z z^1$Ch0s-$lB7P6z%zC%>Za0~A5`&8R5@$wdzB$)#&dmPt_s_opz-Lg;!wiA%eQDPe z^HuEu9ncyVHD5{I{ejm+k4dV8tl4hgS4@s3B=bdI+N^fmZ!zgHTwXh1a=>l2W!s|f zsl9ORPBRZV0@ng;mwHFFz19O}D+2Qy+~aDKz-+m4NFcW@9F~V7fu)h`Jt>7Oz!h@! z$FDuTsXJhfWs7c)yHs)ESv@IQF6;VttWvSrVV1*emr4}sQTv!4F>95JYG_b3GN>9F zG@6JEs*Vg=wH(2G%M;4#Qe}56h4Ad8hsuw`qxY)XdsVG<_1v2cwddWQkjg@oHf>36 zuUj_tv<59^Mdm-Ll3@@sSd?9Iz@$3KfOx5LLLQm6yd04rqxy=w|IT(7Q2O49VxIF2 zSDh49EhQ{!sfRsQDjw>91=7B*-p8|hTv*q$US^#}EmjwK$-<&R24J2FDwKO2Cb=$A z+QLMlHkL0_9pPA8;rKr7G9T%IIr|}vjmT=_%SVK^?Q+Cii|?HnHn^XZh%h&+)c4Wa zXzZ5*+nY!g+rm@qM6D(4N{%a~Vp1D}!{WM5B&;o&XhCF`VbLCzp5zWQh?!$!0C@5} z6%SsNk_NMboHEEv=$ecXi>qr;AufEk&s~Q}(;DnTyfmgAr-*|rLYhZH4)77uWlDIv zv{xQ3#LI!+tCIOX-PrWsXw>0}1!k*EgNisE{Zg-e{+!GuR ziL=j~c&28o!gDQ}Lg~i!FjzWP6-P|%Nq)pV>Xs{3TZ*nZ^|2pqGwJJM)QxeM`?|K$ z&g)X~0($KVhqpO%rlQwAvxR4Kmk;j}r)9=~N>1^XfrezEn@mE}N%M&uJ&AA$3UGA+ z=3tS)^>Sl$LmL`f*EhJO22#QOeiv_qP3u_b_x{IGIx&?h~MmDc?Km1PalG zkHD>RrD1L|a82=mA9+;uCF(!Ov}mJ|JYnmNxNnnV-E1Z2qJFBriAvnu$161NvK?>0 zeU84|(zn1MOVM?uMwC7E0=z`XUm5Pk(Fy}8m|bK5NV>ux9{1Bk!qe(l<0@r50WP1+ z30xVYWvnI4#kgu1{8tG1>hgjgho2}I|D%>}==kW|A#g*#?rcj&6$>UGe$KFiM0P+P zOm-mw56(Aqn}gALgUqgFh|bfdDDggE$h>J%%+sc*_}?`}*g_=UObFagDY7IFCdZY- z0+b2-nW6SF9*fC3H)QAqi1ch^Jo^uVhxaeI?ypwj8%1Z;PBVCnCh+TJ^;qV%V5d2S zHfW(SdRWA+Xl_8=K7J#p5m+^Al!y26yF-#J^6(*n#kk+{a2wCp_?+%8^6&}Le|$b_ z)AH~sq9^l$z{2kEBGklpOCMeX{JeqRS^(zpzq#OV9!DSHEWzK>FHrb)x%3k({Enj; zSPCTpWv}7?3qvV*29|M@gJ1j^jl9s%)y&*>lABqkI>#qLHjNRZ5ArH aW(M94WAYB%!SN!-xeD*W2N>s%Vf`P#@HD9a literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..0d51719875c72dae883ce3c25327165003a351aa GIT binary patch literal 10775 zcmeHNTXWk)6h50K^`)ULy-_GoHT2@pU~?(Z)*&TzTPRhMl7w~&4~!yj;%#invsz~Y z5Bvj$AHXxep))W;pDC~W9)`1$6+HntniFyyn(v4hjU0 z^ki>y?(#ewA}5}F<;cf2w`kq4-Bz15Ex}yJXmfY1Nn74^qgYsNP@_)mro~aHZP}aF z1~sObTke`v4oxa|P3qkUO)B?HnlkDx^$f=qM#~a*!w?8hx7(jtZb%f90%xO^0B!ydR7#Nm~ z^iD;?tsC>*>qV-cHi1H5sDLM4unKG?^Ed2vO(CE!WL@Hsq zO{o@yc4!tYAyaZzry8+Z)ABrxOiE{@6wgr6gszG1R>DOI)r?|m9J_)AucJyq!_U^u z4r|sa&jMH$tz820P>m)PuCrjZOMzB1M({mtFwf{Xb-K7vT1KIPg1L2CB&-5Vj*GT zQP{bPMaO`xQRjsR$lv;1l=Aa`v2cqb{bRv*pSx{qBN%WD4gi9*v}JK-;pk(ps}@~n zr_kLg#x%#X&k3@0E%|ECDv{>)nz58<8og5StJ;Vt#GbW}!f4b^$-sSz+kWSf{Q*>; zUX2-hT9kylYYl2|wq1su+ps7I3jbwlyN=D8ENRGOPsKxWT(Jmwcxe(Q;4p!cC9^l$ z4C=b79DN=!u}E3$v~ZZZDnpvUG1IlJ=7VmCcW;i12J;Bm=Dv??s|1R@BSzqOX}V8y zKk8AWu);PROLRCYd}&Z(){LL;>Kv{*vyAg$)}nWvE#@(_c3uuR{f$H8ie{M8s(E;g zz@G`mzTpbZA^FdHECQ2Zijw@s{8gE8}KG`Ay`OpCb z&Z~mKjKZP=rU+Ti&H+()ory1QUx8iR!bvFoDyFKA-h9=l=`qio!i@Z6ugH_G-?g} zbCurp=I_ftEB#_4-uL;%#z9jSKgg`_5%@W~Gm?2lMc`C7tR!@|AFh5adFKk5_$E8e z<6hc*2ht6h`%3mO^9^*2`sk7l7^?pPEHqwcu>RfzrpeP5{cT9<)fQXs4z}Kpd#_N$Bd`jSO zv~JG9P3+3T+A#;WP$KHa9NfWqMD(6iGY6kzijLmz;e0`0!r$c_n5as8!*j40dC$x5 z&2w-+@}gKUA;GSBA(-FFrrCpYfNzZ93v2*I{51gw@iT{4SMV;8cYlNYqhrMa( z#^4BkN*O@eqxd-)NWsf+46nxFIGn(hC-L_foPt;ITS}kC??Kd86{r;@>X|;&*EOhb zC{V8`QO|;bTB>v$Lwy6w&neKZDbe2ABibz`+IhGzL^ruxfo>NSx-BWuN-({%D{m_; z?x9{*psp%V3A_X4u8u|gmU~?3+vlDS-&G(!8iM$~*6I%wXx}Q)KHSkyo+mIBpN2zF#g{*Cz&zC8Hhczm;T|l&(m(yW8HNA= literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperatorIT.class new file mode 100644 index 0000000000000000000000000000000000000000..b4072600412c2b6ccb20fb21c5a5e6b666496f50 GIT binary patch literal 5466 zcmeHL-HzKt6h5;}>m&``cAO_?pE9cm@UKL}e+xMEr=+x4SRbG4XIJd}}gx&1gAa20S|Ztrq66)xXN z7H#z{s1Udqllm+e+B<_s+|>lmbwwa_kHDE`YmY!>Q+nKj8iCaX_Ks3gRpC6T|8+kw zyZKY@QCE&9!e?5@fKHSg_LJJF<_YSKgOnX9FeN+ zBf)^vRQ*%r!b(%F^g#(5mBL9iETW3fIMTu|0+!%<66DT-=7IOE(4(A9sFsvb{r!a3 zYkNld7#*5OIO-{f!6r7$GI}IF=@_G$qD?W3c%Wl97r}@tVf>s8FnE}YF~Idmdh~WO zzRSiu#2Dk=y(9@NBEI|eJRNNM0y#I5P1C0%!uedfyqjQpy*3L&R4x4@Y{rWAF~&A! zp!tE`NR^nswCc6&o(1+ub}NT6@|HuULYG4qpmxx0mGF20toTR@2%baJCC8ikWPt%< z2P?pw&`2fE?nG|*jj0XChk3$hkY7f^_qZyzpd=VOf*>zR9?mqoWk4n!B^f0|N}p>P zY_myowix3&CTUR-(kSrwz6dZE?MoGBr~EuNtBXq~Jw3=H9mwI+e(nx3TWre3&oWST zsKN^kI13jDTy8pxE_fCU9n&SRIv5FeqcOJIeTI!Mfi*|E%->^5m~k>$(IXKO_|EyS zn)(ibYT8W`xY2Am#Z?H`)ON)%U^-GLxL;~f*U2W{j*}$0`HLyf^FdmHyK`8t)5EQ= z-HQS(#(XQ7icp}bZkxtB{)j+J)txlXJ5_ja=TI6_}cy{Zat5c2o(&i_Q`aa!X4{}MlQhHdGIeZf7ka}xE~~;6 zXUVPp(rQ7&S$t$;X*fG&euQ^V?-5upmcxP#ywA!eWeeH_ti((fe27k!3`~l(;A8Zw zWFoCl7TiRl>=_eiY>Ut|#eMu-58+L~8#27718fXXR5*vf7LIP>EWu~}7pOj5tN#Rz z-*B`7tN3d$27eKM8#5GKf;Ajf;6-=|S6;^V6}SQ~mao+I0K4%-=cJGR_Ai3M-Kr#QZVHf+KB@B!HH H5q$D5T_X|6 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6dfa28cb151b97e87f0c3b2da89d78d3f9b742c7 GIT binary patch literal 10387 zcmeHN-E$O05bp_ry_}I?07dy)K;WYB&JR%Jj#D^5kWE67NR^f^lf6l9$lmVN>|8|O z{9~;0574qotMt)Q{|_I1_Q|qmKXSRdAv>Eo3_)IQZ+Cls)7{hE)7?A2|MTO|0B{B7 zEf^#4St#6!WTC7)pzE~4gGwj`Z-2!rL5B${15t6kZYY`PJrFDmy253ZweB(#KEvUa zMJCp{%NCMBONeN}IDrEZtVjLT%EIyk=1KzlYTW0tPGC=I=01V(M$lvyOc0pr(cTau z5CwRSOuL`>YCdnBHElO&ceqC-4}7~Lf@P1j!^?JYVyVUKCUZS1kf=l5HM+{|(>y3A zvXoO<%84w!2dOOOo-C*BX23$*52W3u(rwui;n~9uGQSxf6<1b@D=V(c+ny}up0_)J zkT#;M&}G5hOSVgW#lbSOQ}LfsZbwUr2^i>eoeB9ci!KnWStOA?bS3w)2o11y3yJ)) z!)#3qu-h0rY+N^VRp!gcmAKzxf-7I5%eXq!ML%P*6*TRu$^ATSvk?85HSZ;%W^-Jr z-Ps5`4UZ%0Y%+0rb$Gb(ECr|~H1&Gf6^u%jzKD@AqJ*XU$^d5VLHL>2@phAl?Z91Q zqBJPUtUbpcvgU@!DA^#1#%669*wj|y7bg-eno+5BFr!Qt!;CtEY5^Tt@FvS3Yj`va zGiY*ZCnxy`8BNwDpB@dV4cRm_4a_clT?o}!*|jeBnoMM@(V_|BlP*J?J(&q?C`(Rb z?2il?IyYn?F^M#IXMjfGH-jdpQ27{8N$Y6mSBYt|x2cd^iek>t{#Bo`d1!b2CR^b? zZi_2{h&IYc?KqD&YMU9Mk=L0K#kPMJ^Ix;6Z~JmVJR#5-=91W-nOtTfnMAu}+TE#A z!)TGuwM}BnQ|tb7w3B70Mpk7)q@OEi;Z3s;8L5|i4l>3M~;M~2nBe4686G=0*6aZuMHJ*SygSSDF^rF`EDCKUQ0?& z0@F_5Qty5uck*ytws=V3bLa8()v5%FZdCX#VNFKhU} zMa>yZrK)utb@X1>m%Pnx`|CX9DCSkwg^E@lr7AjU;#V!eD+K;9=*^`gGMsD2t1$wT zB55|nYCWe@TC(e;l@sc$04E6i_TMUEfQt;(=AtH0NYy~#xXu@x1P>)YP2kVbNuJE~x_Vgg4V)fpr(TXLclvN|mEOzIHn4vmiS27$jvCv@T%DgM@COqis)In|hp z0Ro347Si+hRYw&dchx5pZ26$+IBK&-?Yu?CPZ?;(U~A7Q$Fp+Wxc9a@YsU=NNbGor z%8T8pQp2c|D@2&YC<4b+7->)`H)o+~I4Qsdvgf=1a}?26+I?+wqg2U+NI%!Js($0! ze15gZS=UZ^*Tl|M^;l#o$G*j=CtHmcbJsSf2?cnM!1b;DIy&-!5L-uk0w>ix*SpkP zlz1j&p2;r)v4%Tf8bh$aQ4~%(yHN77N#U)dD<(b6_xsvfx7k`};Fz3$78c68SB- zj_r^EWms^t_b{E#f?EXkMhU3}ANL*bi4<*t(|1BBZnt11KF7ll7fKc4A)Ep{DuhRt z04DL@Uf74f7T#UJrv$IXpP=yRbnyq6`~~mEU`ID{h) znA!%RoJ@K|P~IJqb2)spD}B`Hdw%r9mrc(asp4 zy{bXGs6{&m=O4kFTCJG3k_N4=MSBfi&qSNmpfxmT1j@LkJ-t=5Yx|}K?Un`&;B5o6 zcQj~UYtRT>G(dY-gZ8Z!?b0^Ue$}GAzdbZk)1d8v%c%D;s3yKvgE_pP#$M|c_yDd# M18%@aa2xLY3pr^#ga7~l literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetDiffTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetDiffTest.class new file mode 100644 index 0000000000000000000000000000000000000000..a33eb5a0d7219118ca2ced1e64e888d618f3aecb GIT binary patch literal 10711 zcmeHN-Etc>6h3m3*l`0X>0h7))D&8$F!l`>OvBHB3p1H>L)R^3fkHFi98e6#lM9(_9J=+imUS^fUc&%Xk|$MAk0 zasGJG(wr98A{i#8>Xs4o@um~uK)Aw2&+K;=z%bX-|GuB^2#kKI|Kz3>7V zDvBsA)(D03A$6FqHE3`;Fn=LAj+gor$nvKQ+gT#LagLR6vji=$juYAS0#`Uf(J030 zhlKZ0|JcE4NR#PP+NL6+vESq^;UgVe_y+&8*j1)~P3%9BDe}=>+^pSL9kK4&srQZ_mJr*R5>b(GD*L1Ed(7`ps zt%ki8(gz$F;RshGVfDBX>#|TV47f=U^0?~ACNiLOsrK z_e{j*(<;4G`v0?c>b{wJ2Ma$W>3!CInEQbq-@sW9&1CvN6-&&!Jd6Zxl6{pdPpd8y z-b7QNk>xXzr6Fmj!3izH7e30~5uK=yELMvKmn@`Timk+{H|fN}dUoV5LIGY`gJpP? zz{OH+SpKVH4bpG#=etQwF#pX}9h&8cY#-3S29|n`EV7F`(HQU^Q(N?c6t$qL5{$^J&#& zRt{75&D1+s_+e2ydg=q5dhVx=@%cD@%UM%&BK;HC)T@!ZU8gRd@M;GS5%B(sy8x6d z|2>%$G{ro;D6M4IJQhAWoj$Tym>M(FLV7k^Ci8%Vg_5VnsE==#KXJcbJ9trTVYnQ%p{vd?|EAYI9^%^}eTfEG!QtL`X~HdANnO zt&w&F*7igcVd?7-4^BjI4e*d09@YcMSPCs_Lp?{ct? zS1ki5dk(K_i4?pB8+b?HJig7rg}&59{CyVfQVQDTRJ2Wa9We(8TF*qEH&PI8AA^vs z&(##P2dQXpSy=aW3fd2;XxA*zwo=gkOhtQVJT!7P1uX~fqOWss1K#V6WDah^_P_E0 BVp#wH literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..7c2baf8748db656a6ad62791c74397c0e3efbe4a GIT binary patch literal 10053 zcmeHNUvt|;5Z_DF`cDHbP5;tD)k0f`2D?C^rFH|Z+oqvPQtUJxW*7!Vy2RJWlIL{J zq1*k(4Dol zXN{)Ig@!1r#tLWVRn0UUslf`>0`p%=zVy=WjF8SWO%U@Nl#9(5RnFyWajK0*#LqY_ z!R)y1c2ICMmcB$$r~jw)i+I$eT145_8d&l*Otn~DsU!UA$DBIlOqM@m1t+UvVritJ z?pj*8bH89TsE4JOTGb9i2vdR5-7U6Iu^FOHhdK}c*O@1#tFCPuSlnx-;a>y9QmE0) zOy1-ac}MWF-5oLmFSjg{#I)Am=Ty6Z?h4x*uDMQmuHVFIZJupXYs(kU%;YLHtVg}B zcex~eFUm;wdq$BdHQ{Q8Cc`0{2}M?NNg1p$(ovxt(=53H)qtm!e*axLAd?Xt+^{LE46!@*US;4ByeV*{7+M3Pufy5{>cz6YjBL>)~2Qe}Ojz>aW|36}q3dFd0w9Xh^ zhr1gonb)(BhF2zFFT6_NNKWtW%eAXaQSRFv&~fT7v>Lb#xFib#fkV2BjD5LNAUY4n zMV)yBzSf`ZW@C{+*7TPaOGxMlOy;ISYWqnHMKU$E<`|;IQR2dOiIUzw?~60o>SVR$ z2-cu;&Ia=snp&1ybN)6YT9(xVpBB^bI)OhDY*+>@Vy4KBvo-<~ytABZyS1QlS`@KD z=cVCI0)IYVk3^{xJuY87y*4zm@t9kQCnREF6DHe&lb0j)l@k11l$-i(7Ocw8r^t>Qby26%qZ*_|0ZxT z%8?J4sL#tiHQc^5EF?CbmxfCO9*@pZ32XjH#R!}i$iyrDPU(X>b#86qo|Px9t<>>M zmd@eIP@Zx6G|wLxNq;M@Bj~2^Y2H3vKEbg0kieZMdqW<@CR3llbd+9hO9ZMdxFXPQ zQi{)^R@^b{Ds9@h)0~En3H-I!xFaikIV`DHnKHA-$6l;h-6<1P9M&T#qf>X&@JjwM6eVVMQ%G& zOu;SWBmEUC1+xTR?JZ0xn8P$4g`9%B1onrVm4bO(!h{|K7Nua3z+Qi%rr>kzynoK7 zpw{ytg};PI!Tp{uG1{yR$^AU@JRDHT?L9aH_(=wS9s+O>|Lui+_?yDJ%lMSwHTw&s zzc`fr2_}BUyD>O`zfuNJ_8|UFw58xRID~iOFbRjT-R-(O?0PSrBT1|;|9xg=aCP%BSTTX#y zDbe16i?L|a3bb`4T0Q|Zv-tXv^#jA{z4?@w>9f`{d#BY^|A3X))_e#Vo zTZl56)%smk==Y-%?OFn~q5|!2CEE4j(8y^e+RTt>vr4p2hD2LcqJ6rBHgKen?-Yo8 ipp20=1~)qSsshV+e;6`w6K=yD_zZMdfO}AdrGEi*rE?kp literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetRollingUpdateTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetRollingUpdateTest.class new file mode 100644 index 0000000000000000000000000000000000000000..255066704cfa521952980d3fef1e13f016e20c5a GIT binary patch literal 10138 zcmeHNUvC>l5TA9^*m2UPq!cIxx(U!aKy3;I+NQ14q(P13q{vBIAt9vo-8$a(?$+Ad z3lxd(#2XSw@Xix2@E!OPh}rYMv%IO##(`2!k!iskhr05J9k7a!l~60;eRbgJZ?EiXrg_#O-PEBES;xT6Uaok%Gj=v^HWI8jYNtl^@|L!r1E zFV5Z&fzY=I94oCpATYBbU7m*p0*igrO{JtNz)7-{zaJPDy#wx2NBS+{F)d_3TT0eF z?uXZDac-~4smmRY;Uj2^Igi;srz=91JK~qS;+H$(_b+tCFZab?p|0d14Wy<%(@v9W zgy&zkP|PGe>bh)nT{c{oCw^F)d*QdF(iBk|tgeJ}l{zdi9Mn1OivMg;c2qlxPpS5& zKoYAs(!v{sm74Hx@U`W)JmCmU!w91aoiadOL=Hw5Z3jbXm5Pu?fy)~rK$mIY3jSu1 zr<2rWx{a}DR*;Ia!1!1jI00FlOGJ`Ida5O5R6l9)aVXb0^29e8I`^=jO$KRV(C4}- zUAoUP3-mGwYNMf~A4iellP1=NvI{zUgR9W6V4}_!VTjo$mM?kVII=#oj3xB29tqDi zzBCl{Nn>oYmW84?w;=<~(1%nyn9bne0UPzK1ao&pqhWb&lC$xsYaAWi5uRvg^23Ba zU`jB|@#7df!N>@fO)VQik^sBcsh^fRigRPjlW<8#af}qB;-iQYgWE0}ozN6vsV=3* zSzyUgCgMg$D8h}UIg7>)@tpLOnKin*u~gQu=Z!%tD3fLni^OhuNkMd%h0Qe2>y?L* z51oKA^N+FoV;7r*6xN@>5b2GZnQSbRZ3UX|kK8aM3Rrqeq^Hbmmf5Vg>3?1~GE+^B z<8HmP2t` zxj3Vn0*6$*`VWlDaQHP_kGpLG=W0=)h0nKw0}%@3@3tB7#7z*gvrz4KMi?ecpxe4<_)pXRTx(kGS zkwSIj_1{?u>6H)ym!4{q8aMM-7T)2;%|l**RYJa-xR z4+~Hs=gICHTx39+(x>`BiVJ|N`x={Q3+4zj$d z@UMEq<-==G&l~oz7nG6i_yd8b)U6%<70wQNb?ak7ew~izOgW8Y1CEK$)v&wTjo-xi zRG7)da$+Ai&^?&#fBeo#9R2PAsSD$&~( zw3}A6iz(1b7PNIM+B+%G-nF3JwW3{0fmXJleP%^_KLy%l3)({~+J_UOeQ8Czk^=1` Z3vb+lmV-~wCvtEV-@`Mpk%Mcn_7{&fEQkOA literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StorageClassOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StorageClassOperatorIT.class new file mode 100644 index 0000000000000000000000000000000000000000..91c32395277df4bbe89444e9a1293bd593e537ae GIT binary patch literal 5205 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 Z=Hb5gxd5y9c?zTZ0X&37ScY$)@*kfQtC#=) literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/resources/current-kafka-broker.conf b/cluster-operator/bin/src/test/resources/current-kafka-broker.conf new file mode 100644 index 00000000000..d8e3d83de73 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/current-kafka-broker.conf @@ -0,0 +1,202 @@ +advertised.host.name=null +advertised.listeners=REPLICATION-9091://my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc:9091,PLAIN-9092://my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc:9092,TLS-9093://my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc:9093 +advertised.port=null +alter.config.policy.class.name=null +alter.log.dirs.replication.quota.window.num=11 +alter.log.dirs.replication.quota.window.size.seconds=1 +authorizer.class.name= +auto.create.topics.enable=true +auto.leader.rebalance.enable=true +background.threads=10 +broker.id.generation.enable=true +broker.id=0 +broker.rack=null +client.quota.callback.class=null +compression.type=producer +connection.failed.authentication.delay.ms=100 +connections.max.idle.ms=600000 +connections.max.reauth.ms=0 +control.plane.listener.name=null +controlled.shutdown.enable=true +controlled.shutdown.max.retries=3 +controlled.shutdown.retry.backoff.ms=5000 +controller.socket.timeout.ms=30000 +create.topic.policy.class.name=null +default.replication.factor=1 +delegation.token.expiry.check.interval.ms=3600000 +delegation.token.expiry.time.ms=86400000 +delegation.token.master.key=null +delegation.token.max.lifetime.ms=604800000 +delete.records.purgatory.purge.interval.requests=1 +delete.topic.enable=true +fetch.purgatory.purge.interval.requests=1000 +group.initial.rebalance.delay.ms=3000 +group.max.session.timeout.ms=1800000 +group.max.size=2147483647 +group.min.session.timeout.ms=6000 +host.name= +inter.broker.listener.name=REPLICATION-9091 +inter.broker.protocol.version=2.4-IV1 +kafka.metrics.polling.interval.secs=10 +kafka.metrics.reporters= +leader.imbalance.check.interval.seconds=300 +leader.imbalance.per.broker.percentage=10 +listener.name.replication-9091.ssl.client.auth=required +listener.name.replication-9091.ssl.keystore.location=/tmp/kafka/cluster.keystore.p12 +listener.name.replication-9091.ssl.keystore.password=null +listener.name.replication-9091.ssl.keystore.type=PKCS12 +listener.name.replication-9091.ssl.truststore.location=/tmp/kafka/cluster.truststore.p12 +listener.name.replication-9091.ssl.truststore.password=null +listener.name.replication-9091.ssl.truststore.type=PKCS12 +listener.name.tls-9093.ssl.keystore.location=/tmp/kafka/cluster.keystore.p12 +listener.name.tls-9093.ssl.keystore.password=null +listener.name.tls-9093.ssl.keystore.type=PKCS12 +listener.security.protocol.map=REPLICATION-9091:SSL,PLAIN-9092:PLAINTEXT,TLS-9093:SSL +listeners=REPLICATION-9091://0.0.0.0:9091,PLAIN-9092://0.0.0.0:9092,TLS-9093://0.0.0.0:9093 +log.cleaner.backoff.ms=15000 +log.cleaner.dedupe.buffer.size=134217728 +log.cleaner.delete.retention.ms=86400000 +log.cleaner.enable=true +log.cleaner.io.buffer.load.factor=0.9 +log.cleaner.io.buffer.size=524288 +log.cleaner.io.max.bytes.per.second=1.7976931348623157E308 +log.cleaner.max.compaction.lag.ms=9223372036854775807 +log.cleaner.min.cleanable.ratio=0.5 +log.cleaner.min.compaction.lag.ms=0 +log.cleaner.threads=1 +log.cleanup.policy=delete +log.dir=/tmp/kafka-logs +log.dirs=/var/lib/kafka/data/kafka-log0 +log.flush.interval.messages=9223372036854775807 +log.flush.interval.ms=null +log.flush.offset.checkpoint.interval.ms=60000 +log.flush.scheduler.interval.ms=9223372036854775807 +log.flush.start.offset.checkpoint.interval.ms=60000 +log.index.interval.bytes=4096 +log.index.size.max.bytes=10485760 +log.message.downconversion.enable=true +log.message.format.version=2.4 +log.message.timestamp.difference.max.ms=9223372036854775807 +log.message.timestamp.type=CreateTime +log.preallocate=false +log.retention.bytes=-1 +log.retention.check.interval.ms=300000 +log.retention.hours=168 +log.retention.minutes=null +log.retention.ms=null +log.roll.hours=168 +log.roll.jitter.hours=0 +log.roll.jitter.ms=null +log.roll.ms=null +log.segment.bytes=1073741824 +log.segment.delete.delay.ms=60000 +max.connections.per.ip.overrides= +max.connections.per.ip=2147483647 +max.connections=2147483647 +max.incremental.fetch.session.cache.slots=1000 +message.max.bytes=1000012 +metric.reporters= +metrics.num.samples=2 +metrics.recording.level=INFO +metrics.sample.window.ms=30000 +min.insync.replicas=1 +num.io.threads=8 +num.network.threads=3 +num.partitions=1 +num.recovery.threads.per.data.dir=1 +num.replica.alter.log.dirs.threads=null +num.replica.fetchers=1 +offset.metadata.max.bytes=4096 +offsets.commit.required.acks=-1 +offsets.commit.timeout.ms=5000 +offsets.load.buffer.size=5242880 +offsets.retention.check.interval.ms=600000 +offsets.retention.minutes=10080 +offsets.topic.compression.codec=0 +offsets.topic.num.partitions=50 +offsets.topic.replication.factor=1 +offsets.topic.segment.bytes=104857600 +password.encoder.cipher.algorithm=AES/CBC/PKCS5Padding +password.encoder.iterations=4096 +password.encoder.key.length=128 +password.encoder.keyfactory.algorithm=null +password.encoder.old.secret=null +password.encoder.secret=null +port=9092 +principal.builder.class=null +producer.purgatory.purge.interval.requests=1000 +queued.max.request.bytes=-1 +queued.max.requests=500 +quota.consumer.default=9223372036854775807 +quota.producer.default=9223372036854775807 +quota.window.num=11 +quota.window.size.seconds=1 +replica.fetch.backoff.ms=1000 +replica.fetch.max.bytes=1048576 +replica.fetch.min.bytes=1 +replica.fetch.response.max.bytes=10485760 +replica.fetch.wait.max.ms=500 +replica.high.watermark.checkpoint.interval.ms=5000 +replica.lag.time.max.ms=10000 +replica.selector.class=null +replica.socket.receive.buffer.bytes=65536 +replica.socket.timeout.ms=30000 +replication.quota.window.num=11 +replication.quota.window.size.seconds=1 +request.timeout.ms=30000 +reserved.broker.max.id=1000 +sasl.client.callback.handler.class=null +sasl.enabled.mechanisms= +sasl.jaas.config=null +sasl.kerberos.kinit.cmd=/usr/bin/kinit +sasl.kerberos.min.time.before.relogin=60000 +sasl.kerberos.principal.to.local.rules=DEFAULT +sasl.kerberos.service.name=null +sasl.kerberos.ticket.renew.jitter=0.05 +sasl.kerberos.ticket.renew.window.factor=0.8 +sasl.login.callback.handler.class=null +sasl.login.class=null +sasl.login.refresh.buffer.seconds=300 +sasl.login.refresh.min.period.seconds=60 +sasl.login.refresh.window.factor=0.8 +sasl.login.refresh.window.jitter=0.05 +sasl.mechanism.inter.broker.protocol=GSSAPI +sasl.server.callback.handler.class=null +security.inter.broker.protocol=PLAINTEXT +security.providers=null +socket.receive.buffer.bytes=102400 +socket.request.max.bytes=104857600 +socket.send.buffer.bytes=102400 +ssl.cipher.suites= +ssl.client.auth=none +ssl.enabled.protocols=TLSv1.2,TLSv1.1,TLSv1 +ssl.endpoint.identification.algorithm=HTTPS +ssl.key.password=null +ssl.keymanager.algorithm=SunX509 +ssl.keystore.location=null +ssl.keystore.password=null +ssl.keystore.type=JKS +ssl.principal.mapping.rules=DEFAULT +ssl.protocol=TLS +ssl.provider=null +ssl.secure.random.implementation=null +ssl.trustmanager.algorithm=PKIX +ssl.truststore.location=null +ssl.truststore.password=null +ssl.truststore.type=JKS +transaction.abort.timed.out.transaction.cleanup.interval.ms=60000 +transaction.max.timeout.ms=900000 +transaction.remove.expired.transaction.cleanup.interval.ms=3600000 +transaction.state.log.load.buffer.size=5242880 +transaction.state.log.min.isr=2 +transaction.state.log.num.partitions=50 +transaction.state.log.replication.factor=1 +transaction.state.log.segment.bytes=104857600 +transactional.id.expiration.ms=604800000 +unclean.leader.election.enable=false +zookeeper.connect=localhost:2181 +zookeeper.connection.timeout.ms=null +zookeeper.max.in.flight.requests=10 +zookeeper.session.timeout.ms=6000 +zookeeper.set.acl=false +zookeeper.sync.time.ms=2000 \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/desired-kafka-broker.conf b/cluster-operator/bin/src/test/resources/desired-kafka-broker.conf new file mode 100644 index 00000000000..be9b2be0c70 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/desired-kafka-broker.conf @@ -0,0 +1,55 @@ +########## +# Broker ID +########## +broker.id=${STRIMZI_BROKER_ID} + +########## +# Zookeeper +########## +zookeeper.connect=localhost:2181 + +########## +# Kafka message logs configuration +########## +log.dirs=/var/lib/kafka/data/kafka-log${STRIMZI_BROKER_ID} + +########## +# Replication listener +########## +listener.name.replication-9091.ssl.keystore.location=/tmp/kafka/cluster.keystore.p12 +listener.name.replication-9091.ssl.keystore.password=${CERTS_STORE_PASSWORD} +listener.name.replication-9091.ssl.keystore.type=PKCS12 +listener.name.replication-9091.ssl.truststore.location=/tmp/kafka/cluster.truststore.p12 +listener.name.replication-9091.ssl.truststore.password=${CERTS_STORE_PASSWORD} +listener.name.replication-9091.ssl.truststore.type=PKCS12 +listener.name.replication-9091.ssl.client.auth=required + +########## +# Plain listener +########## + +########## +# TLS listener +########## +listener.name.tls-9093.ssl.keystore.location=/tmp/kafka/cluster.keystore.p12 +listener.name.tls-9093.ssl.keystore.password=${CERTS_STORE_PASSWORD} +listener.name.tls-9093.ssl.keystore.type=PKCS12 + +########## +# Common listener configuration +########## +listeners=REPLICATION-9091://0.0.0.0:9091,PLAIN-9092://0.0.0.0:9092,TLS-9093://0.0.0.0:9093 +advertised.listeners=REPLICATION-9091://my-cluster-kafka-${STRIMZI_BROKER_ID}.my-cluster-kafka-brokers.myproject.svc:9091,PLAIN-9092://my-cluster-kafka-${STRIMZI_BROKER_ID}.my-cluster-kafka-brokers.myproject.svc:9092,TLS-9093://my-cluster-kafka-${STRIMZI_BROKER_ID}.my-cluster-kafka-brokers.myproject.svc:9093 +listener.security.protocol.map=REPLICATION-9091:SSL,PLAIN-9092:PLAINTEXT,TLS-9093:SSL +inter.broker.listener.name=REPLICATION-9091 +sasl.enabled.mechanisms= +ssl.secure.random.implementation=null +ssl.endpoint.identification.algorithm=HTTPS + +########## +# User provided configuration +########## +log.message.format.version=2.4 +offsets.topic.replication.factor=1 +transaction.state.log.min.isr=2 +transaction.state.log.replication.factor=1 \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentAffinity.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentAffinity.yaml new file mode 100644 index 00000000000..16ca9ce1acd --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentAffinity.yaml @@ -0,0 +1,18 @@ +--- +nodeAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - preference: + matchExpressions: + - key: "another-node-label-key" + operator: "In" + values: + - "another-node-label-value" + weight: 1 + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: "kubernetes.io/e2e-az-name" + operator: "In" + values: + - "e2e-az1" + - "e2e-az2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentTolerations.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentTolerations.yaml new file mode 100644 index 00000000000..5f63f256da0 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentTolerations.yaml @@ -0,0 +1,9 @@ +--- +- effect: "NoSchedule" + key: "key1" + operator: "Equal" + value: "value1" +- effect: "NoExecute" + key: "key1" + operator: "Equal" + value: "value1" diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-Kafka.yaml new file mode 100644 index 00000000000..1c464c5af13 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-Kafka.yaml @@ -0,0 +1,44 @@ +apiVersion: v1alpha1 +kind: Kafka +metadata: + name: my-cluster +spec: + entityOperator: + topicOperator: {} + entityOperator: {} + template: + pod: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/e2e-az-name + operator: In + values: + - e2e-az1 + - e2e-az2 + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 1 + preference: + matchExpressions: + - key: another-node-label-key + operator: In + values: + - another-node-label-value + tolerations: + - key: "key1" + operator: "Equal" + value: "value1" + effect: "NoSchedule" + - key: "key1" + operator: "Equal" + value: "value1" + effect: "NoExecute" + kafka: + replicas: 2 + listeners: + - name: plain + port: 9092 + tls: false + type: internal diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack-Kafka.yaml new file mode 100644 index 00000000000..7ad98fc4185 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack-Kafka.yaml @@ -0,0 +1,32 @@ +apiVersion: v1alpha1 +kind: Kafka +metadata: + name: my-cluster +spec: + kafka: + replicas: 1 + listeners: + - name: plain + port: 9092 + tls: false + type: internal + template: + pod: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/e2e-az-name + operator: In + values: + - e2e-az1 + - e2e-az2 + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 1 + preference: + matchExpressions: + - key: another-node-label-key + operator: In + values: + - another-node-label-value \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack.yaml new file mode 100644 index 00000000000..f6321e84af0 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack.yaml @@ -0,0 +1,18 @@ +--- +nodeAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - preference: + matchExpressions: + - key: "another-node-label-key" + operator: "In" + values: + - "another-node-label-value" + weight: 1 + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: "kubernetes.io/e2e-az-name" + operator: "In" + values: + - "e2e-az1" + - "e2e-az2" diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity-Kafka.yaml new file mode 100644 index 00000000000..7d6e41394f3 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity-Kafka.yaml @@ -0,0 +1,34 @@ +apiVersion: v1alpha1 +kind: Kafka +metadata: + name: my-cluster +spec: + kafka: + replicas: 1 + listeners: + - name: plain + port: 9092 + tls: false + type: internal + rack: + topologyKey: "failure-domain.beta.kubernetes.io/zone" + template: + pod: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/e2e-az-name + operator: In + values: + - e2e-az1 + - e2e-az2 + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 1 + preference: + matchExpressions: + - key: another-node-label-key + operator: In + values: + - another-node-label-value diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity.yaml new file mode 100644 index 00000000000..ce41eebfcd5 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity.yaml @@ -0,0 +1,29 @@ +--- +nodeAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - preference: + matchExpressions: + - key: "another-node-label-key" + operator: "In" + values: + - "another-node-label-value" + weight: 1 + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: "kubernetes.io/e2e-az-name" + operator: "In" + values: + - "e2e-az1" + - "e2e-az2" + - key: "failure-domain.beta.kubernetes.io/zone" + operator: "Exists" +podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + strimzi.io/cluster: "my-cluster" + strimzi.io/name: "my-cluster-kafka" + topologyKey: "failure-domain.beta.kubernetes.io/zone" + weight: 100 \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms-Kafka.yaml new file mode 100644 index 00000000000..c821896c542 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms-Kafka.yaml @@ -0,0 +1,40 @@ +apiVersion: v1alpha1 +kind: Kafka +metadata: + name: my-cluster +spec: + kafka: + replicas: 1 + listeners: + - name: plain + port: 9092 + tls: false + type: internal + rack: + topologyKey: "failure-domain.beta.kubernetes.io/zone" + template: + pod: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/e2e-az-name + operator: In + values: + - e2e-az1 + - e2e-az2 + - matchExpressions: + - key: kubernetes.io/e2e-az-name + operator: In + values: + - e2e-az3 + - e2e-az4 + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 1 + preference: + matchExpressions: + - key: another-node-label-key + operator: In + values: + - another-node-label-value diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms.yaml new file mode 100644 index 00000000000..26d8e8c3597 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms.yaml @@ -0,0 +1,37 @@ +--- +nodeAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - preference: + matchExpressions: + - key: "another-node-label-key" + operator: "In" + values: + - "another-node-label-value" + weight: 1 + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: "kubernetes.io/e2e-az-name" + operator: "In" + values: + - "e2e-az1" + - "e2e-az2" + - key: "failure-domain.beta.kubernetes.io/zone" + operator: "Exists" + - matchExpressions: + - key: "kubernetes.io/e2e-az-name" + operator: "In" + values: + - "e2e-az3" + - "e2e-az4" + - key: "failure-domain.beta.kubernetes.io/zone" + operator: "Exists" +podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + strimzi.io/cluster: "my-cluster" + strimzi.io/name: "my-cluster-kafka" + topologyKey: "failure-domain.beta.kubernetes.io/zone" + weight: 100 \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity-Kafka.yaml new file mode 100644 index 00000000000..bc812cad159 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity-Kafka.yaml @@ -0,0 +1,14 @@ +apiVersion: v1alpha1 +kind: Kafka +metadata: + name: my-cluster +spec: + kafka: + replicas: 1 + listeners: + - name: plain + port: 9092 + tls: false + type: internal + rack: + topologyKey: "failure-domain.beta.kubernetes.io/zone" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity.yaml new file mode 100644 index 00000000000..5aacf6267bc --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity.yaml @@ -0,0 +1,16 @@ +--- +nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: "failure-domain.beta.kubernetes.io/zone" + operator: "Exists" +podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + strimzi.io/cluster: "my-cluster" + strimzi.io/name: "my-cluster-kafka" + topologyKey: "failure-domain.beta.kubernetes.io/zone" + weight: 100 \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations-Kafka.yaml new file mode 100644 index 00000000000..28251113942 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations-Kafka.yaml @@ -0,0 +1,23 @@ +apiVersion: v1alpha1 +kind: Kafka +metadata: + name: my-cluster +spec: + kafka: + replicas: 1 + listeners: + - name: plain + port: 9092 + tls: false + type: internal + template: + pod: + tolerations: + - key: "key1" + operator: "Equal" + value: "value1" + effect: "NoSchedule" + - key: "key2" + operator: "Equal" + value: "value2" + effect: "NoSchedule" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations.yaml new file mode 100644 index 00000000000..2657f45bede --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations.yaml @@ -0,0 +1,9 @@ +--- +- effect: "NoSchedule" + key: "key1" + operator: "Equal" + value: "value1" +- effect: "NoSchedule" + key: "key2" + operator: "Equal" + value: "value2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-KafkaConnect.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-KafkaConnect.yaml new file mode 100644 index 00000000000..23a5f30237b --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-KafkaConnect.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +kind: KafkaConnect +metadata: + name: my-connect-cluster +spec: + template: + pod: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/e2e-az-name + operator: In + values: + - e2e-az1 + - e2e-az2 + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 1 + preference: + matchExpressions: + - key: another-node-label-key + operator: In + values: + - another-node-label-value diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-StrimziPodSet.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-StrimziPodSet.yaml new file mode 100644 index 00000000000..16ca9ce1acd --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-StrimziPodSet.yaml @@ -0,0 +1,18 @@ +--- +nodeAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - preference: + matchExpressions: + - key: "another-node-label-key" + operator: "In" + values: + - "another-node-label-value" + weight: 1 + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: "kubernetes.io/e2e-az-name" + operator: "In" + values: + - "e2e-az1" + - "e2e-az2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-KafkaConnect.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-KafkaConnect.yaml new file mode 100644 index 00000000000..a23b6e7b7f0 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-KafkaConnect.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: KafkaConnect +metadata: + name: my-connect-cluster +spec: + template: + pod: + tolerations: + - key: "key1" + operator: "Equal" + value: "value1" + effect: "NoSchedule" + - key: "key2" + operator: "Equal" + value: "value2" + effect: "NoSchedule" diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-StrimziPodSet.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-StrimziPodSet.yaml new file mode 100644 index 00000000000..2657f45bede --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-StrimziPodSet.yaml @@ -0,0 +1,9 @@ +--- +- effect: "NoSchedule" + key: "key1" + operator: "Equal" + value: "value1" +- effect: "NoSchedule" + key: "key2" + operator: "Equal" + value: "value2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-KafkaMirrorMaker2.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-KafkaMirrorMaker2.yaml new file mode 100644 index 00000000000..9c18cb92e56 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-KafkaMirrorMaker2.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: KafkaMirrorMaker2 +metadata: + name: my-mm2-cluster +spec: + clusters: [] + mirrors: [] + template: + pod: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/e2e-az-name + operator: In + values: + - e2e-az1 + - e2e-az2 + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 1 + preference: + matchExpressions: + - key: another-node-label-key + operator: In + values: + - another-node-label-value diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-StrimziPodSet.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-StrimziPodSet.yaml new file mode 100644 index 00000000000..16ca9ce1acd --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-StrimziPodSet.yaml @@ -0,0 +1,18 @@ +--- +nodeAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - preference: + matchExpressions: + - key: "another-node-label-key" + operator: "In" + values: + - "another-node-label-value" + weight: 1 + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: "kubernetes.io/e2e-az-name" + operator: "In" + values: + - "e2e-az1" + - "e2e-az2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-KafkaMirrorMaker2.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-KafkaMirrorMaker2.yaml new file mode 100644 index 00000000000..83041eaacb7 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-KafkaMirrorMaker2.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: KafkaMirrorMaker2 +metadata: + name: my-mm2-cluster +spec: + clusters: [] + mirrors: [] + template: + pod: + tolerations: + - key: "key1" + operator: "Equal" + value: "value1" + effect: "NoSchedule" + - key: "key2" + operator: "Equal" + value: "value2" + effect: "NoSchedule" diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-StrimziPodSet.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-StrimziPodSet.yaml new file mode 100644 index 00000000000..2657f45bede --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-StrimziPodSet.yaml @@ -0,0 +1,9 @@ +--- +- effect: "NoSchedule" + key: "key1" + operator: "Equal" + value: "value1" +- effect: "NoSchedule" + key: "key2" + operator: "Equal" + value: "value2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Deployment.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Deployment.yaml new file mode 100644 index 00000000000..16ca9ce1acd --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Deployment.yaml @@ -0,0 +1,18 @@ +--- +nodeAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - preference: + matchExpressions: + - key: "another-node-label-key" + operator: "In" + values: + - "another-node-label-value" + weight: 1 + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: "kubernetes.io/e2e-az-name" + operator: "In" + values: + - "e2e-az1" + - "e2e-az2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Kafka.yaml new file mode 100644 index 00000000000..130a878eb33 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Kafka.yaml @@ -0,0 +1,31 @@ +apiVersion: v1alpha1 +kind: Kafka +metadata: + name: my-cluster +spec: + topicOperator: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/e2e-az-name + operator: In + values: + - e2e-az1 + - e2e-az2 + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 1 + preference: + matchExpressions: + - key: another-node-label-key + operator: In + values: + - another-node-label-value + kafka: + replicas: 2 + listeners: + - name: plain + port: 9092 + tls: false + type: internal diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity-Kafka.yaml new file mode 100644 index 00000000000..32491c23e98 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity-Kafka.yaml @@ -0,0 +1,27 @@ +apiVersion: v1alpha1 +kind: Kafka +metadata: + name: my-cluster +spec: + kafka: {} + zookeeper: + template: + pod: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/e2e-az-name + operator: In + values: + - e2e-az1 + - e2e-az2 + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 1 + preference: + matchExpressions: + - key: another-node-label-key + operator: In + values: + - another-node-label-value diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity.yaml new file mode 100644 index 00000000000..f6321e84af0 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity.yaml @@ -0,0 +1,18 @@ +--- +nodeAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - preference: + matchExpressions: + - key: "another-node-label-key" + operator: "In" + values: + - "another-node-label-value" + weight: 1 + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: "kubernetes.io/e2e-az-name" + operator: "In" + values: + - "e2e-az1" + - "e2e-az2" diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations-Kafka.yaml new file mode 100644 index 00000000000..12ddcd9beba --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations-Kafka.yaml @@ -0,0 +1,18 @@ +apiVersion: v1alpha1 +kind: Kafka +metadata: + name: my-cluster +spec: + kafka: {} + zookeeper: + template: + pod: + tolerations: + - key: "key1" + operator: "Equal" + value: "value1" + effect: "NoSchedule" + - key: "key1" + operator: "Equal" + value: "value1" + effect: "NoExecute" diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations.yaml new file mode 100644 index 00000000000..fa7ac75ef6f --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations.yaml @@ -0,0 +1,9 @@ +--- +- effect: "NoSchedule" + key: "key1" + operator: "Equal" + value: "value1" +- effect: "NoExecute" + key: "key1" + operator: "Equal" + value: "value1" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/fbfd.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/fbfd.json new file mode 100644 index 00000000000..14940ace91a --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/fbfd.json @@ -0,0 +1,38 @@ +{ + "affinity": { + "nodeAffinity": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "nodeSelectorTerms": [ + { + "matchExpressions": [ + { + "key": "kubernetes.io/e2e-az-name", + "operator": "In", + "values": [ + "e2e-az1", + "e2e-az2" + ] + } + ] + } + ], + "preferredDuringSchedulingIgnoredDuringExecution": [ + { + "weight": 1, + "preference": { + "matchExpressions": [ + { + "key": "another-node-label-key", + "operator": "In", + "values": [ + "another-node-label-value" + ] + } + ] + } + } + ] + } + } + } +} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Broker-not-exist.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Broker-not-exist.json new file mode 100644 index 00000000000..27d9945f443 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Broker-not-exist.json @@ -0,0 +1,5 @@ +{ + "errorMessage": "Error processing POST request '/add_broker' due to: 'com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: java.lang.IllegalArgumentException: Broker [3] does not exist.'.", + "stackTrace": "java.util.concurrent.ExecutionException: com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: java.lang.IllegalArgumentException: Broker [3] does not exist.\n\tat java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)\n\tat java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2022)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.AbstractAsyncRequest.getResponse(AbstractAsyncRequest.java:57)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.AbstractRequest.handle(AbstractRequest.java:41)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.handlePost(KafkaCruiseControlServlet.java:229)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doGetOrPost(KafkaCruiseControlServlet.java:127)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doPost(KafkaCruiseControlServlet.java:106)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\n\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\n\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\n\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:137)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\n\tat java.base/java.lang.Thread.run(Thread.java:829)\nCaused by: com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: java.lang.IllegalArgumentException: Broker [3] does not exist.\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:167)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.AddBrokersRunnable.getResult(AddBrokersRunnable.java:88)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.AddBrokersRunnable.getResult(AddBrokersRunnable.java:35)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.OperationRunnable.run(OperationRunnable.java:45)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.run(GoalBasedOperationRunnable.java:36)\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\t... 1 more\nCaused by: java.lang.IllegalArgumentException: Broker [3] does not exist.\n\tat com.linkedin.kafka.cruisecontrol.KafkaCruiseControl.sanityCheckBrokerPresence(KafkaCruiseControl.java:917)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.AddBrokersRunnable.workWithClusterModel(AddBrokersRunnable.java:93)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:161)\n\t... 9 more\n", + "version": 1 +} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-NotEnoughValidWindows-error.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-NotEnoughValidWindows-error.json new file mode 100644 index 00000000000..79c519a5a61 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-NotEnoughValidWindows-error.json @@ -0,0 +1 @@ +{"errorMessage":"Error processing POST request \u0027/rebalance\u0027 due to: \u0027com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1587403196210] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d2065, granularity\u003dENTITY)\u0027.","stackTrace":"java.util.concurrent.ExecutionException: com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1587403196210] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d2065, granularity\u003dENTITY)\n\tat java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)\n\tat java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.AbstractAsyncRequest.getResponse(AbstractAsyncRequest.java:57)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.AbstractRequest.handle(AbstractRequest.java:40)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.handlePost(KafkaCruiseControlServlet.java:215)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doGetOrPost(KafkaCruiseControlServlet.java:123)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doPost(KafkaCruiseControlServlet.java:102)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:547)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1607)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1297)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1577)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1212)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:500)\n\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)\n\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1587403196210] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d2065, granularity\u003dENTITY)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:132)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.workWithoutClusterModel(RebalanceRunnable.java:121)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:137)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.getResult(RebalanceRunnable.java:94)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.getResult(RebalanceRunnable.java:30)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.OperationRunnable.run(OperationRunnable.java:45)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.run(GoalBasedOperationRunnable.java:34)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\t... 1 more\nCaused by: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1587403196210] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d2065, granularity\u003dENTITY)\n\tat com.linkedin.cruisecontrol.monitor.sampling.aggregator.MetricSampleAggregator.validateCompleteness(MetricSampleAggregator.java:540)\n\tat com.linkedin.cruisecontrol.monitor.sampling.aggregator.MetricSampleAggregator.aggregate(MetricSampleAggregator.java:212)\n\tat com.linkedin.kafka.cruisecontrol.monitor.sampling.aggregator.KafkaPartitionMetricSampleAggregator.aggregate(KafkaPartitionMetricSampleAggregator.java:151)\n\tat com.linkedin.kafka.cruisecontrol.monitor.LoadMonitor.clusterModel(LoadMonitor.java:499)\n\tat com.linkedin.kafka.cruisecontrol.KafkaCruiseControl.clusterModel(KafkaCruiseControl.java:301)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.ProposalsRunnable.workWithClusterModel(ProposalsRunnable.java:81)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:128)\n\t... 11 more\n","version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-bad-goals-error.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-bad-goals-error.json new file mode 100644 index 00000000000..fe9e8f19a5f --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-bad-goals-error.json @@ -0,0 +1 @@ +{"errorMessage":"Error processing POST request \u0027/rebalance\u0027 due to: \u0027java.lang.IllegalArgumentException: Missing hard goals [NetworkInboundCapacityGoal, DiskCapacityGoal, RackAwareGoal, NetworkOutboundCapacityGoal, CpuCapacityGoal, ReplicaCapacityGoal] in the provided goals: [RackAwareGoal, ReplicaCapacityGoal]. Add skip_hard_goal_check\u003dtrue parameter to ignore this sanity check.\u0027.","stackTrace":"java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Missing hard goals [NetworkInboundCapacityGoal, DiskCapacityGoal, RackAwareGoal, NetworkOutboundCapacityGoal, CpuCapacityGoal, ReplicaCapacityGoal] in the provided goals: [RackAwareGoal, ReplicaCapacityGoal]. Add skip_hard_goal_check\u003dtrue parameter to ignore this sanity check.\n\tat java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)\n\tat java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.AbstractAsyncRequest.getResponse(AbstractAsyncRequest.java:57)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.AbstractRequest.handle(AbstractRequest.java:40)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.handlePost(KafkaCruiseControlServlet.java:215)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doGetOrPost(KafkaCruiseControlServlet.java:123)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doPost(KafkaCruiseControlServlet.java:102)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:547)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1607)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1297)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1577)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1212)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:500)\n\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)\n\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.lang.IllegalArgumentException: Missing hard goals [NetworkInboundCapacityGoal, DiskCapacityGoal, RackAwareGoal, NetworkOutboundCapacityGoal, CpuCapacityGoal, ReplicaCapacityGoal] in the provided goals: [RackAwareGoal, ReplicaCapacityGoal]. Add skip_hard_goal_check\u003dtrue parameter to ignore this sanity check.\n\tat com.linkedin.kafka.cruisecontrol.KafkaCruiseControlUtils.sanityCheckGoals(KafkaCruiseControlUtils.java:186)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.init(GoalBasedOperationRunnable.java:107)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:124)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.workWithoutClusterModel(RebalanceRunnable.java:121)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:137)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.getResult(RebalanceRunnable.java:94)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.getResult(RebalanceRunnable.java:30)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.OperationRunnable.run(OperationRunnable.java:45)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.run(GoalBasedOperationRunnable.java:34)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\t... 1 more\n","version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-in-progress.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-in-progress.json new file mode 100644 index 00000000000..56e300c9828 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-in-progress.json @@ -0,0 +1 @@ +{"version":1,"progress":[{"operation":"Rebalance","operationProgress":[{"description":"Operation enqueued, waiting to be executed.","completionPercentage":100.0,"step":"PENDING","time-in-ms":127},{"description":"The job requires a cluster model and it is waiting to get the cluster model lock.","completionPercentage":100.0,"step":"WAITING_FOR_CLUSTER_MODEL","time-in-ms":461}]}]} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-verbose.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-verbose.json new file mode 100644 index 00000000000..652f85ce13b --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-verbose.json @@ -0,0 +1 @@ +{"summary":{"numIntraBrokerReplicaMovements":0,"excludedBrokersForLeadership":[],"numReplicaMovements":19,"onDemandBalancednessScoreAfter":87.66421502095022,"onDemandBalancednessScoreBefore":79.74705957325753,"intraBrokerDataToMoveMB":0,"recentWindows":1,"dataToMoveMB":0,"monitoredPartitionsPercentage":100.0,"excludedTopics":[],"numLeaderMovements":21,"excludedBrokersForReplicaMove":[]},"proposals":[{"oldReplicas":[2,0],"topicPartition":{"hash":-1535008712,"partition":26,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,1],"oldLeader":2},{"oldReplicas":[2,0],"topicPartition":{"hash":-1535008898,"partition":20,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,1],"oldLeader":2},{"oldReplicas":[2,0],"topicPartition":{"hash":-1535009084,"partition":14,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,1],"oldLeader":2},{"oldReplicas":[0,1],"topicPartition":{"hash":-2093132640,"partition":9,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-2093132919,"partition":0,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,1],"topicPartition":{"hash":-2093132826,"partition":3,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[1,0],"topicPartition":{"hash":-1535009022,"partition":16,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,2],"oldLeader":1},{"oldReplicas":[1,2],"topicPartition":{"hash":-2093132051,"partition":28,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":1},{"oldReplicas":[0,1],"topicPartition":{"hash":-2093132454,"partition":15,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-1535008681,"partition":27,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-2093132733,"partition":6,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[1,0],"topicPartition":{"hash":-1535009394,"partition":4,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,2],"oldLeader":1},{"oldReplicas":[1,2],"topicPartition":{"hash":-2093132423,"partition":16,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":1},{"oldReplicas":[1,2],"topicPartition":{"hash":-2093132237,"partition":22,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":1},{"oldReplicas":[0,1],"topicPartition":{"hash":-1535009518,"partition":0,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[2,1],"topicPartition":{"hash":-2093132485,"partition":14,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":2},{"oldReplicas":[0,1],"topicPartition":{"hash":-2093132268,"partition":21,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-2093132547,"partition":12,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,1],"topicPartition":{"hash":-1535009146,"partition":12,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-2093132175,"partition":24,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[1,0],"topicPartition":{"hash":-1535008836,"partition":22,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,2],"oldLeader":1},{"oldReplicas":[0,1],"topicPartition":{"hash":-2093132082,"partition":27,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,1],"topicPartition":{"hash":-1535008774,"partition":24,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-2093132361,"partition":18,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-1535009053,"partition":15,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-2093131989,"partition":30,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-1535009425,"partition":3,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[2,1],"topicPartition":{"hash":-2093132671,"partition":8,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":2},{"oldReplicas":[2,0],"topicPartition":{"hash":-2093132764,"partition":5,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,1],"oldLeader":2},{"oldReplicas":[0,1],"topicPartition":{"hash":-1535008960,"partition":18,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-1535009239,"partition":9,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,1],"topicPartition":{"hash":-1535009332,"partition":6,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[2,0],"topicPartition":{"hash":-2093132578,"partition":11,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,1],"oldLeader":2},{"oldReplicas":[1,2],"topicPartition":{"hash":-2093132795,"partition":4,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":1},{"oldReplicas":[1,0],"topicPartition":{"hash":-1535009208,"partition":10,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,2],"oldLeader":1},{"oldReplicas":[0,1],"topicPartition":{"hash":-1535008588,"partition":30,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-1535008867,"partition":21,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[2,0],"topicPartition":{"hash":-1535009270,"partition":8,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,1],"oldLeader":2},{"oldReplicas":[1,2],"topicPartition":{"hash":-2093132609,"partition":10,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":1},{"oldReplicas":[2,0],"topicPartition":{"hash":-1535009456,"partition":2,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,1],"oldLeader":2}],"loadBeforeOptimization":{"hosts":[{"FollowerNwInRate":0.06354837119579315,"Leaders":23,"DiskMB":1.9233150482177734,"PnwOutRate":0.2267979085445404,"NwOutRate":0.16324952989816666,"Host":"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.37949633598327637,"Replicas":44,"LeaderNwInRate":0.11040031909942627,"DiskPct":0.0019233150482177734},{"FollowerNwInRate":0.06826946139335632,"Leaders":22,"DiskMB":1.1729974746704102,"PnwOutRate":0.1381157636642456,"NwOutRate":0.06984630227088928,"Host":"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.01914038509130478,"Replicas":43,"LeaderNwInRate":0.06984630227088928,"DiskPct":0.0011729974746704102},{"FollowerNwInRate":0.06978311762213707,"Leaders":20,"DiskMB":1.127202033996582,"PnwOutRate":0.13176019489765167,"NwOutRate":0.0619770772755146,"Host":"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.016685860231518745,"Replicas":42,"LeaderNwInRate":0.0619770772755146,"DiskPct":0.0011272020339965821}],"brokers":[{"FollowerNwInRate":0.06354837119579315,"Leaders":23,"BrokerState":"ALIVE","Broker":0,"DiskMB":1.9233150482177734,"PnwOutRate":0.2267979085445404,"NwOutRate":0.16324952989816666,"Host":"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.37949633598327637,"Replicas":44,"LeaderNwInRate":0.11040031909942627,"DiskPct":0.0019233150482177734},{"FollowerNwInRate":0.06826946139335632,"Leaders":22,"BrokerState":"ALIVE","Broker":1,"DiskMB":1.1729974746704102,"PnwOutRate":0.1381157636642456,"NwOutRate":0.06984630227088928,"Host":"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.01914038509130478,"Replicas":43,"LeaderNwInRate":0.06984630227088928,"DiskPct":0.0011729974746704102},{"FollowerNwInRate":0.06978311762213707,"Leaders":20,"BrokerState":"ALIVE","Broker":2,"DiskMB":1.127202033996582,"PnwOutRate":0.13176019489765167,"NwOutRate":0.0619770772755146,"Host":"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.016685860231518745,"Replicas":42,"LeaderNwInRate":0.0619770772755146,"DiskPct":0.0011272020339965821}]},"goalSummary":[{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"RackAwareGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"ReplicaCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"DiskCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"NetworkInboundCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"NetworkOutboundCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"CpuCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"ReplicaDistributionGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"PotentialNwOutGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795321861902},"STD":{"disk":0.08102917447088125,"replicas":2.943920288775949,"leaderReplicas":0.9428090415820634,"cpu":0.13623909868422068,"networkOutbound":0.034585760987320004,"networkInbound":0.014784541073763445,"topicReplicas":3.4901380514202214,"potentialNwOut":0.010205221426926758},"MIN":{"disk":1.344813346862793,"replicas":39,"leaderReplicas":21,"cpu":0.03532284498214722,"networkOutbound":0.07242386788129807,"networkInbound":0.1270771473646164,"topicReplicas":0,"potentialNwOut":0.15719836950302124},"MAX":{"disk":1.522233009338379,"replicas":46,"leaderReplicas":23,"cpu":0.33094894886016846,"networkOutbound":0.14723889157176018,"networkInbound":0.15954913198947906,"topicReplicas":26,"potentialNwOut":0.17992635816335678}}},"goal":"DiskUsageDistributionGoal","status":"FIXED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795818567276},"STD":{"disk":0.08606669975194692,"replicas":2.1602468994692865,"leaderReplicas":3.0912061651652345,"cpu":0.16117079877219728,"networkOutbound":0.04415480011505807,"networkInbound":0.013918873641131368,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011014321925947788},"MIN":{"disk":1.3444080352783203,"replicas":40,"leaderReplicas":19,"cpu":0.016284657642245293,"networkOutbound":0.06686002761125565,"networkInbound":0.12826968729496002,"topicReplicas":0,"potentialNwOut":0.15717267990112305},"MAX":{"disk":1.5295181274414062,"replicas":45,"leaderReplicas":26,"cpu":0.36616960167884827,"networkOutbound":0.16080114245414734,"networkInbound":0.15838229656219482,"topicReplicas":27,"potentialNwOut":0.1811188980937004}}},"goal":"NetworkInboundUsageDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795818567276},"STD":{"disk":0.08606669975194692,"replicas":2.1602468994692865,"leaderReplicas":6.944222218666553,"cpu":0.06713655515670224,"networkOutbound":0.0026546728918540458,"networkInbound":0.013918873641131368,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011014321925947788},"MIN":{"disk":1.3444080352783203,"replicas":40,"leaderReplicas":12,"cpu":0.08291831612586975,"networkOutbound":0.09591187536716461,"networkInbound":0.12826968729496002,"topicReplicas":0,"potentialNwOut":0.15717267990112305},"MAX":{"disk":1.5295181274414062,"replicas":45,"leaderReplicas":28,"cpu":0.23290228843688965,"networkOutbound":0.10204722080379725,"networkInbound":0.15838229656219482,"topicReplicas":27,"potentialNwOut":0.1811188980937004}}},"goal":"NetworkOutboundUsageDistributionGoal","status":"FIXED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795818567276},"STD":{"disk":0.08606669975194692,"replicas":2.1602468994692865,"leaderReplicas":14.704496666741852,"cpu":0.05277203847245612,"networkOutbound":0.0035481439182601764,"networkInbound":0.013918873641131368,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011014321925947788},"MIN":{"disk":1.3444080352783203,"replicas":40,"leaderReplicas":1,"cpu":0.09227972477674484,"networkOutbound":0.093471959233284,"networkInbound":0.12826968729496002,"topicReplicas":0,"potentialNwOut":0.15717267990112305},"MAX":{"disk":1.5295181274414062,"replicas":45,"leaderReplicas":34,"cpu":0.21230719983577728,"networkOutbound":0.10179123282432556,"networkInbound":0.15838229656219482,"topicReplicas":27,"potentialNwOut":0.1811188980937004}}},"goal":"CpuUsageDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795818567276},"STD":{"disk":0.08606669975194692,"replicas":2.1602468994692865,"leaderReplicas":14.704496666741852,"cpu":0.05277203847245612,"networkOutbound":0.0035481439182601764,"networkInbound":0.013918873641131368,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011014321925947788},"MIN":{"disk":1.3444080352783203,"replicas":40,"leaderReplicas":1,"cpu":0.09227972477674484,"networkOutbound":0.093471959233284,"networkInbound":0.12826968729496002,"topicReplicas":0,"potentialNwOut":0.15717267990112305},"MAX":{"disk":1.5295181274414062,"replicas":45,"leaderReplicas":34,"cpu":0.21230719983577728,"networkOutbound":0.10179123282432556,"networkInbound":0.15838229656219482,"topicReplicas":27,"potentialNwOut":0.1811188980937004}}},"goal":"TopicReplicaDistributionGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795818567276},"STD":{"disk":0.08606669975194692,"replicas":2.1602468994692865,"leaderReplicas":14.704496666741852,"cpu":0.05277203847245612,"networkOutbound":0.0035481439182601764,"networkInbound":0.013918873641131368,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011014321925947788},"MIN":{"disk":1.3444080352783203,"replicas":40,"leaderReplicas":1,"cpu":0.09227972477674484,"networkOutbound":0.093471959233284,"networkInbound":0.12826968729496002,"topicReplicas":0,"potentialNwOut":0.15717267990112305},"MAX":{"disk":1.5295181274414062,"replicas":45,"leaderReplicas":34,"cpu":0.21230719983577728,"networkOutbound":0.10179123282432556,"networkInbound":0.15838229656219482,"topicReplicas":27,"potentialNwOut":0.1811188980937004}}},"goal":"LeaderReplicaDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795818567276},"STD":{"disk":0.08606669975194692,"replicas":2.1602468994692865,"leaderReplicas":14.704496666741852,"cpu":0.05277203847245612,"networkOutbound":0.0035481439182601764,"networkInbound":0.013918873641131368,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011014321925947788},"MIN":{"disk":1.3444080352783203,"replicas":40,"leaderReplicas":1,"cpu":0.09227972477674484,"networkOutbound":0.093471959233284,"networkInbound":0.12826968729496002,"topicReplicas":0,"potentialNwOut":0.15717267990112305},"MAX":{"disk":1.5295181274414062,"replicas":45,"leaderReplicas":34,"cpu":0.21230719983577728,"networkOutbound":0.10179123282432556,"networkInbound":0.15838229656219482,"topicReplicas":27,"potentialNwOut":0.1811188980937004}}},"goal":"LeaderBytesInDistributionGoal","status":"VIOLATED"}],"loadAfterOptimization":{"hosts":[{"FollowerNwInRate":0.08764694258570671,"Leaders":1,"DiskMB":1.5295181274414062,"PnwOutRate":0.1811188980937004,"NwOutRate":0.093471959233284,"Host":"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.21230719983577728,"Replicas":40,"LeaderNwInRate":0.04062274470925331,"DiskPct":0.0015295181274414063},{"FollowerNwInRate":0.05857257544994354,"Leaders":30,"DiskMB":1.349588394165039,"PnwOutRate":0.15838229656219482,"NwOutRate":0.09980972111225128,"Host":"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.09227972477674484,"Replicas":45,"LeaderNwInRate":0.09980972111225128,"DiskPct":0.001349588394165039},{"FollowerNwInRate":0.055381447076797485,"Leaders":34,"DiskMB":1.3444080352783203,"PnwOutRate":0.15717267990112305,"NwOutRate":0.10179123282432556,"Host":"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.11073566973209381,"Replicas":44,"LeaderNwInRate":0.10179123282432556,"DiskPct":0.0013444080352783203}],"brokers":[{"FollowerNwInRate":0.08764694258570671,"Leaders":1,"BrokerState":"ALIVE","Broker":0,"DiskMB":1.5295181274414062,"PnwOutRate":0.1811188980937004,"NwOutRate":0.093471959233284,"Host":"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.21230719983577728,"Replicas":40,"LeaderNwInRate":0.04062274470925331,"DiskPct":0.0015295181274414063},{"FollowerNwInRate":0.05857257544994354,"Leaders":30,"BrokerState":"ALIVE","Broker":1,"DiskMB":1.349588394165039,"PnwOutRate":0.15838229656219482,"NwOutRate":0.09980972111225128,"Host":"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.09227972477674484,"Replicas":45,"LeaderNwInRate":0.09980972111225128,"DiskPct":0.001349588394165039},{"FollowerNwInRate":0.055381447076797485,"Leaders":34,"BrokerState":"ALIVE","Broker":2,"DiskMB":1.3444080352783203,"PnwOutRate":0.15717267990112305,"NwOutRate":0.10179123282432556,"Host":"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.11073566973209381,"Replicas":44,"LeaderNwInRate":0.10179123282432556,"DiskPct":0.0013444080352783203}]},"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals.json new file mode 100644 index 00000000000..ec91aa6ef10 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals.json @@ -0,0 +1 @@ +{"summary":{"numIntraBrokerReplicaMovements":0,"excludedBrokersForLeadership":[],"numReplicaMovements":31,"onDemandBalancednessScoreAfter":84.08179174145127,"onDemandBalancednessScoreBefore":79.74705957325753,"intraBrokerDataToMoveMB":0,"recentWindows":1,"dataToMoveMB":0,"monitoredPartitionsPercentage":100.0,"excludedTopics":[],"numLeaderMovements":12,"excludedBrokersForReplicaMove":[]},"goalSummary":[{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"RackAwareGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"ReplicaCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"DiskCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"NetworkInboundCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"NetworkOutboundCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"CpuCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"ReplicaDistributionGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"PotentialNwOutGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.07681098514539705,"replicas":2.82842712474619,"leaderReplicas":0.4714045207910317,"cpu":0.1512113578562017,"networkOutbound":0.035589620946184876,"networkInbound":0.014820814776470369,"topicReplicas":3.456966485800899,"potentialNwOut":0.010094097216619516},"MIN":{"disk":1.2837018966674805,"replicas":39,"leaderReplicas":21,"cpu":0.038822758942842484,"networkOutbound":0.07294782251119614,"networkInbound":0.12725487351417542,"topicReplicas":0,"potentialNwOut":0.15867099165916443},"MAX":{"disk":1.446913719177246,"replicas":45,"leaderReplicas":22,"cpu":0.366836279630661,"networkOutbound":0.14882435277104378,"networkInbound":0.15871809422969818,"topicReplicas":26,"potentialNwOut":0.18010731786489487}}},"goal":"DiskUsageDistributionGoal","status":"FIXED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.0839820379157583,"replicas":2.160246899469287,"leaderReplicas":1.247219128924647,"cpu":0.051785963153765435,"networkOutbound":0.037636609995347084,"networkInbound":0.013644627397560654,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011272690764123348},"MIN":{"disk":1.2767934799194336,"replicas":40,"leaderReplicas":20,"cpu":0.1092967689037323,"networkOutbound":0.0619896724820137,"networkInbound":0.1289197951555252,"topicReplicas":0,"potentialNwOut":0.15764965116977692},"MAX":{"disk":1.4570302963256836,"replicas":45,"leaderReplicas":23,"cpu":0.22588825225830078,"networkOutbound":0.15029301866889,"networkInbound":0.1580745130777359,"topicReplicas":27,"potentialNwOut":0.18177223950624466}}},"goal":"NetworkInboundUsageDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.0839820379157583,"replicas":2.160246899469287,"leaderReplicas":10.873004286866726,"cpu":0.04113892400977573,"networkOutbound":0.007092096980852424,"networkInbound":0.013644627397560654,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011272690764123348},"MIN":{"disk":1.2767934799194336,"replicas":40,"leaderReplicas":7,"cpu":0.1116761788725853,"networkOutbound":0.09174759685993195,"networkInbound":0.1289197951555252,"topicReplicas":0,"potentialNwOut":0.15764965116977692},"MAX":{"disk":1.4570302963256836,"replicas":45,"leaderReplicas":33,"cpu":0.2092323899269104,"networkOutbound":0.10829527676105499,"networkInbound":0.1580745130777359,"topicReplicas":27,"potentialNwOut":0.18177223950624466}}},"goal":"NetworkOutboundUsageDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.0839820379157583,"replicas":2.160246899469287,"leaderReplicas":13.299958228840001,"cpu":0.03367191657922694,"networkOutbound":0.0052962421532357275,"networkInbound":0.013644627397560654,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011272690764123348},"MIN":{"disk":1.2767934799194336,"replicas":40,"leaderReplicas":3,"cpu":0.12119382619857788,"networkOutbound":0.09174759685993195,"networkInbound":0.1289197951555252,"topicReplicas":0,"potentialNwOut":0.15764965116977692},"MAX":{"disk":1.4570302963256836,"replicas":45,"leaderReplicas":33,"cpu":0.1997147500514984,"networkOutbound":0.1046846816316247,"networkInbound":0.1580745130777359,"topicReplicas":27,"potentialNwOut":0.18177223950624466}}},"goal":"CpuUsageDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.0839820379157583,"replicas":2.160246899469287,"leaderReplicas":13.299958228840001,"cpu":0.03367191657922694,"networkOutbound":0.0052962421532357275,"networkInbound":0.013644627397560654,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011272690764123348},"MIN":{"disk":1.2767934799194336,"replicas":40,"leaderReplicas":3,"cpu":0.12119382619857788,"networkOutbound":0.09174759685993195,"networkInbound":0.1289197951555252,"topicReplicas":0,"potentialNwOut":0.15764965116977692},"MAX":{"disk":1.4570302963256836,"replicas":45,"leaderReplicas":33,"cpu":0.1997147500514984,"networkOutbound":0.1046846816316247,"networkInbound":0.1580745130777359,"topicReplicas":27,"potentialNwOut":0.18177223950624466}}},"goal":"TopicReplicaDistributionGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.0839820379157583,"replicas":2.160246899469287,"leaderReplicas":13.299958228840001,"cpu":0.03367191657922694,"networkOutbound":0.0052962421532357275,"networkInbound":0.013644627397560654,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011272690764123348},"MIN":{"disk":1.2767934799194336,"replicas":40,"leaderReplicas":3,"cpu":0.12119382619857788,"networkOutbound":0.09174759685993195,"networkInbound":0.1289197951555252,"topicReplicas":0,"potentialNwOut":0.15764965116977692},"MAX":{"disk":1.4570302963256836,"replicas":45,"leaderReplicas":33,"cpu":0.1997147500514984,"networkOutbound":0.1046846816316247,"networkInbound":0.1580745130777359,"topicReplicas":27,"potentialNwOut":0.18177223950624466}}},"goal":"LeaderReplicaDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.0839820379157583,"replicas":2.160246899469287,"leaderReplicas":13.299958228840001,"cpu":0.03367191657922694,"networkOutbound":0.0052962421532357275,"networkInbound":0.013644627397560654,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011272690764123348},"MIN":{"disk":1.2767934799194336,"replicas":40,"leaderReplicas":3,"cpu":0.12119382619857788,"networkOutbound":0.09174759685993195,"networkInbound":0.1289197951555252,"topicReplicas":0,"potentialNwOut":0.15764965116977692},"MAX":{"disk":1.4570302963256836,"replicas":45,"leaderReplicas":33,"cpu":0.1997147500514984,"networkOutbound":0.1046846816316247,"networkInbound":0.1580745130777359,"topicReplicas":27,"potentialNwOut":0.18177223950624466}}},"goal":"LeaderBytesInDistributionGoal","status":"VIOLATED"}],"loadAfterOptimization":{"hosts":[{"FollowerNwInRate":0.07708756253123283,"Leaders":3,"DiskMB":1.4570302963256836,"PnwOutRate":0.18177223950624466,"NwOutRate":0.1046846816316247,"Host":"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.1997147500514984,"Replicas":40,"LeaderNwInRate":0.051832232624292374,"DiskPct":0.0014570302963256836},{"FollowerNwInRate":0.05859703570604324,"Leaders":29,"DiskMB":1.2767934799194336,"PnwOutRate":0.15764965116977692,"NwOutRate":0.09905261546373367,"Host":"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.12119382619857788,"Replicas":44,"LeaderNwInRate":0.09905261546373367,"DiskPct":0.0012767934799194336},{"FollowerNwInRate":0.06632691621780396,"Leaders":33,"DiskMB":1.2810373306274414,"PnwOutRate":0.1580745130777359,"NwOutRate":0.09174759685993195,"Host":"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.13859246671199799,"Replicas":45,"LeaderNwInRate":0.09174759685993195,"DiskPct":0.0012810373306274415}],"brokers":[{"FollowerNwInRate":0.07708756253123283,"Leaders":3,"BrokerState":"ALIVE","Broker":0,"DiskMB":1.4570302963256836,"PnwOutRate":0.18177223950624466,"NwOutRate":0.1046846816316247,"Host":"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.1997147500514984,"Replicas":40,"LeaderNwInRate":0.051832232624292374,"DiskPct":0.0014570302963256836},{"FollowerNwInRate":0.05859703570604324,"Leaders":29,"BrokerState":"ALIVE","Broker":1,"DiskMB":1.2767934799194336,"PnwOutRate":0.15764965116977692,"NwOutRate":0.09905261546373367,"Host":"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.12119382619857788,"Replicas":44,"LeaderNwInRate":0.09905261546373367,"DiskPct":0.0012767934799194336},{"FollowerNwInRate":0.06632691621780396,"Leaders":33,"BrokerState":"ALIVE","Broker":2,"DiskMB":1.2810373306274414,"PnwOutRate":0.1580745130777359,"NwOutRate":0.09174759685993195,"Host":"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.13859246671199799,"Replicas":45,"LeaderNwInRate":0.09174759685993195,"DiskPct":0.0012810373306274415}]},"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-proposal-not-ready.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-proposal-not-ready.json new file mode 100644 index 00000000000..fa002ca833f --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-proposal-not-ready.json @@ -0,0 +1 @@ +{"AnalyzerState":{"isProposalReady":false,"readyGoals":[]},"MonitorState":{"trainingPct":9.6,"trained":false,"numFlawedPartitions":0,"state":"RUNNING","numTotalPartitions":2065,"numMonitoredWindows":1,"monitoringCoveragePct":100.0,"reasonOfLatestPauseOrResume":"N/A","numValidPartitions":2065},"ExecutorState":{"state":"NO_TASK_IN_PROGRESS"},"AnomalyDetectorState":{"recentBrokerFailures":[],"recentGoalViolations":[],"selfHealingDisabled":["DISK_FAILURE","BROKER_FAILURE","GOAL_VIOLATION","METRIC_ANOMALY","TOPIC_ANOMALY"],"balancednessScore":100.0,"selfHealingEnabled":[],"recentDiskFailures":[],"metrics":{"meanTimeToStartFixMs":0.0,"numSelfHealingStarted":0,"ongoingAnomalyDurationMs":0,"numSelfHealingFailedToStart":0,"meanTimeBetweenAnomaliesMs":{"TOPIC_ANOMALY":0.0,"GOAL_VIOLATION":0.0,"DISK_FAILURE":0.0,"BROKER_FAILURE":0.0,"METRIC_ANOMALY":0.0}},"recentMetricAnomalies":[],"recentTopicAnomalies":[],"selfHealingEnabledRatio":{"DISK_FAILURE":0.0,"BROKER_FAILURE":0.0,"GOAL_VIOLATION":0.0,"METRIC_ANOMALY":0.0,"TOPIC_ANOMALY":0.0}},"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-verbose.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-verbose.json new file mode 100644 index 00000000000..4ccb1fff3de --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-verbose.json @@ -0,0 +1 @@ +{"AnalyzerState":{"isProposalReady":true,"readyGoals":["NetworkInboundUsageDistributionGoal","CpuUsageDistributionGoal","PotentialNwOutGoal","LeaderReplicaDistributionGoal","NetworkInboundCapacityGoal","LeaderBytesInDistributionGoal","DiskCapacityGoal","ReplicaDistributionGoal","RackAwareGoal","TopicReplicaDistributionGoal","NetworkOutboundCapacityGoal","CpuCapacityGoal","DiskUsageDistributionGoal","NetworkOutboundUsageDistributionGoal","ReplicaCapacityGoal"],"goalReadiness":[{"name":"RackAwareGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.0,"requiredNumSnapshots":1},"status":"ready"},{"name":"ReplicaCapacityGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.0,"requiredNumSnapshots":1},"status":"ready"},{"name":"DiskCapacityGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"NetworkInboundCapacityGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"NetworkOutboundCapacityGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"CpuCapacityGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"ReplicaDistributionGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.0,"requiredNumSnapshots":1},"status":"ready"},{"name":"PotentialNwOutGoal","modelCompleteRequirement":{"includeAllTopics":false,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"DiskUsageDistributionGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"NetworkInboundUsageDistributionGoal","modelCompleteRequirement":{"includeAllTopics":false,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"NetworkOutboundUsageDistributionGoal","modelCompleteRequirement":{"includeAllTopics":false,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"CpuUsageDistributionGoal","modelCompleteRequirement":{"includeAllTopics":false,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"TopicReplicaDistributionGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.0,"requiredNumSnapshots":1},"status":"ready"},{"name":"LeaderReplicaDistributionGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.0,"requiredNumSnapshots":1},"status":"ready"},{"name":"LeaderBytesInDistributionGoal","modelCompleteRequirement":{"includeAllTopics":false,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"}]},"MonitorState":{"trainingPct":4.199999999999999,"trained":false,"numFlawedPartitions":0,"monitoredWindows":{"1579713600000":1.0},"state":"RUNNING","numTotalPartitions":65,"numMonitoredWindows":1,"monitoringCoveragePct":100.0,"reasonOfLatestPauseOrResume":"N/A","numValidPartitions":65},"ExecutorState":{"state":"NO_TASK_IN_PROGRESS"},"AnomalyDetectorState":{"recentBrokerFailures":[],"recentGoalViolations":[],"selfHealingDisabled":["BROKER_FAILURE","DISK_FAILURE","GOAL_VIOLATION","METRIC_ANOMALY"],"balancednessScore":100.0,"selfHealingEnabled":[],"recentDiskFailures":[],"metrics":{"meanTimeToStartFixMs":0.0,"numSelfHealingStarted":0,"ongoingAnomalyDurationMs":0,"meanTimeBetweenAnomaliesMs":{"GOAL_VIOLATION":0.0,"METRIC_ANOMALY":0.0,"BROKER_FAILURE":0.0,"DISK_FAILURE":0.0}},"recentMetricAnomalies":[],"selfHealingEnabledRatio":{"BROKER_FAILURE":0.0,"DISK_FAILURE":0.0,"GOAL_VIOLATION":0.0,"METRIC_ANOMALY":0.0}},"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State.json new file mode 100644 index 00000000000..679036a970c --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State.json @@ -0,0 +1 @@ +{"AnalyzerState":{"isProposalReady":true,"readyGoals":["NetworkInboundUsageDistributionGoal","CpuUsageDistributionGoal","PotentialNwOutGoal","LeaderReplicaDistributionGoal","NetworkInboundCapacityGoal","LeaderBytesInDistributionGoal","DiskCapacityGoal","ReplicaDistributionGoal","RackAwareGoal","TopicReplicaDistributionGoal","NetworkOutboundCapacityGoal","CpuCapacityGoal","DiskUsageDistributionGoal","NetworkOutboundUsageDistributionGoal","ReplicaCapacityGoal"]},"MonitorState":{"trainingPct":3.5999999999999996,"trained":false,"numFlawedPartitions":0,"state":"RUNNING","numTotalPartitions":65,"numMonitoredWindows":1,"monitoringCoveragePct":100.0,"reasonOfLatestPauseOrResume":"N/A","numValidPartitions":65},"ExecutorState":{"state":"NO_TASK_IN_PROGRESS"},"AnomalyDetectorState":{"recentBrokerFailures":[],"recentGoalViolations":[],"selfHealingDisabled":["BROKER_FAILURE","DISK_FAILURE","GOAL_VIOLATION","METRIC_ANOMALY"],"balancednessScore":100.0,"selfHealingEnabled":[],"recentDiskFailures":[],"metrics":{"meanTimeToStartFixMs":0.0,"numSelfHealingStarted":0,"ongoingAnomalyDurationMs":0,"meanTimeBetweenAnomaliesMs":{"GOAL_VIOLATION":0.0,"METRIC_ANOMALY":0.0,"BROKER_FAILURE":0.0,"DISK_FAILURE":0.0}},"recentMetricAnomalies":[],"selfHealingEnabledRatio":{"BROKER_FAILURE":0.0,"DISK_FAILURE":0.0,"GOAL_VIOLATION":0.0,"METRIC_ANOMALY":0.0}},"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Stop.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Stop.json new file mode 100644 index 00000000000..683fc1c5780 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Stop.json @@ -0,0 +1 @@ +{"message":"Proposal execution stopped.","version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-Active.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-Active.json new file mode 100644 index 00000000000..3e464f55bc1 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-Active.json @@ -0,0 +1 @@ +{"userTasks":[{"Status":"Active","UserTaskId":"rebalance-no-goals-response","StartMs":"1579874383374"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-completed.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-completed.json new file mode 100644 index 00000000000..252a432c1b7 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-completed.json @@ -0,0 +1 @@ +{"userTasks":[{"Status":"Completed","UserTaskId":"rebalance-no-goals-response","StartMs":"1579874383374","originalResponse":"{\"summary\":{\"numIntraBrokerReplicaMovements\":0,\"excludedBrokersForLeadership\":[],\"numReplicaMovements\":31,\"onDemandBalancednessScoreAfter\":84.08179174145127,\"onDemandBalancednessScoreBefore\":79.74705957325753,\"intraBrokerDataToMoveMB\":0,\"recentWindows\":1,\"dataToMoveMB\":0,\"monitoredPartitionsPercentage\":100.0,\"excludedTopics\":[],\"numLeaderMovements\":12,\"excludedBrokersForReplicaMove\":[]},\"goalSummary\":[{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"RackAwareGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"ReplicaCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"DiskCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"NetworkInboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"NetworkOutboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"CpuCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"ReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"PotentialNwOutGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.07681098514539705,\"replicas\":2.82842712474619,\"leaderReplicas\":0.4714045207910317,\"cpu\":0.1512113578562017,\"networkOutbound\":0.035589620946184876,\"networkInbound\":0.014820814776470369,\"topicReplicas\":3.456966485800899,\"potentialNwOut\":0.010094097216619516},\"MIN\":{\"disk\":1.2837018966674805,\"replicas\":39,\"leaderReplicas\":21,\"cpu\":0.038822758942842484,\"networkOutbound\":0.07294782251119614,\"networkInbound\":0.12725487351417542,\"topicReplicas\":0,\"potentialNwOut\":0.15867099165916443},\"MAX\":{\"disk\":1.446913719177246,\"replicas\":45,\"leaderReplicas\":22,\"cpu\":0.366836279630661,\"networkOutbound\":0.14882435277104378,\"networkInbound\":0.15871809422969818,\"topicReplicas\":26,\"potentialNwOut\":0.18010731786489487}}},\"goal\":\"DiskUsageDistributionGoal\",\"status\":\"FIXED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":1.247219128924647,\"cpu\":0.051785963153765435,\"networkOutbound\":0.037636609995347084,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":20,\"cpu\":0.1092967689037323,\"networkOutbound\":0.0619896724820137,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":23,\"cpu\":0.22588825225830078,\"networkOutbound\":0.15029301866889,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"NetworkInboundUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":10.873004286866726,\"cpu\":0.04113892400977573,\"networkOutbound\":0.007092096980852424,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":7,\"cpu\":0.1116761788725853,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.2092323899269104,\"networkOutbound\":0.10829527676105499,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"NetworkOutboundUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"CpuUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"TopicReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"LeaderReplicaDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"LeaderBytesInDistributionGoal\",\"status\":\"VIOLATED\"}],\"loadAfterOptimization\":{\"hosts\":[{\"FollowerNwInRate\":0.07708756253123283,\"Leaders\":3,\"DiskMB\":1.4570302963256836,\"PnwOutRate\":0.18177223950624466,\"NwOutRate\":0.1046846816316247,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.1997147500514984,\"Replicas\":40,\"LeaderNwInRate\":0.051832232624292374,\"DiskPct\":0.0014570302963256836},{\"FollowerNwInRate\":0.05859703570604324,\"Leaders\":29,\"DiskMB\":1.2767934799194336,\"PnwOutRate\":0.15764965116977692,\"NwOutRate\":0.09905261546373367,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.12119382619857788,\"Replicas\":44,\"LeaderNwInRate\":0.09905261546373367,\"DiskPct\":0.0012767934799194336},{\"FollowerNwInRate\":0.06632691621780396,\"Leaders\":33,\"DiskMB\":1.2810373306274414,\"PnwOutRate\":0.1580745130777359,\"NwOutRate\":0.09174759685993195,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.13859246671199799,\"Replicas\":45,\"LeaderNwInRate\":0.09174759685993195,\"DiskPct\":0.0012810373306274415}],\"brokers\":[{\"FollowerNwInRate\":0.07708756253123283,\"Leaders\":3,\"BrokerState\":\"ALIVE\",\"Broker\":0,\"DiskMB\":1.4570302963256836,\"PnwOutRate\":0.18177223950624466,\"NwOutRate\":0.1046846816316247,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.1997147500514984,\"Replicas\":40,\"LeaderNwInRate\":0.051832232624292374,\"DiskPct\":0.0014570302963256836},{\"FollowerNwInRate\":0.05859703570604324,\"Leaders\":29,\"BrokerState\":\"ALIVE\",\"Broker\":1,\"DiskMB\":1.2767934799194336,\"PnwOutRate\":0.15764965116977692,\"NwOutRate\":0.09905261546373367,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.12119382619857788,\"Replicas\":44,\"LeaderNwInRate\":0.09905261546373367,\"DiskPct\":0.0012767934799194336},{\"FollowerNwInRate\":0.06632691621780396,\"Leaders\":33,\"BrokerState\":\"ALIVE\",\"Broker\":2,\"DiskMB\":1.2810373306274414,\"PnwOutRate\":0.1580745130777359,\"NwOutRate\":0.09174759685993195,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.13859246671199799,\"Replicas\":45,\"LeaderNwInRate\":0.09174759685993195,\"DiskPct\":0.0012810373306274415}]},\"version\":1}","ClientIdentity":"127.0.0.1","RequestURL":"POST /kafkacruisecontrol/rebalance?json\u003dtrue\u0026dryrun\u003dtrue\u0026verbose\u003dfalse"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-inExecution.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-inExecution.json new file mode 100644 index 00000000000..9f61d101057 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-inExecution.json @@ -0,0 +1 @@ +{"userTasks":[{"Status":"InExecution","UserTaskId":"rebalance-no-goals-response","StartMs":"1579874383374","originalResponse":"{\"summary\":{\"numIntraBrokerReplicaMovements\":0,\"excludedBrokersForLeadership\":[],\"numReplicaMovements\":31,\"onDemandBalancednessScoreAfter\":84.08179174145127,\"onDemandBalancednessScoreBefore\":79.74705957325753,\"intraBrokerDataToMoveMB\":0,\"recentWindows\":1,\"dataToMoveMB\":0,\"monitoredPartitionsPercentage\":100.0,\"excludedTopics\":[],\"numLeaderMovements\":12,\"excludedBrokersForReplicaMove\":[]},\"goalSummary\":[{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"RackAwareGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"ReplicaCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"DiskCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"NetworkInboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"NetworkOutboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"CpuCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"ReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"PotentialNwOutGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.07681098514539705,\"replicas\":2.82842712474619,\"leaderReplicas\":0.4714045207910317,\"cpu\":0.1512113578562017,\"networkOutbound\":0.035589620946184876,\"networkInbound\":0.014820814776470369,\"topicReplicas\":3.456966485800899,\"potentialNwOut\":0.010094097216619516},\"MIN\":{\"disk\":1.2837018966674805,\"replicas\":39,\"leaderReplicas\":21,\"cpu\":0.038822758942842484,\"networkOutbound\":0.07294782251119614,\"networkInbound\":0.12725487351417542,\"topicReplicas\":0,\"potentialNwOut\":0.15867099165916443},\"MAX\":{\"disk\":1.446913719177246,\"replicas\":45,\"leaderReplicas\":22,\"cpu\":0.366836279630661,\"networkOutbound\":0.14882435277104378,\"networkInbound\":0.15871809422969818,\"topicReplicas\":26,\"potentialNwOut\":0.18010731786489487}}},\"goal\":\"DiskUsageDistributionGoal\",\"status\":\"FIXED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":1.247219128924647,\"cpu\":0.051785963153765435,\"networkOutbound\":0.037636609995347084,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":20,\"cpu\":0.1092967689037323,\"networkOutbound\":0.0619896724820137,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":23,\"cpu\":0.22588825225830078,\"networkOutbound\":0.15029301866889,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"NetworkInboundUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":10.873004286866726,\"cpu\":0.04113892400977573,\"networkOutbound\":0.007092096980852424,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":7,\"cpu\":0.1116761788725853,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.2092323899269104,\"networkOutbound\":0.10829527676105499,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"NetworkOutboundUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"CpuUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"TopicReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"LeaderReplicaDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"LeaderBytesInDistributionGoal\",\"status\":\"VIOLATED\"}],\"loadAfterOptimization\":{\"hosts\":[{\"FollowerNwInRate\":0.07708756253123283,\"Leaders\":3,\"DiskMB\":1.4570302963256836,\"PnwOutRate\":0.18177223950624466,\"NwOutRate\":0.1046846816316247,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.1997147500514984,\"Replicas\":40,\"LeaderNwInRate\":0.051832232624292374,\"DiskPct\":0.0014570302963256836},{\"FollowerNwInRate\":0.05859703570604324,\"Leaders\":29,\"DiskMB\":1.2767934799194336,\"PnwOutRate\":0.15764965116977692,\"NwOutRate\":0.09905261546373367,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.12119382619857788,\"Replicas\":44,\"LeaderNwInRate\":0.09905261546373367,\"DiskPct\":0.0012767934799194336},{\"FollowerNwInRate\":0.06632691621780396,\"Leaders\":33,\"DiskMB\":1.2810373306274414,\"PnwOutRate\":0.1580745130777359,\"NwOutRate\":0.09174759685993195,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.13859246671199799,\"Replicas\":45,\"LeaderNwInRate\":0.09174759685993195,\"DiskPct\":0.0012810373306274415}],\"brokers\":[{\"FollowerNwInRate\":0.07708756253123283,\"Leaders\":3,\"BrokerState\":\"ALIVE\",\"Broker\":0,\"DiskMB\":1.4570302963256836,\"PnwOutRate\":0.18177223950624466,\"NwOutRate\":0.1046846816316247,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.1997147500514984,\"Replicas\":40,\"LeaderNwInRate\":0.051832232624292374,\"DiskPct\":0.0014570302963256836},{\"FollowerNwInRate\":0.05859703570604324,\"Leaders\":29,\"BrokerState\":\"ALIVE\",\"Broker\":1,\"DiskMB\":1.2767934799194336,\"PnwOutRate\":0.15764965116977692,\"NwOutRate\":0.09905261546373367,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.12119382619857788,\"Replicas\":44,\"LeaderNwInRate\":0.09905261546373367,\"DiskPct\":0.0012767934799194336},{\"FollowerNwInRate\":0.06632691621780396,\"Leaders\":33,\"BrokerState\":\"ALIVE\",\"Broker\":2,\"DiskMB\":1.2810373306274414,\"PnwOutRate\":0.1580745130777359,\"NwOutRate\":0.09174759685993195,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.13859246671199799,\"Replicas\":45,\"LeaderNwInRate\":0.09174759685993195,\"DiskPct\":0.0012810373306274415}]},\"version\":1}","ClientIdentity":"127.0.0.1","RequestURL":"POST /kafkacruisecontrol/rebalance?json\u003dtrue\u0026dryrun\u003dtrue\u0026verbose\u003dfalse"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-Active.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-Active.json new file mode 100644 index 00000000000..63df142ebca --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-Active.json @@ -0,0 +1 @@ +{"userTasks":[{"Status":"Active","UserTaskId":"rebalance-no-goals-verbose-response","StartMs":"1579874383374"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-completed.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-completed.json new file mode 100644 index 00000000000..444c9445b50 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-completed.json @@ -0,0 +1 @@ +{"userTasks":[{"Status":"Completed","UserTaskId":"rebalance-no-goals-verbose-response","StartMs":"1579874949798","originalResponse":"{\"summary\":{\"numIntraBrokerReplicaMovements\":0,\"excludedBrokersForLeadership\":[],\"numReplicaMovements\":19,\"onDemandBalancednessScoreAfter\":87.66421502095022,\"onDemandBalancednessScoreBefore\":79.74705957325753,\"intraBrokerDataToMoveMB\":0,\"recentWindows\":1,\"dataToMoveMB\":0,\"monitoredPartitionsPercentage\":100.0,\"excludedTopics\":[],\"numLeaderMovements\":21,\"excludedBrokersForReplicaMove\":[]},\"proposals\":[{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535008712,\"partition\":26,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535008898,\"partition\":20,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535009084,\"partition\":14,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132640,\"partition\":9,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132919,\"partition\":0,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132826,\"partition\":3,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535009022,\"partition\":16,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132051,\"partition\":28,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132454,\"partition\":15,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132733,\"partition\":6,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535008681,\"partition\":27,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535009394,\"partition\":4,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132423,\"partition\":16,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":1},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132237,\"partition\":22,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535009518,\"partition\":0,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[2,1],\"topicPartition\":{\"hash\":-2093132485,\"partition\":14,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":2},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132268,\"partition\":21,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132547,\"partition\":12,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535009146,\"partition\":12,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132175,\"partition\":24,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535008836,\"partition\":22,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535008774,\"partition\":24,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132082,\"partition\":27,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535009053,\"partition\":15,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132361,\"partition\":18,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093131989,\"partition\":30,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535009425,\"partition\":3,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[2,1],\"topicPartition\":{\"hash\":-2093132671,\"partition\":8,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":2},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-2093132764,\"partition\":5,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535008960,\"partition\":18,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535009239,\"partition\":9,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535009332,\"partition\":6,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-2093132578,\"partition\":11,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132795,\"partition\":4,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":1},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535009208,\"partition\":10,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535008588,\"partition\":30,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535008867,\"partition\":21,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535009270,\"partition\":8,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132609,\"partition\":10,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":1},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535009456,\"partition\":2,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2}],\"loadBeforeOptimization\":{\"hosts\":[{\"FollowerNwInRate\":0.06354837119579315,\"Leaders\":23,\"DiskMB\":1.9233150482177734,\"PnwOutRate\":0.2267979085445404,\"NwOutRate\":0.16324952989816666,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.37949633598327637,\"Replicas\":44,\"LeaderNwInRate\":0.11040031909942627,\"DiskPct\":0.0019233150482177734},{\"FollowerNwInRate\":0.06826946139335632,\"Leaders\":22,\"DiskMB\":1.1729974746704102,\"PnwOutRate\":0.1381157636642456,\"NwOutRate\":0.06984630227088928,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.01914038509130478,\"Replicas\":43,\"LeaderNwInRate\":0.06984630227088928,\"DiskPct\":0.0011729974746704102},{\"FollowerNwInRate\":0.06978311762213707,\"Leaders\":20,\"DiskMB\":1.127202033996582,\"PnwOutRate\":0.13176019489765167,\"NwOutRate\":0.0619770772755146,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.016685860231518745,\"Replicas\":42,\"LeaderNwInRate\":0.0619770772755146,\"DiskPct\":0.0011272020339965821}],\"brokers\":[{\"FollowerNwInRate\":0.06354837119579315,\"Leaders\":23,\"BrokerState\":\"ALIVE\",\"Broker\":0,\"DiskMB\":1.9233150482177734,\"PnwOutRate\":0.2267979085445404,\"NwOutRate\":0.16324952989816666,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.37949633598327637,\"Replicas\":44,\"LeaderNwInRate\":0.11040031909942627,\"DiskPct\":0.0019233150482177734},{\"FollowerNwInRate\":0.06826946139335632,\"Leaders\":22,\"BrokerState\":\"ALIVE\",\"Broker\":1,\"DiskMB\":1.1729974746704102,\"PnwOutRate\":0.1381157636642456,\"NwOutRate\":0.06984630227088928,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.01914038509130478,\"Replicas\":43,\"LeaderNwInRate\":0.06984630227088928,\"DiskPct\":0.0011729974746704102},{\"FollowerNwInRate\":0.06978311762213707,\"Leaders\":20,\"BrokerState\":\"ALIVE\",\"Broker\":2,\"DiskMB\":1.127202033996582,\"PnwOutRate\":0.13176019489765167,\"NwOutRate\":0.0619770772755146,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.016685860231518745,\"Replicas\":42,\"LeaderNwInRate\":0.0619770772755146,\"DiskPct\":0.0011272020339965821}]},\"goalSummary\":[{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"RackAwareGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"ReplicaCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"DiskCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"NetworkInboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"NetworkOutboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"CpuCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"ReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"PotentialNwOutGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795321861902},\"STD\":{\"disk\":0.08102917447088125,\"replicas\":2.943920288775949,\"leaderReplicas\":0.9428090415820634,\"cpu\":0.13623909868422068,\"networkOutbound\":0.034585760987320004,\"networkInbound\":0.014784541073763445,\"topicReplicas\":3.4901380514202214,\"potentialNwOut\":0.010205221426926758},\"MIN\":{\"disk\":1.344813346862793,\"replicas\":39,\"leaderReplicas\":21,\"cpu\":0.03532284498214722,\"networkOutbound\":0.07242386788129807,\"networkInbound\":0.1270771473646164,\"topicReplicas\":0,\"potentialNwOut\":0.15719836950302124},\"MAX\":{\"disk\":1.522233009338379,\"replicas\":46,\"leaderReplicas\":23,\"cpu\":0.33094894886016846,\"networkOutbound\":0.14723889157176018,\"networkInbound\":0.15954913198947906,\"topicReplicas\":26,\"potentialNwOut\":0.17992635816335678}}},\"goal\":\"DiskUsageDistributionGoal\",\"status\":\"FIXED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":3.0912061651652345,\"cpu\":0.16117079877219728,\"networkOutbound\":0.04415480011505807,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":19,\"cpu\":0.016284657642245293,\"networkOutbound\":0.06686002761125565,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":26,\"cpu\":0.36616960167884827,\"networkOutbound\":0.16080114245414734,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"NetworkInboundUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":6.944222218666553,\"cpu\":0.06713655515670224,\"networkOutbound\":0.0026546728918540458,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":12,\"cpu\":0.08291831612586975,\"networkOutbound\":0.09591187536716461,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":28,\"cpu\":0.23290228843688965,\"networkOutbound\":0.10204722080379725,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"NetworkOutboundUsageDistributionGoal\",\"status\":\"FIXED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"CpuUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"TopicReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"LeaderReplicaDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"LeaderBytesInDistributionGoal\",\"status\":\"VIOLATED\"}],\"loadAfterOptimization\":{\"hosts\":[{\"FollowerNwInRate\":0.08764694258570671,\"Leaders\":1,\"DiskMB\":1.5295181274414062,\"PnwOutRate\":0.1811188980937004,\"NwOutRate\":0.093471959233284,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.21230719983577728,\"Replicas\":40,\"LeaderNwInRate\":0.04062274470925331,\"DiskPct\":0.0015295181274414063},{\"FollowerNwInRate\":0.05857257544994354,\"Leaders\":30,\"DiskMB\":1.349588394165039,\"PnwOutRate\":0.15838229656219482,\"NwOutRate\":0.09980972111225128,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.09227972477674484,\"Replicas\":45,\"LeaderNwInRate\":0.09980972111225128,\"DiskPct\":0.001349588394165039},{\"FollowerNwInRate\":0.055381447076797485,\"Leaders\":34,\"DiskMB\":1.3444080352783203,\"PnwOutRate\":0.15717267990112305,\"NwOutRate\":0.10179123282432556,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.11073566973209381,\"Replicas\":44,\"LeaderNwInRate\":0.10179123282432556,\"DiskPct\":0.0013444080352783203}],\"brokers\":[{\"FollowerNwInRate\":0.08764694258570671,\"Leaders\":1,\"BrokerState\":\"ALIVE\",\"Broker\":0,\"DiskMB\":1.5295181274414062,\"PnwOutRate\":0.1811188980937004,\"NwOutRate\":0.093471959233284,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.21230719983577728,\"Replicas\":40,\"LeaderNwInRate\":0.04062274470925331,\"DiskPct\":0.0015295181274414063},{\"FollowerNwInRate\":0.05857257544994354,\"Leaders\":30,\"BrokerState\":\"ALIVE\",\"Broker\":1,\"DiskMB\":1.349588394165039,\"PnwOutRate\":0.15838229656219482,\"NwOutRate\":0.09980972111225128,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.09227972477674484,\"Replicas\":45,\"LeaderNwInRate\":0.09980972111225128,\"DiskPct\":0.001349588394165039},{\"FollowerNwInRate\":0.055381447076797485,\"Leaders\":34,\"BrokerState\":\"ALIVE\",\"Broker\":2,\"DiskMB\":1.3444080352783203,\"PnwOutRate\":0.15717267990112305,\"NwOutRate\":0.10179123282432556,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.11073566973209381,\"Replicas\":44,\"LeaderNwInRate\":0.10179123282432556,\"DiskPct\":0.0013444080352783203}]},\"version\":1}","ClientIdentity":"127.0.0.1","RequestURL":"POST /kafkacruisecontrol/rebalance?json\u003dtrue\u0026dryrun\u003dtrue\u0026verbose\u003dtrue"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-inExecution.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-inExecution.json new file mode 100644 index 00000000000..a2424ee02d3 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-inExecution.json @@ -0,0 +1 @@ +{"userTasks":[{"Status":"InExecution","UserTaskId":"rebalance-no-goals-verbose-response","StartMs":"1579874949798","originalResponse":"{\"summary\":{\"numIntraBrokerReplicaMovements\":0,\"excludedBrokersForLeadership\":[],\"numReplicaMovements\":19,\"onDemandBalancednessScoreAfter\":87.66421502095022,\"onDemandBalancednessScoreBefore\":79.74705957325753,\"intraBrokerDataToMoveMB\":0,\"recentWindows\":1,\"dataToMoveMB\":0,\"monitoredPartitionsPercentage\":100.0,\"excludedTopics\":[],\"numLeaderMovements\":21,\"excludedBrokersForReplicaMove\":[]},\"proposals\":[{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535008712,\"partition\":26,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535008898,\"partition\":20,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535009084,\"partition\":14,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132640,\"partition\":9,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132919,\"partition\":0,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132826,\"partition\":3,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535009022,\"partition\":16,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132051,\"partition\":28,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132454,\"partition\":15,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132733,\"partition\":6,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535008681,\"partition\":27,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535009394,\"partition\":4,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132423,\"partition\":16,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":1},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132237,\"partition\":22,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535009518,\"partition\":0,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[2,1],\"topicPartition\":{\"hash\":-2093132485,\"partition\":14,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":2},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132268,\"partition\":21,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132547,\"partition\":12,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535009146,\"partition\":12,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132175,\"partition\":24,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535008836,\"partition\":22,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535008774,\"partition\":24,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132082,\"partition\":27,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535009053,\"partition\":15,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132361,\"partition\":18,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093131989,\"partition\":30,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535009425,\"partition\":3,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[2,1],\"topicPartition\":{\"hash\":-2093132671,\"partition\":8,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":2},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-2093132764,\"partition\":5,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535008960,\"partition\":18,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535009239,\"partition\":9,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535009332,\"partition\":6,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-2093132578,\"partition\":11,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132795,\"partition\":4,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":1},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535009208,\"partition\":10,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535008588,\"partition\":30,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535008867,\"partition\":21,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535009270,\"partition\":8,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132609,\"partition\":10,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":1},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535009456,\"partition\":2,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2}],\"loadBeforeOptimization\":{\"hosts\":[{\"FollowerNwInRate\":0.06354837119579315,\"Leaders\":23,\"DiskMB\":1.9233150482177734,\"PnwOutRate\":0.2267979085445404,\"NwOutRate\":0.16324952989816666,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.37949633598327637,\"Replicas\":44,\"LeaderNwInRate\":0.11040031909942627,\"DiskPct\":0.0019233150482177734},{\"FollowerNwInRate\":0.06826946139335632,\"Leaders\":22,\"DiskMB\":1.1729974746704102,\"PnwOutRate\":0.1381157636642456,\"NwOutRate\":0.06984630227088928,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.01914038509130478,\"Replicas\":43,\"LeaderNwInRate\":0.06984630227088928,\"DiskPct\":0.0011729974746704102},{\"FollowerNwInRate\":0.06978311762213707,\"Leaders\":20,\"DiskMB\":1.127202033996582,\"PnwOutRate\":0.13176019489765167,\"NwOutRate\":0.0619770772755146,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.016685860231518745,\"Replicas\":42,\"LeaderNwInRate\":0.0619770772755146,\"DiskPct\":0.0011272020339965821}],\"brokers\":[{\"FollowerNwInRate\":0.06354837119579315,\"Leaders\":23,\"BrokerState\":\"ALIVE\",\"Broker\":0,\"DiskMB\":1.9233150482177734,\"PnwOutRate\":0.2267979085445404,\"NwOutRate\":0.16324952989816666,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.37949633598327637,\"Replicas\":44,\"LeaderNwInRate\":0.11040031909942627,\"DiskPct\":0.0019233150482177734},{\"FollowerNwInRate\":0.06826946139335632,\"Leaders\":22,\"BrokerState\":\"ALIVE\",\"Broker\":1,\"DiskMB\":1.1729974746704102,\"PnwOutRate\":0.1381157636642456,\"NwOutRate\":0.06984630227088928,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.01914038509130478,\"Replicas\":43,\"LeaderNwInRate\":0.06984630227088928,\"DiskPct\":0.0011729974746704102},{\"FollowerNwInRate\":0.06978311762213707,\"Leaders\":20,\"BrokerState\":\"ALIVE\",\"Broker\":2,\"DiskMB\":1.127202033996582,\"PnwOutRate\":0.13176019489765167,\"NwOutRate\":0.0619770772755146,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.016685860231518745,\"Replicas\":42,\"LeaderNwInRate\":0.0619770772755146,\"DiskPct\":0.0011272020339965821}]},\"goalSummary\":[{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"RackAwareGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"ReplicaCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"DiskCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"NetworkInboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"NetworkOutboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"CpuCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"ReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"PotentialNwOutGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795321861902},\"STD\":{\"disk\":0.08102917447088125,\"replicas\":2.943920288775949,\"leaderReplicas\":0.9428090415820634,\"cpu\":0.13623909868422068,\"networkOutbound\":0.034585760987320004,\"networkInbound\":0.014784541073763445,\"topicReplicas\":3.4901380514202214,\"potentialNwOut\":0.010205221426926758},\"MIN\":{\"disk\":1.344813346862793,\"replicas\":39,\"leaderReplicas\":21,\"cpu\":0.03532284498214722,\"networkOutbound\":0.07242386788129807,\"networkInbound\":0.1270771473646164,\"topicReplicas\":0,\"potentialNwOut\":0.15719836950302124},\"MAX\":{\"disk\":1.522233009338379,\"replicas\":46,\"leaderReplicas\":23,\"cpu\":0.33094894886016846,\"networkOutbound\":0.14723889157176018,\"networkInbound\":0.15954913198947906,\"topicReplicas\":26,\"potentialNwOut\":0.17992635816335678}}},\"goal\":\"DiskUsageDistributionGoal\",\"status\":\"FIXED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":3.0912061651652345,\"cpu\":0.16117079877219728,\"networkOutbound\":0.04415480011505807,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":19,\"cpu\":0.016284657642245293,\"networkOutbound\":0.06686002761125565,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":26,\"cpu\":0.36616960167884827,\"networkOutbound\":0.16080114245414734,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"NetworkInboundUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":6.944222218666553,\"cpu\":0.06713655515670224,\"networkOutbound\":0.0026546728918540458,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":12,\"cpu\":0.08291831612586975,\"networkOutbound\":0.09591187536716461,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":28,\"cpu\":0.23290228843688965,\"networkOutbound\":0.10204722080379725,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"NetworkOutboundUsageDistributionGoal\",\"status\":\"FIXED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"CpuUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"TopicReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"LeaderReplicaDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"LeaderBytesInDistributionGoal\",\"status\":\"VIOLATED\"}],\"loadAfterOptimization\":{\"hosts\":[{\"FollowerNwInRate\":0.08764694258570671,\"Leaders\":1,\"DiskMB\":1.5295181274414062,\"PnwOutRate\":0.1811188980937004,\"NwOutRate\":0.093471959233284,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.21230719983577728,\"Replicas\":40,\"LeaderNwInRate\":0.04062274470925331,\"DiskPct\":0.0015295181274414063},{\"FollowerNwInRate\":0.05857257544994354,\"Leaders\":30,\"DiskMB\":1.349588394165039,\"PnwOutRate\":0.15838229656219482,\"NwOutRate\":0.09980972111225128,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.09227972477674484,\"Replicas\":45,\"LeaderNwInRate\":0.09980972111225128,\"DiskPct\":0.001349588394165039},{\"FollowerNwInRate\":0.055381447076797485,\"Leaders\":34,\"DiskMB\":1.3444080352783203,\"PnwOutRate\":0.15717267990112305,\"NwOutRate\":0.10179123282432556,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.11073566973209381,\"Replicas\":44,\"LeaderNwInRate\":0.10179123282432556,\"DiskPct\":0.0013444080352783203}],\"brokers\":[{\"FollowerNwInRate\":0.08764694258570671,\"Leaders\":1,\"BrokerState\":\"ALIVE\",\"Broker\":0,\"DiskMB\":1.5295181274414062,\"PnwOutRate\":0.1811188980937004,\"NwOutRate\":0.093471959233284,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.21230719983577728,\"Replicas\":40,\"LeaderNwInRate\":0.04062274470925331,\"DiskPct\":0.0015295181274414063},{\"FollowerNwInRate\":0.05857257544994354,\"Leaders\":30,\"BrokerState\":\"ALIVE\",\"Broker\":1,\"DiskMB\":1.349588394165039,\"PnwOutRate\":0.15838229656219482,\"NwOutRate\":0.09980972111225128,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.09227972477674484,\"Replicas\":45,\"LeaderNwInRate\":0.09980972111225128,\"DiskPct\":0.001349588394165039},{\"FollowerNwInRate\":0.055381447076797485,\"Leaders\":34,\"BrokerState\":\"ALIVE\",\"Broker\":2,\"DiskMB\":1.3444080352783203,\"PnwOutRate\":0.15717267990112305,\"NwOutRate\":0.10179123282432556,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.11073566973209381,\"Replicas\":44,\"LeaderNwInRate\":0.10179123282432556,\"DiskPct\":0.0013444080352783203}]},\"version\":1}","ClientIdentity":"127.0.0.1","RequestURL":"POST /kafkacruisecontrol/rebalance?json\u003dtrue\u0026dryrun\u003dtrue\u0026verbose\u003dtrue"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-completed-with-error.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-completed-with-error.json new file mode 100644 index 00000000000..8fe652dd9e9 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-completed-with-error.json @@ -0,0 +1 @@ +{"userTasks":[{"Status":"CompletedWithError","UserTaskId":"8a2538a5-f2c3-4df0-9240-fe1248d03002","StartMs":"1591625671598","originalResponse":"COMPLETED_WITH_ERROR","ClientIdentity":"127.0.0.1","RequestURL":"POST /kafkacruisecontrol/rebalance?dryrun\u003dtroo"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-empty.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-empty.json new file mode 100644 index 00000000000..5a56d5ce91d --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-empty.json @@ -0,0 +1 @@ +{"userTasks":[],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-fetch-error.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-fetch-error.json new file mode 100644 index 00000000000..8d98307e6ef --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-fetch-error.json @@ -0,0 +1 @@ +{"errorMessage":"Error processing GET request \u0027/user_tasks\u0027 due to: \u0027Error happened in fetching response for task 9730e4fb-ea41-4e2d-b053-9be2310589b5\u0027.","stackTrace":"java.lang.IllegalStateException: Error happened in fetching response for task 9730e4fb-ea41-4e2d-b053-9be2310589b5\n\tat com.linkedin.kafka.cruisecontrol.servlet.UserTaskManager$UserTaskInfo.getJsonStructure(UserTaskManager.java:768)\n\tat com.linkedin.kafka.cruisecontrol.servlet.response.UserTaskState.getJSONString(UserTaskState.java:47)\n\tat com.linkedin.kafka.cruisecontrol.servlet.response.UserTaskState.discardIrrelevantAndCacheRelevant(UserTaskState.java:179)\n\tat com.linkedin.kafka.cruisecontrol.servlet.response.AbstractCruiseControlResponse.discardIrrelevantResponse(AbstractCruiseControlResponse.java:41)\n\tat com.linkedin.kafka.cruisecontrol.servlet.response.AbstractCruiseControlResponse.writeSuccessResponse(AbstractCruiseControlResponse.java:34)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.AbstractRequest.handle(AbstractRequest.java:41)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.handleGet(KafkaCruiseControlServlet.java:170)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doGetOrPost(KafkaCruiseControlServlet.java:120)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doGet(KafkaCruiseControlServlet.java:97)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:687)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:547)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1607)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1297)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1577)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1212)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:500)\n\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)\n\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.concurrent.ExecutionException: Operation \u0027Rebalance\u0027 received exception. com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1588169877556] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d3555, granularity\u003dENTITY)\n\tat java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)\n\tat java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.OperationFuture.get(OperationFuture.java:49)\n\tat com.linkedin.kafka.cruisecontrol.servlet.UserTaskManager$UserTaskInfo.getJsonStructure(UserTaskManager.java:766)\n\t... 39 more\nCaused by: com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1588169877556] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d3555, granularity\u003dENTITY)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:132)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.workWithoutClusterModel(RebalanceRunnable.java:121)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:137)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.getResult(RebalanceRunnable.java:94)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.getResult(RebalanceRunnable.java:30)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.OperationRunnable.run(OperationRunnable.java:45)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.run(GoalBasedOperationRunnable.java:34)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\t... 1 more\nCaused by: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1588169877556] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d3555, granularity\u003dENTITY)\n\tat com.linkedin.cruisecontrol.monitor.sampling.aggregator.MetricSampleAggregator.validateCompleteness(MetricSampleAggregator.java:540)\n\tat com.linkedin.cruisecontrol.monitor.sampling.aggregator.MetricSampleAggregator.aggregate(MetricSampleAggregator.java:212)\n\tat com.linkedin.kafka.cruisecontrol.monitor.sampling.aggregator.KafkaPartitionMetricSampleAggregator.aggregate(KafkaPartitionMetricSampleAggregator.java:151)\n\tat com.linkedin.kafka.cruisecontrol.monitor.LoadMonitor.clusterModel(LoadMonitor.java:499)\n\tat com.linkedin.kafka.cruisecontrol.KafkaCruiseControl.clusterModel(KafkaCruiseControl.java:301)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.ProposalsRunnable.workWithClusterModel(ProposalsRunnable.java:81)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:128)\n\t... 11 more\n","version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.crt b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.crt new file mode 100644 index 00000000000..a3bc16ab675 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDKjCCAhKgAwIBAgIJAMWajM5VRrKCMA0GCSqGSIb3DQEBCwUAMCoxEzARBgNV +BAoMCnN0cmltemkuaW8xEzARBgNVBAMMCmNsaWVudHMtY2EwHhcNMTgxMDIzMTAw +MTI1WhcNMTgxMDI0MTAwMTI1WjAqMRMwEQYDVQQKDApzdHJpbXppLmlvMRMwEQYD +VQQDDApjbGllbnRzLWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +o/rpINfGbR6LQPacAKiGPYqRD6tUGeBnO3hCtCfcIBbbNT1n5FpYapl7914dKbx3 +QNihr+IyfSxoYB22Zva0GL6Pgub+J49qL3gb2mxTOv+8yj9iRunW3A2noiieq+3X +iIPoNJFwF60JvjLGKgBtlWiF33yxEGyMXD87fMp2vW3r5Iq9Ky+2bo0CBgF8Me6A +U4OTVkHSN7cY9Tob0yoHjxqMurDahpirxPDsouMMfn7OVHvB9yGMv6XZWTQImrcH +tGmdTPKEOzQxkw72TLO9FjxXii3B4QbgybYcue0lLsGzqSdoRlPofmLwdVE1YEch +pwPR9t5hTtUegtM/eEkosQIDAQABo1MwUTAdBgNVHQ4EFgQU6qjFM3TZMQfvTpla +/7CKxfPkK00wHwYDVR0jBBgwFoAU6qjFM3TZMQfvTpla/7CKxfPkK00wDwYDVR0T +AQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAVIq7voMSkMP52Pprr8iMUJkb +EtpwGxFLGnJG9VFwjdsl82T3Psmyph6s9gRjLN+QhUfxbwsdwQlBrloNVT8IXyIR +Vq9EJZ6rDqwNVj88Xb82PNTdIvdZoV7+MwJzamsZoxPfjxzstPZgdd1uEs2Dysyp +5KtgKUHBd/YhWKQoTSGcXZTaUftc6D/6AtpaW9qLmNhYgmeVF+4h7qAWwm0p1dEb +c2muyShLbaRekdyQ1gsYrCBsHsUEETw82ilEcC1CDcNEZiYcF6H+jDFaoMNo/qT0 +sxkfF2cnpFjKgRaeFhut+8kCavc//JT77aaoIvox3RjTpdWdI7ACSQzjVhnMJQ== +-----END CERTIFICATE----- diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.key b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.key new file mode 100644 index 00000000000..91c8647018c --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCj+ukg18ZtHotA +9pwAqIY9ipEPq1QZ4Gc7eEK0J9wgFts1PWfkWlhqmXv3Xh0pvHdA2KGv4jJ9LGhg +HbZm9rQYvo+C5v4nj2oveBvabFM6/7zKP2JG6dbcDaeiKJ6r7deIg+g0kXAXrQm+ +MsYqAG2VaIXffLEQbIxcPzt8yna9bevkir0rL7ZujQIGAXwx7oBTg5NWQdI3txj1 +OhvTKgePGoy6sNqGmKvE8Oyi4wx+fs5Ue8H3IYy/pdlZNAiatwe0aZ1M8oQ7NDGT +DvZMs70WPFeKLcHhBuDJthy57SUuwbOpJ2hGU+h+YvB1UTVgRyGnA9H23mFO1R6C +0z94SSixAgMBAAECggEAdd+5kVhKVMouA8bCIV8DEF35JLBdxjQfQQqTuHkmrRKB +BOZdNjMTd51ZFVpb0FKfzsdqgsowzPYNGXqCUcVpdJgXBVwSulFHXVQTgZF4yuJm +zWN+u8cAIjLWm6RjWueflYxscM1TLFHAvS42cJ7aJxp5kUtK5KmCxBTYKD5J2KRy +u/2rOmxFc4e0fqKIPeE4Wufi2Gu5BuM0I51iD/3S5Qe93iW3+PSuxkRmGDBtZ4Mm +6MHvqOrcn3WDl4KukPs0mSq6bON/iDb6YRzboMMpzcxxJ7OzEh/5cG/J5Z9SF7OC +MJr2rWPQS/FbdFifml627brXdhkpT6MZTUqMuACgAQKBgQDUQrO4NYJgWwMljh0d +8gKGcRUfpKpcdEvfFCVBEpDZdO60D77wFSXJGOS4KmtkzcJDfqhvyn7noju05c8X ++BeqU3KieaRe8ma7Gmtdc+PyaQv2Vqf+CeDXHNGwufgZzC1yig8Q8rjmYDuE/Izd +SUSKQrix609Ah0zORs0aYYWdAQKBgQDFxUosB8Dr36A0v6u6s/xrG8gSgj8rf20f +WHXM6OBfatpqxPGkuFlmqTRnhq4eIdPoGHm16DIQYdF14WaJhQ/zVf3W/r7sJuQe +pR2kiENngpAJRuKNpxKsTflJdsW8oPFiaPtIk5g9FDjrvVhCpD2LUJc3u5DewwJT +TBO9rNibsQKBgFwMtS2snua0cW/m6n+jBS9SeQuo+GxxzrlmXiWTLJfxWtdhgLdT +JHjKP94SH1Ku3JEyq08XrOM8+tGfW6kUYQbve2Y0hHDchGqdsXPsnyzwG0zwFZhY +plYDXHhcndhqMEdc0d3StRbLIuSwNVJ9xKiE+N3Hoy3jvw4xrB7FrhEBAoGAYfOL +//C7KVfx1g5UdL0uOLJizl/5/4Y2Or8qYRm5/yhCE32FnSq9BK6rSNcYp83jUWHF +7kWZfimkf3jquxPPSZr+hRxY3UeJ1m+7FcFzePHeeunDzZrBEdvwquULnJgt1arf +Qhvv29iHNKLr8t27qaN5sd3RK7N0FGNqp5fTFJECgYEApPrpX/wSvdOtj2fdzU3K +aEl55IgZWT9dtVPBeW+5Bmbgo0844cTav+m25etIYeYcXFSx+GvVppHCwM9+R+m8 +ZydUfhPqKhlVeBSVX0yo9eFqZivlbz5yqGQw4s0pWafZ/499I/jbUfKf1QjEXmX4 +RvCv25Ee4a9j4LcqbRQpAqk= +-----END PRIVATE KEY----- diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.crt b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.crt new file mode 100644 index 00000000000..cf1d9a33b6f --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDKjCCAhKgAwIBAgIJAJBt0u1FFTG+MA0GCSqGSIb3DQEBCwUAMCoxEzARBgNV +BAoMCnN0cmltemkuaW8xEzARBgNVBAMMCmNsdXN0ZXItY2EwHhcNMTgxMDIzMTAw +MTExWhcNMTgxMDI0MTAwMTExWjAqMRMwEQYDVQQKDApzdHJpbXppLmlvMRMwEQYD +VQQDDApjbHVzdGVyLWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +xpuYrNXYHqw3ajwd12aAeuTlAX4rVwVdPuIex6A4NL8J3d2DV+ngXgNTH//RhiF5 +If5KRWSsLei5BUIrwuQutOUNCQwyACmri9+yrx6+tevligiokAUwhHxcDHZpwC3T ++2dzk/BkI++vbSuvjFmBKGQi9gfyoTnStTEQ85KVJUS170hzwDjzaEiJsKpOPx/G ++KTdkAopLucoxr4sxhYeO4mQ2PkT0QL+R8Ohs6LD6v/bqalFP+rS8vibolfxjMNm +lXQCOd8UfXy8OEOaNoNCvhnn/cT/hbEG/ARbV3hHmUh9COV+TSV5dhsbmS5h4MKw +LzP449nGQBmLSkZMu984DQIDAQABo1MwUTAdBgNVHQ4EFgQUOXubcHBZJ7vSzjpi +pfXdFSP3dsEwHwYDVR0jBBgwFoAUOXubcHBZJ7vSzjpipfXdFSP3dsEwDwYDVR0T +AQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAFFPGykbzUREDMzh+33i3a8TF +UTQnPMN/SuVbpLfQdpkpLO+aVWjVvJP6qMrI7jRO5zhj4MecAf7YKpe+dyRTTz9B +Dy9BZcujHYjCKdcKBnBFQ7B1xQm9tL1bw+a3ABzSTlhLiBcCxhJEawlWy1Gh18ab +3x/Kqnz0mk/jt5+n9HwlKHuBQVIxRCsfHWwq+WvIfoxM+N//akV8/29hLUf5TlYH +F5CX4G2pA5sSdaDHQ4ekQWuqM6tfvsGLl2KOmEFEgVR4GfaWI4BsUCzlpBNcCGWv +V7klZvBxQPG7MVy0cB8yzTDtUpR0jUFUkZOSp5Pr3yWcwPWEgWkaXYfO+FWETA== +-----END CERTIFICATE----- diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.key b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.key new file mode 100644 index 00000000000..e7fdcc47b0d --- /dev/null +++ b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDGm5is1dgerDdq +PB3XZoB65OUBfitXBV0+4h7HoDg0vwnd3YNX6eBeA1Mf/9GGIXkh/kpFZKwt6LkF +QivC5C605Q0JDDIAKauL37KvHr616+WKCKiQBTCEfFwMdmnALdP7Z3OT8GQj769t +K6+MWYEoZCL2B/KhOdK1MRDzkpUlRLXvSHPAOPNoSImwqk4/H8b4pN2QCiku5yjG +vizGFh47iZDY+RPRAv5Hw6GzosPq/9upqUU/6tLy+JuiV/GMw2aVdAI53xR9fLw4 +Q5o2g0K+Gef9xP+FsQb8BFtXeEeZSH0I5X5NJXl2GxuZLmHgwrAvM/jj2cZAGYtK +Rky73zgNAgMBAAECggEAI2xTIdiOUII07AzG4clVdxXmRorjXgUF6ZZZGQ/ZlobQ +UrMUnxSGwR3ksJtnGn5T5Z0+T/wxvYp5nZd8yKj8L6V+2rNDI8ZK44rFivh32Wi2 +qxT6Q525Vpf7rvlbyTwjR/7enW9N3R798gHNsMGyCKs7lRg7zUfL7idPN7JYSaoU +IdLeHhnwMKrqH/gcOedMzfG9Mi44ASqgXkCbw63JOLaDrTsnm2+HtNxuWyDr7RXe +59szAiTHAGxxtYNonDspJwVZivvsWAxsgJcMHz+p8+5R3cOPh0BIHDh7IeQ6+D5p +EcEX7mMOgPEv6dgnWB50M736U03E0WJJi0ltJn50QQKBgQDth07ssYnFBbJ9bWtW +6Od1rnkiWFkilyFiIuHbmMywq78wYWAIFrevcABi3agrgismiSsyt9+WeviKkHeG +ByCDNmlGXGCaV6Yv+/l/qjX2tsHSgETtksbX6zmgpLIuE84zftPjhZcDvhnkJGNO +apaWaAWlaMdImtGVf331uFu73QKBgQDWDXVKgICR0u+Ei47E1TvfM9HpmwDOijlV +3/UQlbLLqLg2YRDChZj3L80pbSeqkLHt1Zxi4OD21156i6/ihIY7vM+LkPvf7Avu +IeMFtrqOa1Z3vGmMr5LVw7WnIfT4gZ1jObuKc+rGUHEny96x8+NWuVuHNF+7k/+7 +gExTxi2B8QKBgGX9L1pacPl0FMvea7SJlLjnDYQ9wygjFGZ669fKqDlDxXgUl5Nh +jcV6pe/NlSP5ZGXLiAzi/tIyQv3cQjX+YWt1tYZMq/4ZnHYGD39NqpYgquCjyvTn +jRGxIrFjhk5amrNpxblv5wPoYF2hcjJ9eeNjDumTL95w+4ThlUgovNrRAoGAK/FL +WOYUfts8zIsR3hqgVev/deOaQMxjhNubJbJ1qBWU66T1mdlvU59+kLiV4hAeVuL5 +Xdsok8QW4zV2AByQqgbS3KYA7zE4KcTPJEck+UPT1nTZfkY08Kliy1LPRYzmUI5z +j7LISboN4MubhhC5ZP5cad84n/t8DnQCN1iB0yECgYBkIuCZhfgOvj5cQA6Y47+K +ssOpS8ERrbxhWoqzENfhrK7eK520QakZTk58nnVB5JdLCqVAtIqD6pWnV1X0uLa4 +TWq7WOxks1TZae4rfju2JWLhC1mp6eXn1uqoZwVJQVEHOf50NSbT5Y29cZyH/qGT +Lf56flsChim+cuSPAzAOEA== +-----END PRIVATE KEY----- diff --git a/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-duplicates.yaml b/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-duplicates.yaml new file mode 100644 index 00000000000..0fee55999bf --- /dev/null +++ b/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-duplicates.yaml @@ -0,0 +1,62 @@ +# This file is used to specify the versions of Kafka which will be built +# and supported by the Cluster Operator. It affects both compile time and runtime: +# * The docker images built (see docker-images/build.sh) +# * The KAFKA_IMAGE_MAP configuring the CO in the helm-charts (see helm-charts/kafka-version-tpl.sh) +# * The io.strimzi.operator.cluster.model.KafkaVersion's loaded at runtime +# * Documentation snippets generated by `make docu_versions` +# The idea is that this is the single place you need to update when changing the supported Kafka versions + +# Format of this file: +# is the kafka version number +# when `true` this is the version to be used by the CO by default when a `Kafka` resource lacks an explicit version. Only one Kafka version can be marked as default. +# is the default `inter.broker.protocol.version` used by this Kafka version +# is the default `log.message.format.version` used by this Kafka version +# is the remote (using prefix 'http://' or 'https://') or local (using prefix 'file://') address of the Kafka binary tar archive for this version of Kafka. When using a local file path the absolute path to the binary archive should be used. It is assumed in both cases that the name of the file forms the last section of the path. +# is the SHA512 checksum of the Kafka binary which is specified in the 'url' field. +# is the version of zookeeper required by this version of Kafka. +# is the version string for the third party libraries +# is a list of Strimzi features that are not supported by this Kafka version +# when `true` this version is currently supported by the operator. Unsupported versions are kept for historical reasons. + +- version: 1.0.0 + format: 1.0 + protocol: 1.0 + zookeeper: 3.4.13 + supported: false + default: false +- version: 1.1.0 + format: 1.1 + protocol: 1.1 + url: https://download.tld/kafka-1.1.0.tgz + checksum: DUMMYSHA512CHECKSUM110 + zookeeper: 3.5.7 + third-party-libs: 1.1x + supported: true + default: false +- version: 1.1.1 + format: 1.1 + protocol: 1.1 + url: https://download.tld/kafka-1.1.1.tgz + checksum: DUMMYSHA512CHECKSUM111 + zookeeper: 3.5.7 + third-party-libs: 1.1.x + supported: true + default: false +- version: 1.1.1 + format: 1.1 + protocol: 1.1 + url: https://download.tld/kafka-1.1.1.tgz + checksum: DUMMYSHA512CHECKSUM111 + zookeeper: 3.5.7 + third-party-libs: 1.1.x + supported: true + default: false +- version: 1.2.0 + format: 1.2 + protocol: 1.2 + url: https://download.tld/kafka-1.2.0.tgz + checksum: DUMMYSHA512CHECKSUM120 + zookeeper: 3.5.7 + third-party-libs: 1.2.x + supported: true + default: true \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-nodefault.yaml b/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-nodefault.yaml new file mode 100644 index 00000000000..f6fc055617b --- /dev/null +++ b/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-nodefault.yaml @@ -0,0 +1,53 @@ +# This file is used to specify the versions of Kafka which will be built +# and supported by the Cluster Operator. It affects both compile time and runtime: +# * The docker images built (see docker-images/build.sh) +# * The KAFKA_IMAGE_MAP configuring the CO in the helm-charts (see helm-charts/kafka-version-tpl.sh) +# * The io.strimzi.operator.cluster.model.KafkaVersion's loaded at runtime +# * Documentation snippets generated by `make docu_versions` +# The idea is that this is the single place you need to update when changing the supported Kafka versions + +# Format of this file: +# is the kafka version number +# when `true` this is the version to be used by the CO by default when a `Kafka` resource lacks an explicit version. Only one Kafka version can be marked as default. +# is the default `inter.broker.protocol.version` used by this Kafka version +# is the default `log.message.format.version` used by this Kafka version +# is the remote (using prefix 'http://' or 'https://') or local (using prefix 'file://') address of the Kafka binary tar archive for this version of Kafka. When using a local file path the absolute path to the binary archive should be used. It is assumed in both cases that the name of the file forms the last section of the path. +# is the SHA512 checksum of the Kafka binary which is specified in the 'url' field. +# is the version of zookeeper required by this version of Kafka. +# is the version string for the third party libraries +# is a list of Strimzi features that are not supported by this Kafka version +# when `true` this version is currently supported by the operator. Unsupported versions are kept for historical reasons. + +- version: 1.0.0 + format: 1.0 + protocol: 1.0 + zookeeper: 3.4.13 + supported: false + default: false +- version: 1.1.0 + format: 1.1 + protocol: 1.1 + url: https://download.tld/kafka-1.1.0.tgz + checksum: DUMMYSHA512CHECKSUM110 + zookeeper: 3.5.7 + third-party-libs: 1.1x + supported: true + default: false +- version: 1.1.1 + format: 1.1 + protocol: 1.1 + url: https://download.tld/kafka-1.1.1.tgz + checksum: DUMMYSHA512CHECKSUM111 + zookeeper: 3.5.7 + third-party-libs: 1.1.x + supported: true + default: false +- version: 1.2.0 + format: 1.2 + protocol: 1.2 + url: https://download.tld/kafka-1.2.0.tgz + checksum: DUMMYSHA512CHECKSUM120 + zookeeper: 3.5.7 + third-party-libs: 1.2.x + supported: true + default: false \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-twodefaults.yaml b/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-twodefaults.yaml new file mode 100644 index 00000000000..e200681342b --- /dev/null +++ b/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-twodefaults.yaml @@ -0,0 +1,53 @@ +# This file is used to specify the versions of Kafka which will be built +# and supported by the Cluster Operator. It affects both compile time and runtime: +# * The docker images built (see docker-images/build.sh) +# * The KAFKA_IMAGE_MAP configuring the CO in the helm-charts (see helm-charts/kafka-version-tpl.sh) +# * The io.strimzi.operator.cluster.model.KafkaVersion's loaded at runtime +# * Documentation snippets generated by `make docu_versions` +# The idea is that this is the single place you need to update when changing the supported Kafka versions + +# Format of this file: +# is the kafka version number +# when `true` this is the version to be used by the CO by default when a `Kafka` resource lacks an explicit version. Only one Kafka version can be marked as default. +# is the default `inter.broker.protocol.version` used by this Kafka version +# is the default `log.message.format.version` used by this Kafka version +# is the remote (using prefix 'http://' or 'https://') or local (using prefix 'file://') address of the Kafka binary tar archive for this version of Kafka. When using a local file path the absolute path to the binary archive should be used. It is assumed in both cases that the name of the file forms the last section of the path. +# is the SHA512 checksum of the Kafka binary which is specified in the 'url' field. +# is the version of zookeeper required by this version of Kafka. +# is the version string for the third party libraries +# is a list of Strimzi features that are not supported by this Kafka version +# when `true` this version is currently supported by the operator. Unsupported versions are kept for historical reasons. + +- version: 1.0.0 + format: 1.0 + protocol: 1.0 + zookeeper: 3.4.13 + supported: false + default: false +- version: 1.1.0 + format: 1.1 + protocol: 1.1 + url: https://download.tld/kafka-1.1.0.tgz + checksum: DUMMYSHA512CHECKSUM110 + zookeeper: 3.5.7 + third-party-libs: 1.1x + supported: true + default: false +- version: 1.1.1 + format: 1.1 + protocol: 1.1 + url: https://download.tld/kafka-1.1.1.tgz + checksum: DUMMYSHA512CHECKSUM111 + zookeeper: 3.5.7 + third-party-libs: 1.1.x + supported: true + default: true +- version: 1.2.0 + format: 1.2 + protocol: 1.2 + url: https://download.tld/kafka-1.2.0.tgz + checksum: DUMMYSHA512CHECKSUM120 + zookeeper: 3.5.7 + third-party-libs: 1.2.x + supported: true + default: true \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-valid.yaml b/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-valid.yaml new file mode 100644 index 00000000000..d60332c2f1b --- /dev/null +++ b/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-valid.yaml @@ -0,0 +1,55 @@ +# This file is used to specify the versions of Kafka which will be built +# and supported by the Cluster Operator. It affects both compile time and runtime: +# * The docker images built (see docker-images/build.sh) +# * The KAFKA_IMAGE_MAP configuring the CO in the helm-charts (see helm-charts/kafka-version-tpl.sh) +# * The io.strimzi.operator.cluster.model.KafkaVersion's loaded at runtime +# * Documentation snippets generated by `make docu_versions` +# The idea is that this is the single place you need to update when changing the supported Kafka versions + +# Format of this file: +# is the kafka version number +# when `true` this is the version to be used by the CO by default when a `Kafka` resource lacks an explicit version. Only one Kafka version can be marked as default. +# is the default `inter.broker.protocol.version` used by this Kafka version +# is the default `log.message.format.version` used by this Kafka version +# is the remote (using prefix 'http://' or 'https://') or local (using prefix 'file://') address of the Kafka binary tar archive for this version of Kafka. When using a local file path the absolute path to the binary archive should be used. It is assumed in both cases that the name of the file forms the last section of the path. +# is the SHA512 checksum of the Kafka binary which is specified in the 'url' field. +# is the version of zookeeper required by this version of Kafka. +# is the version string for the third party libraries +# is a list of Strimzi features that are not supported by this Kafka version +# when `true` this version is currently supported by the operator. Unsupported versions are kept for historical reasons. + +- version: 1.0.0 + format: 1.0 + protocol: 1.0 + zookeeper: 3.4.13 + supported: false + default: false +- version: 1.1.0 + format: 1.1 + protocol: 1.1 + url: https://download.tld/kafka-1.1.0.tgz + checksum: DUMMYSHA512CHECKSUM110 + zookeeper: 3.5.7 + third-party-libs: 1.1x + supported: true + default: false +- version: 1.1.1 + format: 1.1 + protocol: 1.1 + metadata: 1.1 + url: https://download.tld/kafka-1.1.1.tgz + checksum: DUMMYSHA512CHECKSUM111 + zookeeper: 3.5.7 + third-party-libs: 1.1.x + supported: true + default: false +- version: 1.2.0 + format: 1.2 + protocol: 1.2 + metadata: 1.2-IV2 + url: https://download.tld/kafka-1.2.0.tgz + checksum: DUMMYSHA512CHECKSUM120 + zookeeper: 3.5.7 + third-party-libs: 1.2.x + supported: true + default: true \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/log4j2-test.properties b/cluster-operator/bin/src/test/resources/log4j2-test.properties new file mode 100644 index 00000000000..79384bd65d0 --- /dev/null +++ b/cluster-operator/bin/src/test/resources/log4j2-test.properties @@ -0,0 +1,27 @@ +name = COConfig + +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n + +rootLogger.level = ${env:STRIMZI_LOG_LEVEL:-INFO} +rootLogger.appenderRefs = stdout +rootLogger.appenderRef.console.ref = STDOUT +rootLogger.additivity = false + +logger.reflections.name = org.reflections +logger.reflections.level = ERROR +logger.reflections.additivity = false + +logger.zookeeper.name = org.apache.zookeeper +logger.zookeeper.level = WARN +logger.zookeeper.additivity = false + +logger.broker.name = kafka +logger.broker.level = WARN +logger.broker.additivity = false + +logger.abstractindex.name = kafka.log.AbstractIndex +logger.abstractindex.level = OFF +logger.abstractindex.additivity = false \ No newline at end of file diff --git a/strimzi-kafka-operator-helm-3-chart-0.43.0-snapshot.tgz b/strimzi-kafka-operator-helm-3-chart-0.43.0-snapshot.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a60637925c33594b5ba2f0c8d26510a1fc9b2adb GIT binary patch literal 134588 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 z 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

    fFMUp5ck!&CW?&2iYw- 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 Date: Thu, 4 Jul 2024 09:29:27 +0000 Subject: [PATCH 33/62] Revert "wrong path" This reverts commit ae3de84aa59cff70d3229eeb95dd8c0e3168ef9c. Signed-off-by: Casper Thygesen --- .devcontainer/Dockerfile | 40 - .devcontainer/devcontainer.json | 44 - .devcontainer/maven-settings.xml | 6 - .devcontainer/settings.xml | 25 - cluster-operator/bin/Makefile | 14 - cluster-operator/bin/pom.xml | 379 ----- .../bin/scripts/cluster_operator_run.sh | 38 - .../operator/cluster/ClusterOperator.class | Bin 9059 -> 0 bytes ...rConfig$ClusterOperatorConfigBuilder.class | Bin 5403 -> 0 bytes .../cluster/ClusterOperatorConfig.class | Bin 11411 -> 0 bytes .../io/strimzi/operator/cluster/Main.class | Bin 9853 -> 0 bytes .../PlatformFeaturesAvailability.class | Bin 6706 -> 0 bytes .../operator/cluster/ShutdownHook.class | Bin 4298 -> 0 bytes .../LeaderElectionManager.class | Bin 6128 -> 0 bytes .../LeaderElectionManagerConfig.class | Bin 7958 -> 0 bytes .../cluster/model/AbstractConfiguration.class | Bin 7690 -> 0 bytes .../cluster/model/AbstractModel.class | Bin 8075 -> 0 bytes .../cluster/model/AuthenticationUtils.class | Bin 12378 -> 0 bytes .../operator/cluster/model/CertUtils.class | Bin 10259 -> 0 bytes .../operator/cluster/model/ClusterCa.class | Bin 9868 -> 0 bytes .../cluster/model/ConfigMapUtils.class | Bin 3672 -> 0 bytes .../cluster/model/ContainerUtils.class | Bin 9880 -> 0 bytes .../CruiseControl$CruiseControlUser.class | Bin 4855 -> 0 bytes .../cluster/model/CruiseControl.class | Bin 11151 -> 0 bytes .../DefaultSharedEnvironmentProvider.class | Bin 4036 -> 0 bytes .../cluster/model/DnsNameGenerator.class | Bin 5669 -> 0 bytes .../cluster/model/EntityOperator.class | Bin 9371 -> 0 bytes .../cluster/model/EntityTopicOperator.class | Bin 10656 -> 0 bytes .../cluster/model/EntityUserOperator.class | Bin 10730 -> 0 bytes .../cluster/model/ImagePullPolicy.class | Bin 1901 -> 0 bytes .../cluster/model/JvmOptionUtils.class | Bin 8375 -> 0 bytes .../operator/cluster/model/KRaftUtils.class | Bin 5021 -> 0 bytes .../KafkaBridgeAdminClientConfiguration.class | Bin 536 -> 0 bytes .../cluster/model/KafkaBridgeCluster.class | Bin 13611 -> 0 bytes .../KafkaBridgeConsumerConfiguration.class | Bin 530 -> 0 bytes .../KafkaBridgeProducerConfiguration.class | Bin 530 -> 0 bytes .../KafkaBrokerConfigurationBuilder.class | Bin 14383 -> 0 bytes .../operator/cluster/model/KafkaCluster.class | Bin 20654 -> 0 bytes .../cluster/model/KafkaConfiguration.class | Bin 10062 -> 0 bytes .../cluster/model/KafkaConnectBuild.class | Bin 9631 -> 0 bytes .../model/KafkaConnectBuildUtils.class | Bin 3227 -> 0 bytes .../cluster/model/KafkaConnectCluster.class | Bin 14940 -> 0 bytes .../model/KafkaConnectConfiguration.class | Bin 516 -> 0 bytes .../model/KafkaConnectDockerfile$Cmd.class | Bin 6482 -> 0 bytes .../model/KafkaConnectDockerfile.class | Bin 9223 -> 0 bytes .../model/KafkaConnectorConfiguration.class | Bin 520 -> 0 bytes .../cluster/model/KafkaExporter.class | Bin 10164 -> 0 bytes ...KafkaListenerCustomAuthConfiguration.class | Bin 400 -> 0 bytes .../KafkaMetadataConfigurationState.class | Bin 3522 -> 0 bytes .../model/KafkaMirrorMaker2Cluster.class | Bin 11895 -> 0 bytes .../KafkaMirrorMaker2Configuration.class | Bin 526 -> 0 bytes .../model/KafkaMirrorMaker2Connectors.class | Bin 9872 -> 0 bytes .../model/KafkaMirrorMakerCluster.class | Bin 13861 -> 0 bytes ...afkaMirrorMakerConsumerConfiguration.class | Bin 540 -> 0 bytes ...afkaMirrorMakerProducerConfiguration.class | Bin 540 -> 0 bytes .../operator/cluster/model/KafkaPool.class | Bin 9781 -> 0 bytes .../cluster/model/KafkaSpecChecker.class | Bin 9398 -> 0 bytes .../cluster/model/KafkaUpgradeException.class | Bin 855 -> 0 bytes .../cluster/model/KafkaVersion$Lookup.class | Bin 8953 -> 0 bytes ...ion$UnsupportedKafkaVersionException.class | Bin 5175 -> 0 bytes .../operator/cluster/model/KafkaVersion.class | Bin 8164 -> 0 bytes .../cluster/model/KafkaVersionChange.class | Bin 1796 -> 0 bytes .../cluster/model/ListenersUtils.class | Bin 12504 -> 0 bytes .../cluster/model/ListenersValidator.class | Bin 11879 -> 0 bytes .../cluster/model/MetricsAndLogging.class | Bin 1076 -> 0 bytes .../operator/cluster/model/ModelUtils.class | Bin 10244 -> 0 bytes .../cluster/model/NetworkPolicyUtils.class | Bin 5028 -> 0 bytes .../cluster/model/NoImageException.class | Bin 768 -> 0 bytes .../model/NoSuchResourceException.class | Bin 803 -> 0 bytes .../operator/cluster/model/NodeRef.class | Bin 1534 -> 0 bytes .../model/PersistentVolumeClaimUtils.class | Bin 5954 -> 0 bytes .../model/PodDisruptionBudgetUtils.class | Bin 3361 -> 0 bytes .../operator/cluster/model/PodRevision.class | Bin 3499 -> 0 bytes .../operator/cluster/model/PodSetUtils.class | Bin 5328 -> 0 bytes .../operator/cluster/model/ProbeUtils.class | Bin 4310 -> 0 bytes .../operator/cluster/model/Quantities.class | Bin 3069 -> 0 bytes .../operator/cluster/model/RbacUtils.class | Bin 4658 -> 0 bytes .../cluster/model/RestartReason.class | Bin 3448 -> 0 bytes .../cluster/model/RestartReasons.class | Bin 8500 -> 0 bytes .../cluster/model/ServiceAccountUtils.class | Bin 1880 -> 0 bytes .../operator/cluster/model/ServiceUtils.class | Bin 10075 -> 0 bytes ...SharedEnvironmentProvider$EnvVarName.class | Bin 1438 -> 0 bytes .../model/SharedEnvironmentProvider.class | Bin 1446 -> 0 bytes .../operator/cluster/model/StorageDiff.class | Bin 7910 -> 0 bytes .../operator/cluster/model/StorageUtils.class | Bin 4119 -> 0 bytes .../cluster/model/TemplateUtils.class | Bin 4535 -> 0 bytes .../model/UnsupportedVersionException.class | Bin 801 -> 0 bytes .../operator/cluster/model/VolumeUtils.class | Bin 10064 -> 0 bytes .../cluster/model/WorkloadUtils.class | Bin 11662 -> 0 bytes .../cluster/model/ZooKeeperSpecChecker.class | Bin 2610 -> 0 bytes .../cluster/model/ZookeeperCluster.class | Bin 11680 -> 0 bytes .../model/ZookeeperConfiguration.class | Bin 510 -> 0 bytes .../model/cruisecontrol/BrokerCapacity.class | Bin 3929 -> 0 bytes .../Capacity$ResourceRequirementType.class | Bin 5421 -> 0 bytes .../model/cruisecontrol/Capacity.class | Bin 11466 -> 0 bytes .../model/cruisecontrol/CpuCapacity.class | Bin 2382 -> 0 bytes .../CruiseControlConfiguration.class | Bin 1595 -> 0 bytes .../CruiseControlMetricsReporter.class | Bin 5271 -> 0 bytes .../model/cruisecontrol/DiskCapacity.class | Bin 3759 -> 0 bytes .../operator/cluster/model/jmx/JmxModel.class | Bin 8222 -> 0 bytes .../cluster/model/jmx/SupportsJmx.class | Bin 610 -> 0 bytes .../cluster/model/logging/LoggingModel.class | Bin 3225 -> 0 bytes .../cluster/model/logging/LoggingUtils.class | Bin 8041 -> 0 bytes .../model/logging/SupportsLogging.class | Bin 642 -> 0 bytes .../cluster/model/metrics/MetricsModel.class | Bin 5766 -> 0 bytes .../model/metrics/SupportsMetrics.class | Bin 642 -> 0 bytes .../model/nodepools/NodeIdAssignment.class | Bin 1637 -> 0 bytes .../model/nodepools/NodeIdAssignor.class | Bin 9442 -> 0 bytes .../model/nodepools/NodeIdRange$IdRange.class | Bin 5912 -> 0 bytes ...eIdRange$InvalidNodeIdRangeException.class | Bin 5190 -> 0 bytes .../cluster/model/nodepools/NodeIdRange.class | Bin 6634 -> 0 bytes .../model/nodepools/NodePoolUtils.class | Bin 9758 -> 0 bytes .../nodepools/VirtualNodePoolConverter.class | Bin 2941 -> 0 bytes ...ContainerSecurityProviderContextImpl.class | Bin 2530 -> 0 bytes .../PodSecurityProviderContextImpl.class | Bin 2497 -> 0 bytes .../PodSecurityProviderFactory.class | Bin 4202 -> 0 bytes .../operator/cluster/operator/VertxUtil.class | Bin 10727 -> 0 bytes .../assembly/AbstractAssemblyOperator.class | Bin 7398 -> 0 bytes ...perator$ConnectorStatusAndConditions.class | Bin 6262 -> 0 bytes .../assembly/AbstractConnectOperator.class | Bin 18377 -> 0 bytes ...perator$UnableToAcquireLockException.class | Bin 5180 -> 0 bytes .../operator/assembly/AbstractOperator.class | Bin 11508 -> 0 bytes .../operator/assembly/BrokersInUseCheck.class | Bin 5290 -> 0 bytes .../CaReconciler$CaReconciliationResult.class | Bin 5258 -> 0 bytes .../operator/assembly/CaReconciler.class | Bin 9660 -> 0 bytes .../ConnectBuildOperator$BuildInfo.class | Bin 5418 -> 0 bytes .../assembly/ConnectBuildOperator.class | Bin 10728 -> 0 bytes .../ConnectOperatorMetricsHolder.class | Bin 9222 -> 0 bytes .../assembly/ConnectRestException.class | Bin 5283 -> 0 bytes .../assembly/CruiseControlReconciler.class | Bin 8302 -> 0 bytes .../assembly/DefaultKafkaQuotasManager.class | Bin 9934 -> 0 bytes .../assembly/EntityOperatorReconciler.class | Bin 9576 -> 0 bytes .../assembly/KRaftMetadataManager.class | Bin 6999 -> 0 bytes .../assembly/KRaftMigrationUtils.class | Bin 6823 -> 0 bytes .../assembly/KRaftVersionChangeCreator.class | Bin 9230 -> 0 bytes ...AssemblyOperator$ReconciliationState.class | Bin 10536 -> 0 bytes .../assembly/KafkaAssemblyOperator.class | Bin 9090 -> 0 bytes .../KafkaAssemblyOperatorMetricsHolder.class | Bin 5344 -> 0 bytes .../KafkaBridgeAssemblyOperator.class | Bin 10618 -> 0 bytes ...afkaClusterCreator$KafkaAndNodePools.class | Bin 5330 -> 0 bytes .../assembly/KafkaClusterCreator.class | Bin 9879 -> 0 bytes .../operator/assembly/KafkaConnectApi.class | Bin 7089 -> 0 bytes .../assembly/KafkaConnectApiImpl.class | Bin 13811 -> 0 bytes .../KafkaConnectAssemblyOperator.class | Bin 16427 -> 0 bytes .../assembly/KafkaConnectMigration.class | Bin 9676 -> 0 bytes .../assembly/KafkaConnectRoller.class | Bin 7093 -> 0 bytes .../assembly/KafkaExporterReconciler.class | Bin 9135 -> 0 bytes ...enersReconciler$ReconciliationResult.class | Bin 5546 -> 0 bytes .../assembly/KafkaListenersReconciler.class | Bin 8282 -> 0 bytes .../assembly/KafkaMetadataStateManager.class | Bin 11139 -> 0 bytes ...yOperator$ConnectorsComparatorByName.class | Bin 8515 -> 0 bytes .../KafkaMirrorMaker2AssemblyOperator.class | Bin 14025 -> 0 bytes .../KafkaMirrorMakerAssemblyOperator.class | Bin 10206 -> 0 bytes ...AssemblyOperator$CruiseControlIssues.class | Bin 6649 -> 0 bytes ...balanceAssemblyOperator$MapAndStatus.class | Bin 6867 -> 0 bytes .../KafkaRebalanceAssemblyOperator.class | Bin 13102 -> 0 bytes .../operator/assembly/KafkaReconciler.class | Bin 13816 -> 0 bytes .../operator/assembly/ManualPodCleaner.class | Bin 6577 -> 0 bytes .../assembly/MetricsAndLoggingUtils.class | Bin 4261 -> 0 bytes .../cluster/operator/assembly/Operator.class | Bin 4172 -> 0 bytes .../operator/assembly/PvcReconciler.class | Bin 7973 -> 0 bytes .../operator/assembly/ReconcilerUtils.class | Bin 11074 -> 0 bytes .../assembly/ReconnectingWatcher.class | Bin 5571 -> 0 bytes .../StrimziPodSetController$PodCounter.class | Bin 5096 -> 0 bytes ...imziPodSetController$PodEventHandler.class | Bin 5684 -> 0 bytes ...iPodSetController$PodSetEventHandler.class | Bin 5753 -> 0 bytes ...tController$SimplifiedReconciliation.class | Bin 5634 -> 0 bytes .../assembly/StrimziPodSetController.class | Bin 10802 -> 0 bytes .../assembly/VersionChangeCreator.class | Bin 891 -> 0 bytes .../operator/assembly/ZooKeeperEraser.class | Bin 9084 -> 0 bytes .../assembly/ZooKeeperReconciler.class | Bin 12018 -> 0 bytes .../ZooKeeperVersionChangeCreator.class | Bin 8669 -> 0 bytes .../operator/resource/BrokerState.class | Bin 3706 -> 0 bytes .../ConcurrentDeletionException.class | Bin 863 -> 0 bytes .../DefaultKafkaAgentClientProvider.class | Bin 1776 -> 0 bytes .../DefaultZooKeeperAdminProvider.class | Bin 2478 -> 0 bytes .../DefaultZookeeperScalerProvider.class | Bin 2562 -> 0 bytes .../operator/resource/HttpClientUtils.class | Bin 2114 -> 0 bytes .../resource/KRaftMigrationState.class | Bin 1880 -> 0 bytes .../operator/resource/KafkaAgentClient.class | Bin 8699 -> 0 bytes .../resource/KafkaAgentClientProvider.class | Bin 969 -> 0 bytes .../operator/resource/KafkaAvailability.class | Bin 9575 -> 0 bytes .../KafkaBrokerConfigurationDiff.class | Bin 9421 -> 0 bytes ...oggingConfigurationDiff$LoggingLevel.class | Bin 6630 -> 0 bytes ...nfigurationDiff$LoggingLevelResolver.class | Bin 6070 -> 0 bytes .../KafkaBrokerLoggingConfigurationDiff.class | Bin 9281 -> 0 bytes .../operator/resource/KafkaQuorumCheck.class | Bin 5632 -> 0 bytes .../resource/KafkaRoller$FatalProblem.class | Bin 5027 -> 0 bytes .../KafkaRoller$ForceableProblem.class | Bin 5368 -> 0 bytes .../resource/KafkaRoller$RestartContext.class | Bin 6069 -> 0 bytes .../KafkaRoller$UnforceableProblem.class | Bin 5045 -> 0 bytes .../operator/resource/KafkaRoller.class | Bin 13314 -> 0 bytes .../resource/ResourceOperatorSupplier.class | Bin 12599 -> 0 bytes .../resource/ZooKeeperAdminProvider.class | Bin 1164 -> 0 bytes ...erRoller$ZookeeperClusterRollContext.class | Bin 5905 -> 0 bytes .../ZooKeeperRoller$ZookeeperPodContext.class | Bin 4582 -> 0 bytes .../operator/resource/ZooKeeperRoller.class | Bin 6041 -> 0 bytes .../resource/ZookeeperLeaderFinder.class | Bin 8954 -> 0 bytes .../operator/resource/ZookeeperScaler.class | Bin 9730 -> 0 bytes .../resource/ZookeeperScalerProvider.class | Bin 1538 -> 0 bytes .../resource/ZookeeperScalingException.class | Bin 969 -> 0 bytes ...ions$AbstractRebalanceOptionsBuilder.class | Bin 6312 -> 0 bytes .../AbstractRebalanceOptions.class | Bin 4486 -> 0 bytes ...rokerOptions$AddBrokerOptionsBuilder.class | Bin 3453 -> 0 bytes .../cruisecontrol/AddBrokerOptions.class | Bin 2106 -> 0 bytes .../cruisecontrol/CruiseControlApi.class | Bin 3967 -> 0 bytes .../cruisecontrol/CruiseControlApiImpl.class | Bin 12566 -> 0 bytes .../CruiseControlRebalanceResponse.class | Bin 1495 -> 0 bytes .../cruisecontrol/CruiseControlResponse.class | Bin 2327 -> 0 bytes .../CruiseControlRestException.class | Bin 916 -> 0 bytes ...eControlRetriableConnectionException.class | Bin 994 -> 0 bytes .../resource/cruisecontrol/PathBuilder.class | Bin 8676 -> 0 bytes ...lanceOptions$RebalanceOptionsBuilder.class | Bin 2718 -> 0 bytes .../cruisecontrol/RebalanceOptions.class | Bin 1543 -> 0 bytes ...erOptions$RemoveBrokerOptionsBuilder.class | Bin 3504 -> 0 bytes .../cruisecontrol/RemoveBrokerOptions.class | Bin 2130 -> 0 bytes .../KubernetesRestartEventPublisher.class | Bin 6636 -> 0 bytes .../AbstractNamespacedResourceOperator.class | Bin 13598 -> 0 bytes ...bstractNonNamespacedResourceOperator.class | Bin 11970 -> 0 bytes ...tractReadyNamespacedResourceOperator.class | Bin 4082 -> 0 bytes .../kubernetes/AbstractResourceOperator.class | Bin 7333 -> 0 bytes ...ctScalableNamespacedResourceOperator.class | Bin 5006 -> 0 bytes ...tWatchableNamespacedResourceOperator.class | Bin 5763 -> 0 bytes ...leStatusedNamespacedResourceOperator.class | Bin 2937 -> 0 bytes .../kubernetes/BuildConfigOperator.class | Bin 6947 -> 0 bytes .../resource/kubernetes/BuildOperator.class | Bin 2280 -> 0 bytes .../ClusterRoleBindingOperator.class | Bin 2681 -> 0 bytes .../kubernetes/ClusterRoleOperator.class | Bin 3509 -> 0 bytes .../kubernetes/ConfigMapOperator.class | Bin 5350 -> 0 bytes .../resource/kubernetes/CrdOperator.class | Bin 6803 -> 0 bytes .../kubernetes/DeploymentConfigOperator.class | Bin 7137 -> 0 bytes .../kubernetes/DeploymentOperator.class | Bin 7792 -> 0 bytes .../kubernetes/EndpointOperator.class | Bin 2465 -> 0 bytes .../kubernetes/ImageStreamOperator.class | Bin 2496 -> 0 bytes .../resource/kubernetes/IngressOperator.class | Bin 5397 -> 0 bytes .../kubernetes/NetworkPolicyOperator.class | Bin 3082 -> 0 bytes .../resource/kubernetes/NodeOperator.class | Bin 2401 -> 0 bytes .../PodDisruptionBudgetOperator.class | Bin 2663 -> 0 bytes .../resource/kubernetes/PodOperator.class | Bin 4470 -> 0 bytes .../resource/kubernetes/PvcOperator.class | Bin 5503 -> 0 bytes .../resource/kubernetes/ResourceSupport.class | Bin 9849 -> 0 bytes .../kubernetes/RoleBindingOperator.class | Bin 2503 -> 0 bytes .../resource/kubernetes/RoleOperator.class | Bin 2363 -> 0 bytes .../resource/kubernetes/RouteOperator.class | Bin 3904 -> 0 bytes .../resource/kubernetes/SecretOperator.class | Bin 2403 -> 0 bytes .../kubernetes/ServiceAccountOperator.class | Bin 3809 -> 0 bytes .../resource/kubernetes/ServiceOperator.class | Bin 10211 -> 0 bytes .../resource/kubernetes/StatefulSetDiff.class | Bin 6036 -> 0 bytes .../kubernetes/StatefulSetOperator.class | Bin 11346 -> 0 bytes .../kubernetes/StorageClassOperator.class | Bin 2561 -> 0 bytes .../kubernetes/StrimziPodSetOperator.class | Bin 3922 -> 0 bytes .../src/main/resources-filtered/.properties | 2 - ...1-ClusterRole-strimzi-entity-operator.yaml | 56 - .../default-logging/CruiseControl.properties | 12 - .../EntityTopicOperator.properties | 23 - .../EntityUserOperator.properties | 16 - .../KafkaBridgeCluster.properties | 24 - .../default-logging/KafkaCluster.properties | 19 - .../KafkaConnectCluster.properties | 6 - .../KafkaMirrorMaker2Cluster.properties | 7 - .../KafkaMirrorMakerCluster.properties | 5 - .../ZookeeperCluster.properties | 5 - .../resources/kafka-3.6.0-config-model.json | 1271 ---------------- .../resources/kafka-3.6.1-config-model.json | 1271 ---------------- .../resources/kafka-3.6.2-config-model.json | 1276 ---------------- .../resources/kafka-3.7.0-config-model.json | 1302 ----------------- .../resources/kafka-3.7.1-config-model.json | 1302 ----------------- .../bin/src/main/resources/log4j2.properties | 21 - .../cluster/ClusterOperatorConfigTest.class | Bin 8413 -> 0 bytes .../cluster/ClusterOperatorTest.class | Bin 8696 -> 0 bytes .../operator/cluster/JSONObjectMatchers.class | Bin 2910 -> 0 bytes .../cluster/KafkaVersionTestUtils.class | Bin 8582 -> 0 bytes .../PlatformFeaturesAvailabilityTest.class | Bin 9267 -> 0 bytes .../operator/cluster/ResourceUtils.class | Bin 10619 -> 0 bytes .../cluster/ShutdownHookTest$MyVerticle.class | Bin 4559 -> 0 bytes .../operator/cluster/ShutdownHookTest.class | Bin 7037 -> 0 bytes .../strimzi/operator/cluster/TestUtils.class | Bin 3190 -> 0 bytes .../LeaderElectionManagerConfigTest.class | Bin 10478 -> 0 bytes .../LeaderElectionManagerIT.class | Bin 8824 -> 0 bytes .../LeaderElectionManagerMockTest.class | Bin 8244 -> 0 bytes .../model/AbstractConfigurationTest.class | Bin 10992 -> 0 bytes .../model/AbstractModelTest$Model.class | Bin 2778 -> 0 bytes .../cluster/model/AbstractModelTest.class | Bin 4252 -> 0 bytes .../model/AuthenticationUtilsTest.class | Bin 8621 -> 0 bytes .../cluster/model/CertUtilsTest.class | Bin 9337 -> 0 bytes ...ClusterCaRenewalTest$MockedClusterCa.class | Bin 6675 -> 0 bytes .../cluster/model/ClusterCaRenewalTest.class | Bin 8697 -> 0 bytes .../cluster/model/ClusterCaTest.class | Bin 8881 -> 0 bytes ...UtilsTest$ModelWithMetricsAndLogging.class | Bin 6066 -> 0 bytes ...lsTest$ModelWithoutMetricsAndLogging.class | Bin 5073 -> 0 bytes .../cluster/model/ConfigMapUtilsTest.class | Bin 7653 -> 0 bytes .../cluster/model/ContainerUtilsTest.class | Bin 9116 -> 0 bytes .../cluster/model/CruiseControlTest.class | Bin 11513 -> 0 bytes .../cluster/model/DnsNameGeneratorTest.class | Bin 3968 -> 0 bytes .../cluster/model/EntityOperatorTest.class | Bin 9200 -> 0 bytes .../model/EntityTopicOperatorTest.class | Bin 7653 -> 0 bytes .../model/EntityUserOperatorTest.class | Bin 8252 -> 0 bytes .../cluster/model/JvmOptionUtilsTest.class | Bin 12208 -> 0 bytes .../cluster/model/KRaftUtilsTest.class | Bin 12027 -> 0 bytes .../model/KafkaBridgeClusterTest.class | Bin 11715 -> 0 bytes ...onfigurationBuilderTest$IsEquivalent.class | Bin 6426 -> 0 bytes .../KafkaBrokerConfigurationBuilderTest.class | Bin 13402 -> 0 bytes .../model/KafkaClusterMigrationTest.class | Bin 6583 -> 0 bytes .../KafkaClusterOAuthValidationTest.class | Bin 11181 -> 0 bytes .../model/KafkaClusterPodSetTest.class | Bin 7204 -> 0 bytes .../cluster/model/KafkaClusterTest.class | Bin 18364 -> 0 bytes .../model/KafkaClusterWithKRaftTest.class | Bin 7133 -> 0 bytes .../model/KafkaClusterWithPoolsTest.class | Bin 6580 -> 0 bytes .../model/KafkaConfigurationTests.class | Bin 7102 -> 0 bytes .../cluster/model/KafkaConnectBuildTest.class | Bin 9297 -> 0 bytes .../model/KafkaConnectBuildUtilsTest.class | Bin 2620 -> 0 bytes .../model/KafkaConnectClusterTest.class | Bin 14143 -> 0 bytes .../model/KafkaConnectDockerfileTest.class | Bin 10609 -> 0 bytes .../cluster/model/KafkaExporterTest.class | Bin 8334 -> 0 bytes .../model/KafkaMirrorMaker2ClusterTest.class | Bin 14077 -> 0 bytes .../KafkaMirrorMaker2ConnectorsTest.class | Bin 11758 -> 0 bytes .../model/KafkaMirrorMakerClusterTest.class | Bin 12916 -> 0 bytes .../cluster/model/KafkaPoolTest.class | Bin 8954 -> 0 bytes .../cluster/model/KafkaSpecCheckerTest.class | Bin 10045 -> 0 bytes .../KafkaSpecCheckerWithNodePoolsTest.class | Bin 8631 -> 0 bytes .../cluster/model/KafkaVersionTest.class | Bin 12043 -> 0 bytes .../cluster/model/ListenersUtilsTest.class | Bin 9554 -> 0 bytes .../model/ListenersValidatorTest.class | Bin 9562 -> 0 bytes .../model/MockSharedEnvironmentProvider.class | Bin 4487 -> 0 bytes ...delUtilsResourcesTest$ResourcesCombo.class | Bin 7175 -> 0 bytes .../model/ModelUtilsResourcesTest.class | Bin 12356 -> 0 bytes .../cluster/model/ModelUtilsTest.class | Bin 10134 -> 0 bytes .../model/NetworkPolicyUtilsTest.class | Bin 8143 -> 0 bytes .../cluster/model/NodePoolUtilsTest.class | Bin 8909 -> 0 bytes .../PersistentVolumeClaimUtilsTest.class | Bin 8108 -> 0 bytes .../model/PodDisruptionBudgetUtilsTest.class | Bin 9922 -> 0 bytes .../cluster/model/PodRevisionTest.class | Bin 8371 -> 0 bytes .../cluster/model/PodSetUtilsTest.class | Bin 1849 -> 0 bytes .../cluster/model/ProbeUtilsTest.class | Bin 10740 -> 0 bytes .../cluster/model/QuantitiesTest.class | Bin 13723 -> 0 bytes .../cluster/model/RbacUtilsTest.class | Bin 8130 -> 0 bytes .../cluster/model/ResourceTester.class | Bin 8687 -> 0 bytes .../cluster/model/RestartReasonTest.class | Bin 1611 -> 0 bytes .../model/ServiceAccountUtilsTest.class | Bin 5971 -> 0 bytes .../cluster/model/ServiceUtilsTest.class | Bin 9880 -> 0 bytes .../cluster/model/StatusDiffTest.class | Bin 7656 -> 0 bytes .../cluster/model/StorageDiffTest.class | Bin 10259 -> 0 bytes .../cluster/model/StorageUtilsTest.class | Bin 9906 -> 0 bytes .../cluster/model/TemplateUtilsTest.class | Bin 4889 -> 0 bytes .../cluster/model/TestConfiguration.class | Bin 5852 -> 0 bytes .../TestConfigurationWithoutDefaults.class | Bin 5790 -> 0 bytes .../cluster/model/VolumeUtilsTest.class | Bin 9550 -> 0 bytes .../cluster/model/WorkloadUtilsTest.class | Bin 8491 -> 0 bytes .../model/ZooKeeperSpecCheckerTest.class | Bin 9905 -> 0 bytes .../model/ZookeeperClusterPodSetTest.class | Bin 7710 -> 0 bytes .../cluster/model/ZookeeperClusterTest.class | Bin 9636 -> 0 bytes .../CruiseControlMetricsReporterTest.class | Bin 10702 -> 0 bytes .../cluster/model/jmx/JmxModelTest.class | Bin 9447 -> 0 bytes .../model/logging/LoggingModelTest.class | Bin 3693 -> 0 bytes .../model/logging/LoggingUtilsTest.class | Bin 9695 -> 0 bytes .../model/metrics/MetricsModelTest.class | Bin 9002 -> 0 bytes .../model/nodepools/NodeIdAssignorTest.class | Bin 11379 -> 0 bytes .../model/nodepools/NodeIdRangeTest.class | Bin 8548 -> 0 bytes .../VirtualNodePoolConverterTest.class | Bin 11177 -> 0 bytes .../BaselinePodSecurityProviderTest.class | Bin 9092 -> 0 bytes .../PodSecurityProviderFactoryTest.class | Bin 2607 -> 0 bytes .../RestrictedPodSecurityProviderTest.class | Bin 10279 -> 0 bytes .../cluster/operator/VertxUtilTest.class | Bin 9118 -> 0 bytes ...stractConnectOperatorAutoRestartTest.class | Bin 10513 -> 0 bytes ...AbstractOperatorTest$DefaultOperator.class | Bin 6800 -> 0 bytes ...ultWatchableStatusedResourceOperator.class | Bin 6193 -> 0 bytes .../assembly/AbstractOperatorTest.class | Bin 8031 -> 0 bytes .../AbstractResourceStateMatchers.class | Bin 3250 -> 0 bytes .../assembly/BrokersInUseCheckTest.class | Bin 8024 -> 0 bytes .../CaReconcilerTest$MockCaReconciler.class | Bin 6801 -> 0 bytes .../operator/assembly/CaReconcilerTest.class | Bin 10822 -> 0 bytes .../assembly/CertificateRenewalTest.class | Bin 8873 -> 0 bytes .../operator/assembly/ConnectCluster.class | Bin 6139 -> 0 bytes .../ConnectorMockTest$ConnectorStatus.class | Bin 5068 -> 0 bytes .../operator/assembly/ConnectorMockTest.class | Bin 12657 -> 0 bytes .../CruiseControlReconcilerTest.class | Bin 6523 -> 0 bytes .../DefaultKafkaQuotasManagerTest.class | Bin 10300 -> 0 bytes .../EntityOperatorReconcilerTest.class | Bin 7006 -> 0 bytes .../assembly/JbodStorageMockTest.class | Bin 8391 -> 0 bytes .../assembly/KRaftMetadataManagerTest.class | Bin 9590 -> 0 bytes .../assembly/KRaftMigrationMockTest.class | Bin 7649 -> 0 bytes .../KRaftVersionChangeCreatorTest.class | Bin 10808 -> 0 bytes ...kaAssemblyOperatorCustomCertMockTest.class | Bin 9293 -> 0 bytes ...mblyOperator$MockReconciliationState.class | Bin 6089 -> 0 bytes ...pdatesTest$MockKafkaAssemblyOperator.class | Bin 6370 -> 0 bytes ...llingUpdatesTest$MockKafkaReconciler.class | Bin 7179 -> 0 bytes ...gUpdatesTest$MockZooKeeperReconciler.class | Bin 6585 -> 0 bytes ...mblyOperatorManualRollingUpdatesTest.class | Bin 7998 -> 0 bytes ...fkaAssemblyOperatorMetricsHolderTest.class | Bin 6233 -> 0 bytes .../KafkaAssemblyOperatorMockTest.class | Bin 9221 -> 0 bytes ...atcherTest$MockKafkaAssemblyOperator.class | Bin 5774 -> 0 bytes ...aAssemblyOperatorNodePoolWatcherTest.class | Bin 7759 -> 0 bytes ...aAssemblyOperatorNonParametrizedTest.class | Bin 8006 -> 0 bytes ...mblyOperator$MockReconciliationState.class | Bin 5983 -> 0 bytes ...PodSetTest$MockKafkaAssemblyOperator.class | Bin 6300 -> 0 bytes ...eratorPodSetTest$MockKafkaReconciler.class | Bin 6512 -> 0 bytes ...orPodSetTest$MockZooKeeperReconciler.class | Bin 6272 -> 0 bytes .../KafkaAssemblyOperatorPodSetTest.class | Bin 7690 -> 0 bytes .../KafkaAssemblyOperatorTest$Params.class | Bin 5896 -> 0 bytes .../assembly/KafkaAssemblyOperatorTest.class | Bin 10353 -> 0 bytes ...mblyOperator$MockReconciliationState.class | Bin 6207 -> 0 bytes ...hKRaftTest$MockKafkaAssemblyOperator.class | Bin 5961 -> 0 bytes ...torWithKRaftTest$MockKafkaReconciler.class | Bin 6712 -> 0 bytes .../KafkaAssemblyOperatorWithKRaftTest.class | Bin 7949 -> 0 bytes ...semblyOperatorWithPoolsKRaftMockTest.class | Bin 8173 -> 0 bytes ...fkaAssemblyOperatorWithPoolsMockTest.class | Bin 8442 -> 0 bytes ...mblyOperator$MockReconciliationState.class | Bin 5905 -> 0 bytes ...hPoolsTest$MockKafkaAssemblyOperator.class | Bin 6259 -> 0 bytes ...torWithPoolsTest$MockKafkaReconciler.class | Bin 6649 -> 0 bytes ...ithPoolsTest$MockZooKeeperReconciler.class | Bin 6188 -> 0 bytes .../KafkaAssemblyOperatorWithPoolsTest.class | Bin 7909 -> 0 bytes .../KafkaBridgeAssemblyOperatorTest.class | Bin 7350 -> 0 bytes .../assembly/KafkaClusterCreatorTest.class | Bin 9174 -> 0 bytes .../operator/assembly/KafkaConnectApiIT.class | Bin 7938 -> 0 bytes .../assembly/KafkaConnectApiImplTest.class | Bin 7387 -> 0 bytes ...nnectApiMockTest$MockKafkaConnectApi.class | Bin 5583 -> 0 bytes .../assembly/KafkaConnectApiMockTest.class | Bin 8602 -> 0 bytes ...mblyOperatorConnectorAutoRestartTest.class | Bin 8836 -> 0 bytes ...KafkaConnectAssemblyOperatorMockTest.class | Bin 8012 -> 0 bytes ...fkaConnectAssemblyOperatorPodSetTest.class | Bin 8181 -> 0 bytes ...ConnectBuildAssemblyOperatorKubeTest.class | Bin 7066 -> 0 bytes ...ctBuildAssemblyOperatorOpenShiftTest.class | Bin 7109 -> 0 bytes .../assembly/KafkaConnectMigrationTest.class | Bin 8668 -> 0 bytes .../assembly/KafkaConnectRollerTest.class | Bin 7667 -> 0 bytes .../operator/assembly/KafkaConnectorIT.class | Bin 8824 -> 0 bytes .../KafkaExporterReconcilerTest.class | Bin 6860 -> 0 bytes ...rIPTest$MockKafkaListenersReconciler.class | Bin 5967 -> 0 bytes ...KafkaListenerReconcilerClusterIPTest.class | Bin 8210 -> 0 bytes ...cerTest$MockKafkaListenersReconciler.class | Bin 6161 -> 0 bytes ...oncilerSkipBootstrapLoadBalancerTest.class | Bin 8774 -> 0 bytes .../KafkaMetadataStateManagerTest.class | Bin 10107 -> 0 bytes ...mblyOperatorConnectorAutoRestartTest.class | Bin 6895 -> 0 bytes ...MirrorMaker2AssemblyOperatorMockTest.class | Bin 7822 -> 0 bytes ...rrorMaker2AssemblyOperatorPodSetTest.class | Bin 8058 -> 0 bytes ...KafkaMirrorMakerAssemblyOperatorTest.class | Bin 7103 -> 0 bytes ...ceAssemblyOperatorTest$StateMatchers.class | Bin 5199 -> 0 bytes .../KafkaRebalanceAssemblyOperatorTest.class | Bin 16992 -> 0 bytes ...alanceStateMachineTest$StateMatchers.class | Bin 5032 -> 0 bytes .../KafkaRebalanceStateMachineTest.class | Bin 24990 -> 0 bytes .../assembly/KafkaRebalanceStatusTest.class | Bin 10059 -> 0 bytes ...aftMigrationTest$MockKafkaReconciler.class | Bin 6240 -> 0 bytes .../KafkaReconcilerKRaftMigrationTest.class | Bin 6780 -> 0 bytes ...afkaReconcilerFailsWithVersionUpdate.class | Bin 5740 -> 0 bytes ...sTest$MockKafkaReconcilerStatusTasks.class | Bin 5964 -> 0 bytes .../assembly/KafkaReconcilerStatusTest.class | Bin 7712 -> 0 bytes ...adeDowngradeTest$MockKafkaReconciler.class | Bin 5640 -> 0 bytes .../KafkaReconcilerUpgradeDowngradeTest.class | Bin 6118 -> 0 bytes ...est$MockFailingKafkaAssemblyOperator.class | Bin 5804 -> 0 bytes ...ckInitialStatusKafkaAssemblyOperator.class | Bin 5730 -> 0 bytes ...est$MockWorkingKafkaAssemblyOperator.class | Bin 5712 -> 0 bytes .../operator/assembly/KafkaStatusTest.class | Bin 8449 -> 0 bytes .../KafkaUpgradeDowngradeMockTest.class | Bin 8749 -> 0 bytes ...fkaUpgradeDowngradeWithKRaftMockTest.class | Bin 8182 -> 0 bytes .../assembly/ManualPodCleanerTest.class | Bin 8288 -> 0 bytes .../assembly/MetricsAndLoggingUtilsTest.class | Bin 9353 -> 0 bytes .../assembly/OperatorMetricsTest$Foo.class | Bin 6158 -> 0 bytes .../OperatorMetricsTest$MyResource.class | Bin 4952 -> 0 bytes ...MetricsTest$ReconcileAllMockOperator.class | Bin 6475 -> 0 bytes .../assembly/OperatorMetricsTest.class | Bin 9195 -> 0 bytes .../PartialRollingUpdateMockTest.class | Bin 8789 -> 0 bytes .../operator/assembly/PvcReconcilerTest.class | Bin 9342 -> 0 bytes .../ReconcilerUtilsTest$MockJmxCluster.class | Bin 5478 -> 0 bytes .../assembly/ReconcilerUtilsTest.class | Bin 8745 -> 0 bytes .../ReconnectingWatcherMockTest.class | Bin 8925 -> 0 bytes .../assembly/StrimziPodSetControllerIT.class | Bin 8509 -> 0 bytes .../StrimziPodSetControllerMockTest.class | Bin 9856 -> 0 bytes .../TestingConnector$TestingTask.class | Bin 7300 -> 0 bytes .../operator/assembly/TestingConnector.class | Bin 8049 -> 0 bytes .../operator/assembly/TolerationsIT.class | Bin 5028 -> 0 bytes .../assembly/ZooKeeperEraserTest.class | Bin 7609 -> 0 bytes .../ZooKeeperVersionChangeCreatorTest.class | Bin 11501 -> 0 bytes ...igrationTest$MockZooKeeperReconciler.class | Bin 5966 -> 0 bytes ...ookeeperReconcilerKRaftMigrationTest.class | Bin 6613 -> 0 bytes .../resource/KafkaAgentClientTest.class | Bin 5644 -> 0 bytes .../KafkaAvailabilityTest$KSB$BSB.class | Bin 4905 -> 0 bytes .../KafkaAvailabilityTest$KSB$TSB$PSB.class | Bin 5958 -> 0 bytes .../KafkaAvailabilityTest$KSB$TSB.class | Bin 6264 -> 0 bytes .../resource/KafkaAvailabilityTest$KSB.class | Bin 7929 -> 0 bytes .../resource/KafkaAvailabilityTest.class | Bin 6139 -> 0 bytes .../KafkaBrokerConfigurationDiffTest.class | Bin 10490 -> 0 bytes ...kaBrokerLoggingConfigurationDiffTest.class | Bin 14168 -> 0 bytes .../resource/KafkaQuorumCheckTest.class | Bin 9812 -> 0 bytes .../KafkaRollerTest$TestingKafkaRoller.class | Bin 8345 -> 0 bytes .../operator/resource/KafkaRollerTest.class | Bin 12871 -> 0 bytes ...KeeperRollerTest$MockZooKeeperRoller.class | Bin 5878 -> 0 bytes .../resource/ZooKeeperRollerTest.class | Bin 8996 -> 0 bytes .../ZookeeperLeaderFinderTest$FakeZk.class | Bin 5734 -> 0 bytes ...derTest$TestingZookeeperLeaderFinder.class | Bin 6481 -> 0 bytes .../resource/ZookeeperLeaderFinderTest.class | Bin 8448 -> 0 bytes .../resource/ZookeeperScalerTest.class | Bin 7650 -> 0 bytes .../CruiseControlClientTest.class | Bin 11896 -> 0 bytes .../cruisecontrol/MockCruiseControl.class | Bin 7465 -> 0 bytes .../cruisecontrol/PathBuilderTest.class | Bin 7648 -> 0 bytes .../KubernetesRestartEventPublisherIT.class | Bin 9257 -> 0 bytes .../KubernetesRestartEventPublisherTest.class | Bin 9532 -> 0 bytes ...rtEventsMockTest$OverridingClusterCa.class | Bin 5151 -> 0 bytes .../KubernetesRestartEventsMockTest.class | Bin 11101 -> 0 bytes .../AbstractCustomResourceOperatorIT.class | Bin 9334 -> 0 bytes ...AbstractNamespacedResourceOperatorIT.class | Bin 9248 -> 0 bytes ...stractNamespacedResourceOperatorTest.class | Bin 10948 -> 0 bytes ...tractNonNamespacedResourceOperatorIT.class | Bin 6717 -> 0 bytes ...actNonNamespacedResourceOperatorTest.class | Bin 11649 -> 0 bytes .../AbstractReadyResourceOperatorTest.class | Bin 12268 -> 0 bytes .../kubernetes/BuildConfigOperatorTest.class | Bin 6958 -> 0 bytes .../kubernetes/BuildOperatorTest.class | Bin 5309 -> 0 bytes .../ClusterRoleBindingOperatorIT.class | Bin 5900 -> 0 bytes .../ClusterRoleBindingOperatorTest.class | Bin 6795 -> 0 bytes .../kubernetes/ClusterRoleOperatorIT.class | Bin 5277 -> 0 bytes .../kubernetes/ClusterRoleOperatorTest.class | Bin 6501 -> 0 bytes .../kubernetes/ConfigMapOperatorTest.class | Bin 6462 -> 0 bytes .../DeploymentConfigOperatorTest.class | Bin 6222 -> 0 bytes .../kubernetes/DeploymentOperatorTest.class | Bin 6331 -> 0 bytes .../kubernetes/EndpointOperatorTest.class | Bin 5274 -> 0 bytes .../kubernetes/ImageStreamOperatorTest.class | Bin 5772 -> 0 bytes .../kubernetes/IngressOperatorTest.class | Bin 8643 -> 0 bytes .../kubernetes/KafkaBridgeCrdOperatorIT.class | Bin 6957 -> 0 bytes .../KafkaConnectCrdOperatorIT.class | Bin 6827 -> 0 bytes .../KafkaConnectorCrdOperatorIT.class | Bin 6939 -> 0 bytes .../kubernetes/KafkaCrdOperatorIT.class | Bin 6739 -> 0 bytes .../kubernetes/KafkaCrdOperatorTest.class | Bin 9966 -> 0 bytes .../KafkaMirrorMaker2CrdOperatorIT.class | Bin 7107 -> 0 bytes .../KafkaMirrorMakerCrdOperatorIT.class | Bin 7181 -> 0 bytes .../resource/kubernetes/NodeOperatorIT.class | Bin 4583 -> 0 bytes .../kubernetes/NodeOperatorTest.class | Bin 5778 -> 0 bytes .../PodDisruptionBudgetOperatorTest.class | Bin 7549 -> 0 bytes .../kubernetes/PodOperatorMockTest.class | Bin 5248 -> 0 bytes .../resource/kubernetes/PodOperatorTest.class | Bin 5170 -> 0 bytes .../resource/kubernetes/PvcOperatorTest.class | Bin 9823 -> 0 bytes .../kubernetes/RoleBindingOperatorIT.class | Bin 5647 -> 0 bytes .../kubernetes/RoleBindingOperatorTest.class | Bin 7412 -> 0 bytes .../resource/kubernetes/RoleOperatorIT.class | Bin 5024 -> 0 bytes .../kubernetes/RoleOperatorTest.class | Bin 6770 -> 0 bytes .../kubernetes/RouteOperatorTest.class | Bin 5550 -> 0 bytes .../ScalableResourceOperatorTest.class | Bin 2212 -> 0 bytes .../kubernetes/SecretOperatorTest.class | Bin 6327 -> 0 bytes .../kubernetes/ServiceAccountOperatorIT.class | Bin 7024 -> 0 bytes .../ServiceAccountOperatorTest.class | Bin 10775 -> 0 bytes .../kubernetes/ServiceOperatorIT.class | Bin 5466 -> 0 bytes .../kubernetes/ServiceOperatorTest.class | Bin 10387 -> 0 bytes .../kubernetes/StatefulSetDiffTest.class | Bin 10711 -> 0 bytes .../kubernetes/StatefulSetOperatorTest.class | Bin 10053 -> 0 bytes .../StatefulSetRollingUpdateTest.class | Bin 10138 -> 0 bytes .../kubernetes/StorageClassOperatorIT.class | Bin 5205 -> 0 bytes .../kubernetes/StorageClassOperatorTest.class | Bin 7616 -> 0 bytes .../StrimziPodSetCrdOperatorIT.class | Bin 10020 -> 0 bytes .../test/resources/current-kafka-broker.conf | 202 --- .../test/resources/desired-kafka-broker.conf | 55 - ...nityAndTolerations-DeploymentAffinity.yaml | 18 - ...yAndTolerations-DeploymentTolerations.yaml | 9 - ...Test.withAffinityAndTolerations-Kafka.yaml | 44 - ...terTest.withAffinityWithoutRack-Kafka.yaml | 32 - ...kaClusterTest.withAffinityWithoutRack.yaml | 18 - ...ClusterTest.withRackAndAffinity-Kafka.yaml | 34 - .../KafkaClusterTest.withRackAndAffinity.yaml | 29 - ...ithRackAndAffinityWithMoreTerms-Kafka.yaml | 40 - ...Test.withRackAndAffinityWithMoreTerms.yaml | 37 - ...terTest.withRackWithoutAffinity-Kafka.yaml | 14 - ...kaClusterTest.withRackWithoutAffinity.yaml | 16 - ...afkaClusterTest.withTolerations-Kafka.yaml | 23 - .../KafkaClusterTest.withTolerations.yaml | 9 - ...ClusterTest.withAffinity-KafkaConnect.yaml | 25 - ...lusterTest.withAffinity-StrimziPodSet.yaml | 18 - ...sterTest.withTolerations-KafkaConnect.yaml | 16 - ...terTest.withTolerations-StrimziPodSet.yaml | 9 - ...erTest.withAffinity-KafkaMirrorMaker2.yaml | 27 - ...lusterTest.withAffinity-StrimziPodSet.yaml | 18 - ...est.withTolerations-KafkaMirrorMaker2.yaml | 18 - ...terTest.withTolerations-StrimziPodSet.yaml | 9 - ...cOperatorTest.withAffinity-Deployment.yaml | 18 - .../TopicOperatorTest.withAffinity-Kafka.yaml | 31 - ...okeeperClusterTest.withAffinity-Kafka.yaml | 27 - .../ZookeeperClusterTest.withAffinity.yaml | 18 - ...eperClusterTest.withTolerations-Kafka.yaml | 18 - .../ZookeeperClusterTest.withTolerations.yaml | 9 - .../strimzi/operator/cluster/model/fbfd.json | 38 - .../CC-Broker-not-exist.json | 5 - ...Rebalance-NotEnoughValidWindows-error.json | 1 - .../CC-Rebalance-bad-goals-error.json | 1 - .../CC-Rebalance-no-goals-in-progress.json | 1 - .../CC-Rebalance-no-goals-verbose.json | 1 - .../CC-Rebalance-no-goals.json | 1 - .../CC-State-proposal-not-ready.json | 1 - .../CruiseControlJSON/CC-State-verbose.json | 1 - .../assembly/CruiseControlJSON/CC-State.json | 1 - .../assembly/CruiseControlJSON/CC-Stop.json | 1 - ...C-User-task-rebalance-no-goals-Active.json | 1 - ...ser-task-rebalance-no-goals-completed.json | 1 - ...r-task-rebalance-no-goals-inExecution.json | 1 - ...ask-rebalance-no-goals-verbose-Active.json | 1 - ...-rebalance-no-goals-verbose-completed.json | 1 - ...ebalance-no-goals-verbose-inExecution.json | 1 - ...User-task-status-completed-with-error.json | 1 - .../CC-User-task-status-empty.json | 1 - .../CC-User-task-status-fetch-error.json | 1 - .../cluster/operator/assembly/clients-ca.crt | 19 - .../cluster/operator/assembly/clients-ca.key | 28 - .../cluster/operator/assembly/cluster-ca.crt | 19 - .../cluster/operator/assembly/cluster-ca.key | 28 - .../kafka-versions-duplicates.yaml | 62 - .../kafka-versions-nodefault.yaml | 53 - .../kafka-versions-twodefaults.yaml | 53 - .../kafka-versions/kafka-versions-valid.yaml | 55 - .../src/test/resources/log4j2-test.properties | 27 - ...-operator-helm-3-chart-0.43.0-snapshot.tgz | Bin 134588 -> 0 bytes 604 files changed, 8410 deletions(-) delete mode 100644 .devcontainer/Dockerfile delete mode 100644 .devcontainer/devcontainer.json delete mode 100644 .devcontainer/maven-settings.xml delete mode 100644 .devcontainer/settings.xml delete mode 100644 cluster-operator/bin/Makefile delete mode 100644 cluster-operator/bin/pom.xml delete mode 100755 cluster-operator/bin/scripts/cluster_operator_run.sh delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperatorConfig$ClusterOperatorConfigBuilder.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperatorConfig.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/Main.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/PlatformFeaturesAvailability.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ShutdownHook.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManager.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerConfig.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/AbstractConfiguration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/AbstractModel.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/AuthenticationUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CertUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ClusterCa.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ConfigMapUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ContainerUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CruiseControl$CruiseControlUser.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/DefaultSharedEnvironmentProvider.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/DnsNameGenerator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ImagePullPolicy.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/JvmOptionUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KRaftUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeAdminClientConfiguration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeConsumerConfiguration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeProducerConfiguration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBrokerConfigurationBuilder.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConfiguration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuildUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectConfiguration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectDockerfile$Cmd.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectDockerfile.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectorConfiguration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaListenerCustomAuthConfiguration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMetadataConfigurationState.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Configuration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Connectors.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerCluster.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerConsumerConfiguration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerProducerConfiguration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaPool.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaSpecChecker.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaUpgradeException.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion$Lookup.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion$UnsupportedKafkaVersionException.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersionChange.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ListenersUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ListenersValidator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/MetricsAndLogging.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ModelUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NetworkPolicyUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NoImageException.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NoSuchResourceException.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NodeRef.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PersistentVolumeClaimUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodDisruptionBudgetUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodRevision.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodSetUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ProbeUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/Quantities.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RbacUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RestartReason.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RestartReasons.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ServiceAccountUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ServiceUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/SharedEnvironmentProvider$EnvVarName.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/SharedEnvironmentProvider.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/StorageDiff.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/StorageUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/UnsupportedVersionException.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/VolumeUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/WorkloadUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ZooKeeperSpecChecker.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ZookeeperConfiguration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/BrokerCapacity.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/Capacity$ResourceRequirementType.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/Capacity.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CpuCapacity.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlConfiguration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlMetricsReporter.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/DiskCapacity.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/jmx/JmxModel.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/jmx/SupportsJmx.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/LoggingModel.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/LoggingUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/SupportsLogging.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/metrics/MetricsModel.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/metrics/SupportsMetrics.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdAssignment.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdAssignor.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRange$IdRange.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRange$InvalidNodeIdRangeException.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRange.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodePoolUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/VirtualNodePoolConverter.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/ContainerSecurityProviderContextImpl.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderContextImpl.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderFactory.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/VertxUtil.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperator$ConnectorStatusAndConditions.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperator$UnableToAcquireLockException.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/BrokersInUseCheck.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CaReconciler$CaReconciliationResult.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CaReconciler.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectBuildOperator$BuildInfo.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectBuildOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectOperatorMetricsHolder.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectRestException.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CruiseControlReconciler.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/DefaultKafkaQuotasManager.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/EntityOperatorReconciler.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftMetadataManager.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftMigrationUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftVersionChangeCreator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator$ReconciliationState.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMetricsHolder.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaBridgeAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreator$KafkaAndNodePools.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApi.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiImpl.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectMigration.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectRoller.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaExporterReconciler.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenersReconciler$ReconciliationResult.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenersReconciler.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMetadataStateManager.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperator$ConnectorsComparatorByName.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMakerAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperator$CruiseControlIssues.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperator$MapAndStatus.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconciler.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ManualPodCleaner.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/MetricsAndLoggingUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/Operator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/PvcReconciler.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconnectingWatcher.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodCounter.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodEventHandler.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodSetEventHandler.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$SimplifiedReconciliation.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/VersionChangeCreator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperEraser.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperReconciler.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperVersionChangeCreator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/BrokerState.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ConcurrentDeletionException.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultKafkaAgentClientProvider.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultZooKeeperAdminProvider.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultZookeeperScalerProvider.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/HttpClientUtils.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KRaftMigrationState.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClient.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClientProvider.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailability.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerConfigurationDiff.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiff$LoggingLevel.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiff$LoggingLevelResolver.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiff.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaQuorumCheck.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$FatalProblem.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$ForceableProblem.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$RestartContext.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$UnforceableProblem.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ResourceOperatorSupplier.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperAdminProvider.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller$ZookeeperClusterRollContext.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller$ZookeeperPodContext.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperLeaderFinder.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScaler.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalerProvider.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalingException.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AbstractRebalanceOptions$AbstractRebalanceOptionsBuilder.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AbstractRebalanceOptions.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AddBrokerOptions$AddBrokerOptionsBuilder.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AddBrokerOptions.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlApi.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlApiImpl.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlRebalanceResponse.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlResponse.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlRestException.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlRetriableConnectionException.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/PathBuilder.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RebalanceOptions$RebalanceOptionsBuilder.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RebalanceOptions.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RemoveBrokerOptions$RemoveBrokerOptionsBuilder.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RemoveBrokerOptions.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventPublisher.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNamespacedResourceOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractReadyNamespacedResourceOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractResourceOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractScalableNamespacedResourceOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractWatchableNamespacedResourceOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractWatchableStatusedNamespacedResourceOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildConfigOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ConfigMapOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/CrdOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentConfigOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/EndpointOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ImageStreamOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/IngressOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NetworkPolicyOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodDisruptionBudgetOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PvcOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ResourceSupport.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RouteOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/SecretOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetDiff.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StorageClassOperator.class delete mode 100644 cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StrimziPodSetOperator.class delete mode 100644 cluster-operator/bin/src/main/resources-filtered/.properties delete mode 100644 cluster-operator/bin/src/main/resources/cluster-roles/031-ClusterRole-strimzi-entity-operator.yaml delete mode 100644 cluster-operator/bin/src/main/resources/default-logging/CruiseControl.properties delete mode 100644 cluster-operator/bin/src/main/resources/default-logging/EntityTopicOperator.properties delete mode 100644 cluster-operator/bin/src/main/resources/default-logging/EntityUserOperator.properties delete mode 100644 cluster-operator/bin/src/main/resources/default-logging/KafkaBridgeCluster.properties delete mode 100644 cluster-operator/bin/src/main/resources/default-logging/KafkaCluster.properties delete mode 100644 cluster-operator/bin/src/main/resources/default-logging/KafkaConnectCluster.properties delete mode 100644 cluster-operator/bin/src/main/resources/default-logging/KafkaMirrorMaker2Cluster.properties delete mode 100644 cluster-operator/bin/src/main/resources/default-logging/KafkaMirrorMakerCluster.properties delete mode 100644 cluster-operator/bin/src/main/resources/default-logging/ZookeeperCluster.properties delete mode 100644 cluster-operator/bin/src/main/resources/kafka-3.6.0-config-model.json delete mode 100644 cluster-operator/bin/src/main/resources/kafka-3.6.1-config-model.json delete mode 100644 cluster-operator/bin/src/main/resources/kafka-3.6.2-config-model.json delete mode 100644 cluster-operator/bin/src/main/resources/kafka-3.7.0-config-model.json delete mode 100644 cluster-operator/bin/src/main/resources/kafka-3.7.1-config-model.json delete mode 100644 cluster-operator/bin/src/main/resources/log4j2.properties delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ClusterOperatorConfigTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ClusterOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/JSONObjectMatchers.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/KafkaVersionTestUtils.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/PlatformFeaturesAvailabilityTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ResourceUtils.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ShutdownHookTest$MyVerticle.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ShutdownHookTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/TestUtils.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerConfigTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AbstractConfigurationTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AbstractModelTest$Model.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AbstractModelTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AuthenticationUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/CertUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ClusterCaRenewalTest$MockedClusterCa.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ClusterCaRenewalTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ClusterCaTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest$ModelWithMetricsAndLogging.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest$ModelWithoutMetricsAndLogging.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ContainerUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/DnsNameGeneratorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/EntityTopicOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/EntityUserOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/JvmOptionUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KRaftUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaBrokerConfigurationBuilderTest$IsEquivalent.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaBrokerConfigurationBuilderTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterMigrationTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterOAuthValidationTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterPodSetTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterWithKRaftTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterWithPoolsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConfigurationTests.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectDockerfileTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ConnectorsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerClusterTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaPoolTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaSpecCheckerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaSpecCheckerWithNodePoolsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaVersionTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ListenersUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ListenersValidatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/MockSharedEnvironmentProvider.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsResourcesTest$ResourcesCombo.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsResourcesTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/NetworkPolicyUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/NodePoolUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PersistentVolumeClaimUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodDisruptionBudgetUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodRevisionTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodSetUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ProbeUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/QuantitiesTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/RbacUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ResourceTester.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/RestartReasonTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ServiceAccountUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ServiceUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/StatusDiffTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/StorageDiffTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/StorageUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/TestConfiguration.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/TestConfigurationWithoutDefaults.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/VolumeUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/WorkloadUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ZooKeeperSpecCheckerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ZookeeperClusterPodSetTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ZookeeperClusterTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlMetricsReporterTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/jmx/JmxModelTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/logging/LoggingModelTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/logging/LoggingUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/metrics/MetricsModelTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/NodeIdAssignorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRangeTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/VirtualNodePoolConverterTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/securityprofiles/BaselinePodSecurityProviderTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderFactoryTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/securityprofiles/RestrictedPodSecurityProviderTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/VertxUtilTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperatorAutoRestartTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperatorTest$DefaultOperator.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperatorTest$DefaultWatchableStatusedResourceOperator.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractResourceStateMatchers.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/BrokersInUseCheckTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CaReconcilerTest$MockCaReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CaReconcilerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CertificateRenewalTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectCluster.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectorMockTest$ConnectorStatus.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectorMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CruiseControlReconcilerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/DefaultKafkaQuotasManagerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/EntityOperatorReconcilerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/JbodStorageMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftMetadataManagerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftMigrationMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftVersionChangeCreatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorCustomCertMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockKafkaAssemblyOperator$MockReconciliationState.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockKafkaAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockKafkaReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockZooKeeperReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMetricsHolderTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNodePoolWatcherTest$MockKafkaAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNodePoolWatcherTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNonParametrizedTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockKafkaAssemblyOperator$MockReconciliationState.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockKafkaAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockKafkaReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockZooKeeperReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorTest$Params.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaAssemblyOperator$MockReconciliationState.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsKRaftMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaAssemblyOperator$MockReconciliationState.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockZooKeeperReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaBridgeAssemblyOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiImplTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiMockTest$MockKafkaConnectApi.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorConnectorAutoRestartTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorPodSetTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectBuildAssemblyOperatorKubeTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectBuildAssemblyOperatorOpenShiftTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectMigrationTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectRollerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaExporterReconcilerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerClusterIPTest$MockKafkaListenersReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerClusterIPTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerSkipBootstrapLoadBalancerTest$MockKafkaListenersReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerSkipBootstrapLoadBalancerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMetadataStateManagerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperatorConnectorAutoRestartTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperatorMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperatorPodSetTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMakerAssemblyOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperatorTest$StateMatchers.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStateMachineTest$StateMatchers.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStateMachineTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStatusTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerKRaftMigrationTest$MockKafkaReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerKRaftMigrationTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest$MockKafkaReconcilerFailsWithVersionUpdate.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest$MockKafkaReconcilerStatusTasks.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerUpgradeDowngradeTest$MockKafkaReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerUpgradeDowngradeTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockFailingKafkaAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockInitialStatusKafkaAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockWorkingKafkaAssemblyOperator.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaUpgradeDowngradeMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaUpgradeDowngradeWithKRaftMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ManualPodCleanerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/MetricsAndLoggingUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/OperatorMetricsTest$Foo.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/OperatorMetricsTest$MyResource.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/OperatorMetricsTest$ReconcileAllMockOperator.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/OperatorMetricsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/PartialRollingUpdateMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/PvcReconcilerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtilsTest$MockJmxCluster.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtilsTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconnectingWatcherMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetControllerIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetControllerMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TestingConnector$TestingTask.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TestingConnector.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TolerationsIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperEraserTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperVersionChangeCreatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZookeeperReconcilerKRaftMigrationTest$MockZooKeeperReconciler.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZookeeperReconcilerKRaftMigrationTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClientTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB$BSB.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB$TSB$PSB.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB$TSB.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerConfigurationDiffTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiffTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaQuorumCheckTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaRollerTest$TestingKafkaRoller.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaRollerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRollerTest$MockZooKeeperRoller.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRollerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZookeeperLeaderFinderTest$FakeZk.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZookeeperLeaderFinderTest$TestingZookeeperLeaderFinder.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZookeeperLeaderFinderTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalerTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlClientTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/MockCruiseControl.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/PathBuilderTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventPublisherIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventPublisherTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventsMockTest$OverridingClusterCa.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventsMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractCustomResourceOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNamespacedResourceOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNamespacedResourceOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractReadyResourceOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildConfigOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ConfigMapOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentConfigOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/EndpointOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ImageStreamOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/IngressOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaBridgeCrdOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaConnectCrdOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaConnectorCrdOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaCrdOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaCrdOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaMirrorMaker2CrdOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaMirrorMakerCrdOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodDisruptionBudgetOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperatorMockTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PvcOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RouteOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ScalableResourceOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/SecretOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetDiffTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetRollingUpdateTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StorageClassOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StorageClassOperatorTest.class delete mode 100644 cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StrimziPodSetCrdOperatorIT.class delete mode 100644 cluster-operator/bin/src/test/resources/current-kafka-broker.conf delete mode 100644 cluster-operator/bin/src/test/resources/desired-kafka-broker.conf delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentAffinity.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentTolerations.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-Kafka.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack-Kafka.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity-Kafka.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms-Kafka.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity-Kafka.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations-Kafka.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-KafkaConnect.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-StrimziPodSet.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-KafkaConnect.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-StrimziPodSet.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-KafkaMirrorMaker2.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-StrimziPodSet.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-KafkaMirrorMaker2.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-StrimziPodSet.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Deployment.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Kafka.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity-Kafka.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations-Kafka.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations.yaml delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/fbfd.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Broker-not-exist.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-NotEnoughValidWindows-error.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-bad-goals-error.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-in-progress.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-verbose.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-proposal-not-ready.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-verbose.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Stop.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-Active.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-completed.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-inExecution.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-Active.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-completed.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-inExecution.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-completed-with-error.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-empty.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-fetch-error.json delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.crt delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.key delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.crt delete mode 100644 cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.key delete mode 100644 cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-duplicates.yaml delete mode 100644 cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-nodefault.yaml delete mode 100644 cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-twodefaults.yaml delete mode 100644 cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-valid.yaml delete mode 100644 cluster-operator/bin/src/test/resources/log4j2-test.properties delete mode 100644 strimzi-kafka-operator-helm-3-chart-0.43.0-snapshot.tgz diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile deleted file mode 100644 index 906942ce248..00000000000 --- a/.devcontainer/Dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.195.0/containers/java/.devcontainer/base.Dockerfile -# [Choice] Java version (use -bullseye variants on local arm64/Apple Silicon): 8, 11, 16, 8-bullseye, 11-bullseye, 16-bullseye, 8-buster, 11-buster, 16-buster -ARG VARIANT=11-bullseye -FROM mcr.microsoft.com/vscode/devcontainers/java:0-${VARIANT} - -ARG MAVEN_VERSION="" -RUN su vscode -c "umask 0002 && . /usr/local/sdkman/bin/sdkman-init.sh && sdk install maven \"${MAVEN_VERSION}\""; -COPY --chown=vscode:vscode settings.xml /home/vscode/.m2/ -COPY maven-settings.xml /usr/share/maven/ref/ - -RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ - && apt-get -y install --no-install-recommends git openssh-client less iproute2 procps curl lsb-release exa wget unzip shellcheck ruby-full - -# Install helm -RUN curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \ - && chmod 700 get_helm.sh \ - && ./get_helm.sh - -# Install ASCIIDOCTOR -RUN gem install asciidoctor \ - && gem install asciidoctor-pdf - -# Clean up -RUN export DEBIAN_FRONTEND=noninteractive \ - && apt-get autoremove -y \ - && apt-get clean -y \ - && rm -rf /var/lib/apt/lists/* - -# Allow for a consistant java home location for settings - image is changing over time -RUN if [ ! -d "/docker-java-home" ]; then ln -s "${JAVA_HOME}" /docker-java-home; fi - -# [Optional] Uncomment this line to install global node packages. -# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1 - -# make docu_html -# make java_build or make MVN_ARGS='-DskipTests -DskipITs' all or mvn install -DskipTests -DskipITs -# make docker_build - -USER vscode -RUN curl -sS https://webi.sh/yq | sh \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index 6af9666e137..00000000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,44 +0,0 @@ -// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at: -// https://github.com/microsoft/vscode-dev-containers/tree/v0.195.0/containers/java -{ - "name": "Java", - "build": { - "dockerfile": "Dockerfile", - "args": { - "java.home": "/docker-java-home", - "VARIANT": "17-bullseye", - // Options - "MAVEN_VERSION": "3.6.3", - "INSTALL_GRADLE": "false" - } - }, - // Add the IDs of extensions you want installed when the container is created. - "customizations": { - "vscode": { - "extensions": [ - "vscjava.vscode-java-pack", - "DotJoshJohnson.xml", - "ms-azuretools.vscode-docker", - "VisualStudioExptTeam.vscodeintellicode", - "vscjava.vscode-maven", - "vscjava.vscode-java-dependency", - "redhat.vscode-yaml", - "ms-vscode.makefile-tools" - ], - // Set *default* container specific settings.json values on container create. - "settings": { - "java.home": "/docker-java-home", - "maven.executable.path": "/usr/local/sdkman/candidates/maven/current/bin/mvn" - } - } - }, - "features": { - "ghcr.io/devcontainers/features/docker-in-docker:2": {} - }, - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - // Use 'postCreateCommand' to run commands after the container is created. - // "postCreateCommand": "java -version", - // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. - "remoteUser": "vscode" -} \ No newline at end of file diff --git a/.devcontainer/maven-settings.xml b/.devcontainer/maven-settings.xml deleted file mode 100644 index 50439abb029..00000000000 --- a/.devcontainer/maven-settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - /usr/share/maven/ref/repository - \ No newline at end of file diff --git a/.devcontainer/settings.xml b/.devcontainer/settings.xml deleted file mode 100644 index 98a19426835..00000000000 --- a/.devcontainer/settings.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - false - - - - github - ${env.GITHUB_ACTOR} - ${env.GITHUB_TOKEN} - - - cheetah-lib-processing-local-dev-repo - - 6000 - - - 5000 - 5000 - - - - - - - \ No newline at end of file diff --git a/cluster-operator/bin/Makefile b/cluster-operator/bin/Makefile deleted file mode 100644 index 1607e4de9da..00000000000 --- a/cluster-operator/bin/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -PROJECT_NAME=cluster-operator - -docker_build: java_build - -docker_tag: - -docker_push: - -all: docker_build docker_push -clean: java_clean - -include ../Makefile.maven - -.PHONY: build clean release diff --git a/cluster-operator/bin/pom.xml b/cluster-operator/bin/pom.xml deleted file mode 100644 index 3abf384019d..00000000000 --- a/cluster-operator/bin/pom.xml +++ /dev/null @@ -1,379 +0,0 @@ - - - - io.strimzi - strimzi - 0.43.0-SNAPSHOT - - 4.0.0 - cluster-operator - - - - Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - - - - - - ${basedir}${file.separator}.. - - - - - io.strimzi - api - - - io.strimzi - config-model - - - io.strimzi - operator-common - - - io.fabric8 - openshift-client - runtime - - - io.fabric8 - openshift-client-api - - - io.fabric8 - kubernetes-client - runtime - - - io.fabric8 - kubernetes-httpclient-jdk - runtime - - - io.fabric8 - kubernetes-client-api - - - io.fabric8 - kubernetes-model-core - - - io.fabric8 - kubernetes-model-common - - - io.fabric8 - kubernetes-model-events - - - io.fabric8 - kubernetes-model-policy - - - io.fabric8 - kubernetes-model-rbac - - - io.fabric8 - kubernetes-model-apps - - - io.fabric8 - kubernetes-model-storageclass - - - io.fabric8 - kubernetes-model-networking - - - io.fabric8 - kubernetes-model-coordination - - - io.fabric8 - openshift-model - - - io.fabric8 - zjsonpatch - - - com.fasterxml.jackson.core - jackson-core - - - com.fasterxml.jackson.core - jackson-databind - - - com.fasterxml.jackson.core - jackson-annotations - - - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml - - - io.vertx - vertx-core - - - io.strimzi - certificate-manager - - - org.apache.logging.log4j - log4j-core - - - org.apache.logging.log4j - log4j-api - - - org.apache.logging.log4j - log4j-slf4j-impl - - - io.strimzi - kafka-oauth-server - - - io.strimzi - kafka-oauth-server-plain - - - io.strimzi - kafka-oauth-client - - - io.strimzi - kafka-oauth-common - - - org.junit.jupiter - junit-jupiter-api - test - - - org.junit.jupiter - junit-jupiter-params - test - - - org.hamcrest - hamcrest - test - - - io.vertx - vertx-junit5 - test - - - org.apache.kafka - connect-file - test - - - org.apache.kafka - connect-api - test - - - io.strimzi - strimzi-test-container - - - org.apache.kafka - connect-runtime - test - - - org.mockito - mockito-core - - - io.strimzi - test - test - - - io.strimzi - mockkube - - - io.strimzi - operator-common - tests - test-jar - test - - - com.github.spotbugs - spotbugs-annotations - - - org.apache.kafka - kafka-clients - - - - org.apache.kafka - kafka-server-common - - - org.apache.zookeeper - zookeeper - - - - org.apache.zookeeper - zookeeper-jute - - - io.netty - netty-transport - - - io.netty - netty-transport-native-epoll - linux-x86_64 - - - io.netty - netty-transport-native-epoll - linux-aarch_64 - - - io.micrometer - micrometer-core - - - io.micrometer - micrometer-registry-prometheus - - - io.vertx - vertx-micrometer-metrics - - - org.mock-server - mockserver-netty - ${mockserver.version} - test - - - org.mock-server - mockserver-core - ${mockserver.version} - test - - - org.mock-server - mockserver-client-java - ${mockserver.version} - test - - - - - - - org.apache.maven.plugins - maven-resources-plugin - ${maven.resources.version} - - - org.apache.maven.plugins - maven-jar-plugin - ${maven.jar.version} - - - - true - true - io.strimzi.operator.cluster.Main - - - - - - org.apache.maven.plugins - maven-dependency-plugin - ${maven.dependency.version} - - - copy-dependencies - package - - - set-classpath - package - - - analyze - - analyze-only - - - true - - - io.fabric8:kubernetes-client - io.fabric8:openshift-client - io.fabric8:kubernetes-httpclient-jdk - - org.apache.logging.log4j:log4j-core - - org.apache.logging.log4j:log4j-slf4j-impl - - io.netty:netty-transport-native-epoll:jar - - org.apache.kafka:connect-file - - - - io.fabric8:kubernetes-model-common - - io.fabric8:kubernetes-model-coordination - - org.apache.zookeeper:zookeeper-jute - - - - - - - org.apache.maven.plugins - maven-assembly-plugin - ${maven.assembly.version} - - - make-dist-assembly - package - - - - - - - src/main/resources - - - - src/main/resources-filtered - true - - - .. - - kafka-versions.yaml - - - - - diff --git a/cluster-operator/bin/scripts/cluster_operator_run.sh b/cluster-operator/bin/scripts/cluster_operator_run.sh deleted file mode 100755 index 675c8fb33f6..00000000000 --- a/cluster-operator/bin/scripts/cluster_operator_run.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash -set -e - -# Clean-up /tmp directory from files which might have remained from previous container restart -# We ignore any errors which might be caused by files injected by different agents which we do not have the rights to delete -rm -rfv /tmp/* || true - -export JAVA_CLASSPATH=$JAVA_CLASSPATH:lib/io.strimzi.@project.build.finalName@.@project.packaging@:@project.dist.classpath@ -export JAVA_MAIN=io.strimzi.operator.cluster.Main - -if [ -z "$KUBERNETES_SERVICE_DNS_DOMAIN" ]; then - KUBERNETES_SERVICE_DNS_DOMAIN=$(getent hosts kubernetes.default | head -1 | sed "s/.*\skubernetes.default.svc//" | sed "s/\.//") - if [ -n "$KUBERNETES_SERVICE_DNS_DOMAIN" ]; then - echo "Auto-detected KUBERNETES_SERVICE_DNS_DOMAIN: $KUBERNETES_SERVICE_DNS_DOMAIN" - export KUBERNETES_SERVICE_DNS_DOMAIN - else - echo "Auto-detection of KUBERNETES_SERVICE_DNS_DOMAIN failed. The default value cluster.local will be used." - fi -else - echo "KUBERNETES_SERVICE_DNS_DOMAIN is already set. Skipping auto-detection." -fi - -if [ -f /opt/strimzi/custom-config/log4j2.properties ]; then - # if ConfigMap was not mounted and thus this file was not created, use properties file from the classpath - export JAVA_OPTS="${JAVA_OPTS} -Dlog4j2.configurationFile=file:/opt/strimzi/custom-config/log4j2.properties" -else - echo "Configuration file log4j2.properties not found. Using default static logging setting. Dynamic updates of logging configuration will not work." -fi - -# Used to identify cluster operator instance when publishing events -if [[ -z "$STRIMZI_OPERATOR_NAME" ]]; then - STRIMZI_OPERATOR_NAME="$(cat /proc/sys/kernel/hostname)" - export STRIMZI_OPERATOR_NAME -fi - -export JAVA_OPTS="${JAVA_OPTS} -Dvertx.cacheDirBase=/tmp/vertx-cache" - -exec "${STRIMZI_HOME}/bin/launch_java.sh" diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperator.class deleted file mode 100644 index da4630a670a3a312e896df5d58d2328bb04dc1b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9059 zcmeHNZBrCS5bi}_xzqT98sE)|DFu_)Nkn&O#iTBSZiT|h zSD5SPpRrYzcY}Nw3Agf_n-8j7uqY6D$E$@A7y0qHo!#g+soS8VipyhuDL-3y#+}HZ zUVHZb{fRk)`fNKWmADu-DC4sV539`K2KC#oc;@jgzXXC_C-9ful0jp3#{!Kj2!I{@ zl|@eZ-ukrb7Y*vMXINFrFz=Rp7S#k~xGwufS_QG^I0W%A4~VrSQMeenHaa{C{=-6! zIj+YS+zJ;484nFQxx$uL*jO0yO2J#NFO5N`>}lNqV9qNJ$SU8`%6KtmOc)2hrTAxD zAp$YOR=8-z7>F^pp#jdNW}F+XK$ly9T8MyjP9fbBZn4B$F)qXy`eATiRNQmCz+gp= z2Ed8|5-EUjTJSKa35VAeFkh=yJy$B}EL5r=1K+6)TYnrB=Xr!Rk3`^klI@HwO%vOo zc?eu5!ZH)QxD*Ji{=^!0YS<;%3ij3>P@bEs`4Nm|%3pOux8U(H-wz@dxq%&s?vZ#&o0T;jcPH6iJi47#wNSL0OH7hr z4e?;IrjvC!v}jQGcu?dfT{Gy&D-Sav_emdpX!PHG;!88}R(a8Kf=bo(lp?IE2%wot zc-zWm7Rua;)~no-06FQ_aFTX<9J8xj;BeY5gg!>b?uPBC76TW@hnB-YW3+pHR<$ED8r%%;ND3w%CeB1#AWn5H^z$y1STYVo-&lwwE{XgQQQiz1DMPBp)JN>;yQcuh0y zI6&+&ao9!5()reJkh!C5rPBbhL*2bGpPwGMGxemxPu!^4OyW@E9!}u{;c}xj%?8P4 z_Sze#T9GtFSsJ3;A-Y0&T>EM+<>VFA5gUH?QLR$oVu9gSNnY{=4)Ye7aOLwxXLnR~ zaRE5o`CYfXDGa4cH0aQvy%D;Gr3fcBA4hDdDBNAk?yOy3_~AafW%N8saT`|W(CD$z z9QFg}e&F0TA=;tyO`9U@2hKe>S?y4FX&h;$6UC(m{$Bzo>S=A$R5;!Ys>n%sUavIdk6 zIypwfqvle~aLIg$ydyl&DIiiP!kRlnagX&ObpSg$6{ zfLXgsOqxYmQ4Q&naFf19jad;SYy^|$VXcZ{yKLN~Cnz>IlQowNO>+LQFIYERK=)t&*S96v|rReOOhqV1yh$WrYk8bI3v>??E? zzk_(X32Ee8voC1qY5xb$>7&0D?Z^1-1r6cvI)0@@prRY}iR!yapMo=%@iV%NK1uyK z+B#~Nq*th4Xiy6p)GoSB!;m*d9oa-uZ&pZmG)RAFkPN!J1Npwxp#G^rCAvp>%(8Wc z;~IpQ8iWHhfmP|ENxF}g=o$Xrr(^Vh9+FLu=rPUF0xi-v^euf)Khn=spdu|(`9Ip1 B?mhqj diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperatorConfig$ClusterOperatorConfigBuilder.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperatorConfig$ClusterOperatorConfigBuilder.class deleted file mode 100644 index 1b272c568063d8233ee7aeea90f62ab9f37ab549..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5403 zcmeHLTW=IM6h00Mdm$wdE~S)$Nx5ve?7Z;Arm4beTM(1oNSj7NLLl#~vuiRl9@*Yd zc;-JT8-q9t>f<;AD?qBn1ZV)ImWRDkNj=;#&IKyhlA5M8anVt)`KZU7rW~7Oj-m2b}h}=QD*u5%acKpVI{)YoqO` zz1fc1Xgd~YPjXE|X=uQVH=qU)_^%NNMAPRlm)YV0bUWWR7o`*+ph&Ms|^z6!VkSLRW@qNBDRJ z&S#_BZv8xgGpDY3dyh?gy%RP0{GIK{iHcu7rC%y)@>x02!n6ICPw8zbea^yNQy|IY zoS5yl+gxewius?4ox1^Em)3^9zb1X*J>7LtAL1zcY{eVkK-x#E()=A=)kV6gWDvhi zEj&%VnPFmX;=A3ZrG3N(LTh~U$JbH%&c5Mcpt+j-Xvk5MS#h&~O@*{;O!VCyJ zPq8+|{!eR73CKXjB*XYZ1Dj(vd^u@t=gmqzl;KzM(N(9cPDtt?zT_$imh1n`X6=^gK$Rb?*7sZxD8k)MAWYIci9mY|q z#kIL3wSfzO6OjO%fq6Ixhp<#^LzKl*DD#sB~S diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperatorConfig.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/ClusterOperatorConfig.class deleted file mode 100644 index 3a46e282590d41d1df7a4385e843297cd52ce1cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11411 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/PlatformFeaturesAvailability.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/PlatformFeaturesAvailability.class deleted file mode 100644 index 3ea39a007a7cb671f55ce673416561afd68b50d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6706 zcmeHLOLH4V5bjZIuU0mBI8TxQn}mmyfCM4DVkh7j+YymtV>^Zz0<2bJY2tmTW=AfY zBURk_1>Ct)l>(~51rFrIfg1;I9QX@VQS|Jtq_sU+ttf@!z`-7A)cwsjJv}|${ot=} z?*qUUsB4fRFza)xQcDmRsVvOR%`6efRw`b-PWc4Rajzw)Pk^l9 zmuidIHT*Kd9J4NG4{fxnl)Dr~Rw?(H=Mp$vxv_gv0$CiXPy*-j6%-X)6EU%An^9Lx z6e_bV$ri=+Wmb0s>I9tL8k3d5m}cTCu01sE)u;xC2^{DeX@+x;XW=Lz7jC&|P|x0^ zHN*0pCfZft#*HTTsy21}%SKKQ_hDG3>w3bdQlq0GJi|1^c9Z7xzzjWPx~2?m)I)rc zdk*vIKbA_*T%L8=UH6ig%E34sAA=L{IC{V&bD6kG;Apbt)oflLQD{OyeIh4Lsy5JVnTZ0Ul&Jb3BS8PwQ$a z8HVSPe5(5LHU=3-A(Y@hIepROKAqXJXfwDk$(LiPGIau{cgCJs47c3~orMB{A5u8WfUhhXRBRw^E{iHZV=RqgyaTg{|L8-T?cP_J=Hx- zBSc_dzOb5wm&ov+DXg;6phk^aw#hNEX`0psrg+9#<`w-g$t<>$%wm*eo;7M7^$nTf zIHs@~hCl?m)x=~nj)0k2Q6{ZL`REsu@N&B3z?`PXg~3#*#s3mJ)5#t7@OWL}t^JAw zrzGf>=!F#swjTB#>@GkQXz@oOP59MOXx?RD)izkx=}KE zqUuaU-Z?JW2Dc}QyeS=d`GGBH#na{A2o04U5P&Fg1T%~Os zEXyt<&E&UAme*~C^zlmQL0!Kg=LE*eK+4Clu|hsR()${h%#4#FWE&m&3($J}=? zetZ1LJvjD#@aswZKZ0uj6yQ`a1BiAyrvHRO|4D`ZotVCXyfbhX@rDrlTn9m}6Eb*4 zf#Agup6kINuh9QIrhgtTbS&_EXZ@kh`Y$N-zv$>^uz^=X=F)PP&~jbgFDmqg1HG|O z3NFISs6`OrQVcbpnlk0%R7E%JTrb~{LjCC`~?8t!R-KM2;9nb z9Hvaj@EPl~P^d6BTBN^-P-R>*qjVT2MQ*qb+r7ec)X(yvQhNc+5jf|TBusY0t=(rl zHUt);tp^X*9}}oVk?MB2ZV@<}4;Qu#i}wfwksIKjYFl(AGlk{^E(~VxM2`z8*>1vH zcTr;Dj*!CKB`{lW>=2l{r#d`+_3bWNz{aNo_*zMI2+uhEX;IhD%Ll$p3k4I=RU4EH;Z zfPQRRKQ^sl%~#6< zh3xR3gyfwj-NdtDv%xJ(4ycfQwZ|#Li1v;mOw~}IJ#Y27)}q5taE(_8eDrzxc#2S7 zrk}o9J6xOnX?XpfDx~=VDK~P&bDSu~Q+y)fZISXP$gD55vd^@zEbMtiHzZaFU1Ug! z>-#a!9PPf^Ua#PJ3HkWDja5yS5$U)Ky|hi_=ZS>hq@dJb2`((c8F-7p#d>sDtp|Z< z*=oKVA%{LH(p|2%ZLSemiB!yzonh_`C+AF0f8CnAc8gx@4qK`ybqSC*&) z=Xv`Qv1N`cqv#!{8W+z7ADG7T=C&$y%GR|FP4=q8sQG!r~ zHMlxNxQ08j9vC2eRD#fQ2v$oKK7mii*3G?GS1(!j^u@YaxQ3E5@ELrLUx07$SweqZ NhY)VSSE&E%{{W{NTUh`A diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManager.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManager.class deleted file mode 100644 index a8a1947258fdd771bf96683084ff86b42cca5eba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6128 zcmdT|TT>iG6h4h4%dQXz7!pxq2X7E{*Gs%*F;SLM~Jp}v* zzWWb+@gHc#Dt-6Ge`I-jW{2H{!Rf79O!Bfj({uVer_bqg{p+76e*nOjaIXL(1U5qD zRRWib$|Lu{t#DZhwc^1Kydv97xmv1<=SQJts^T-Z!4&hEr@0grCw{GWUe{gWHkm5G zD1oUM%6CPx@?iH7k`uV-JXl++ZxR@D9N9#|DuJt^c9l+G!WM7WT;Jbyy?p{DXEPGQ z-Srug&4yaGv#DxQgi#QK6}Na(xH?jdz!fL`u;eUDiE@kT9Ynf@Pk4fuR|}9@|L*Z`VN5~7o2aRU8V%nEUfvQ30-xDYe3Z89&c8=1~^tswfnTV zL*SREDNCTcKDe{R7sZ9vX}LuDRf} ztt8qk2yfF;al6H6gL%HIkf@E96fZlS=d#@KmU8MX<&L+MliQGb%RFsJ7E&QK4P5QD zs763`*hc5*1w>nxjWd>woaF)F6A5|HmP%7DspksAYnRdVXwM{tRLwk5El6TzMVkA0 zSVJOAB3K49swH))K5Da45s5l6F@vyFOaolT$6k~)kmZndqFfG@C0G*maf5 z2$(~E9|I=$xTax*IS74HpqE7+<|3NplZ8dfLmG(&+v9>Y%5)twlyRqcn}0;PIFS2{ zy66L~euPr-WCYC-=6N^N^Dh4&7p;dD19+0kmLu+C($BH7iSGf^E!m(=W@?g&pf_uQj5VLq34QS$07!(Y!Bfb5B#4(bDm~@6N z&i{1kem3_TShjF|G;H1WbBQ&*5@7|4H(^+;QoJOWcJIq36YTK{7MDJTqw{B`)zL$y zxNHocRdT=6x;V_ardEk?(CFXeVi@pG7c%|n@kDK%Lw`O3#|_Oh%Xv`!*IeN-KdFK1 zhaPLk#qfXI!Ah@IM3(8w3d^$Iu`8bJsv?`KU@4Xj!xGHF>*FvB6uaJq)BTU>ekL6Z zN*hstedD%iLJ3S`26Fu!S8?;+Ssc|Z9ujyszA!)0mU z0o}hlvd9Z9*fpBD!x+3v$ln(74(es+b3U8v_w+aqs-yFYMDa|iZ}fD}6%C)^IG{{G zSXkRihjyV19k+kLbu7z=1b!NpES53HDiq@6&Ob3oJC^wtf!{1-wux<~gT_H&PF}S< zm<>amJ8sEHd2E%NC^^?th+qxbsrBQ@OaVS8Q0OSD0JjNTK6SSXu!PgjRJ;P<_-^WC z>sf%W2u$?wkvKqIHq+Ah=ml6oi1Zp2V6|_wnjDG1_5~kvBm+?8Jn?c%_;0mr^#I;$tith=+HFz0U zZy`6srSv<@eK-B;uW!37~!1^gnA~z z;u#1xGZ5A@5Jup=GZ5a-Kxk$nRL(&7AOoSDfdKFk&>lUE7#+oW_&5XMFau!(KEXXB Z@F}d}|1?_qGx!3kIN!euUqcP*{{kU6(BA+6 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerConfig.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerConfig.class deleted file mode 100644 index 68ddc634e3973ae960f5005fda17d62c902921da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7958 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

    0o#QjCtNwT%s>&gh(4=elj_hG}S? zVOy%*?Q#cv*>bhq^asq)Nk+MS?cTn&YFGvoT=L(wYU*}H2}MpbdK8B3uMTZ<(Bq6w zM`bFt?P@ba%ZyIJGhV?bD+FXuDb-fHRjju+i|d=kw%@H@EN!-%wXGV|+-YwrI~jT$ zloQR2E++J@)^3f|x&TAQkkOTq^sODZvRrE4R*G9~c(<6pxcHq`MGU!Kt5=HEl7iV4JwL5 z6`1k`MwdTahSB*%vcMGuOm(ckXa?ueE=NuHGQxS(FaD0vNhcQOh~XoFkC2zbb%L0& zv>tc+nvOs|q1(N_ZE?%1q7h8?D;9U^{2q6>B?Ok#TC4?3$4qUPn=Ye_s`~%XcHZ67 z9Ntl^q2bt84}4pWJv2JpVYI2vnn)TCBEv|J7(J~k6zl3@IU_$PmbPp14kLCKOZon= zSL=(#4h4^^cg6@^vkrIdfunQ05~(2ob^h|eaJbOfh0s}tYaPSlt_urx`It*meGG|Z z(-`tefhCvg1IO?V4lO^cZrPp2k!CQQ^LVdsY94QJXK3iWsO$E?Lhd;;)~XpwK>GAZ z8cEPYIu<^COdW%W)d4Y=ar)YFqu_TwS*IVGzjK6qt{!E7E9PMBtphMb(s7W z$FZFZHQC84+m@I)bI3cgh*txy!vxEHOpwWY?z3_(+uY-FhwG+@LK(5Wk06n+8g@S1 zCi0{0As?=TyuW8%l{+?fWy|*Dp62O$vIidiY9Cuwlm`Kv7dv5IsF$D48t7wSX*r&3 z*s`u!Vu)QXj|}-l;^XU&;8>C{sj_Fwn(Q6)c`loD@|aJTT()Ftu6rYP+`2i1JC)9# z2xULEE{Mn5M=KiQM~Er91zXM(p;Xg!xcN_EOF9Zn>Ea&-<{>kAK$yll*<&4-F55Xs z=qU0~aLgGU6B2}?X=~zGF-5+NgN&gYp6m{ADa7`Sdzv#4>d3*3Z{@mdxbnd2@OwDA zbn(enP3@bf(DvC@nuG~~Y^9%on%v82Kj@r#boBUMfZHltdD8af3y3I3E(hL^6 zPA2FRjh9pwrV>gOc{66hSvIX4y-2O&RHbj@`o1!GuN7C!Qz~|!>Y%sFou()kh`Y9} zYi3Jx41vSOMQ_hQb>R7#FSxP8I4E4GcmA8ny0AoVA%Tu|`q5QNqIbX^ zj~xHKNZ2B1^!$FuK+(C!Jh|S zjo>`+7bEyfv`k;2XJFSdeHHEE`L*!*_3-%(`ljFhEUo#^8~6}Ov`9Do_lxvAeapv1 zdcl8|=$8LfXx)EqgwNYl_VFFs^q(qK@XUd!N;PSjx-=ptG7{o{cLpwo-HxhJUq|t67gPy?f zW+DThL5H^!8Sc%%@IfL&m-Zr7ER6kNBv|ps1cof_lNmBRjoCc(WG{i?PdIYh&q)~XuL&A2kcaUXXh84bd6`bqkY1(N=tuMudV_vOzo1{yuj#k+ JdwQGR{V$vUu9g4* diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/AuthenticationUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/AuthenticationUtils.class deleted file mode 100644 index 3d727951c072c4cc3b2e84c517403f52efced91d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12378 zcmeHNOLH5?5$>TSVF5{&CC82>KeCctHfcM6<2>vbG!uvdB}fZWCP2z!5;4QYkX&gW z@IGkC&cjJnE;*zshurfIa!FOHoGSb1s$B99@;h=$rDqoyEWJCsV+xX`L>G{|n6KZ{ zJ>8gp{O8lp0N`EtZ3SisEC#;WaH!=rZqhy4u)IbP`j+#N)$oSQr=jOJOgjof<~JN~ z!0bjV3U`?sS|$xG&s_^GJE*`R0#C$vo4PxVm93l13<(_XwR*Y;3$D( z;?$1kL+0=+p|8hXFay(Iep-S$e^-5#O=({#{Fb?&7) z7q4DUHIc`1hMphlmZzK4im%-su`eUsL1pfFw6HLG@3(n6&d|0@E7XGs zb0lU2OkjRwVy@Ja)Hge)TY(pW*SnZm`8T*qr!L?33E>pU zS~W?PIWeM#o=)}f&X7IKi=yEWb5d}P`Yu+4U>bT}q1(6UqHSTF+F!2jDe=BtCVa=; zqqa3z#aa^iCTrg|*^pP!60xM}^h}>RCEx?{lm=a`YIr8KnUw7w^(~5Ju~wDJebvTN zCMA#r^a16T@?7DOP{NbfaEFDv-awBXMMIVsMKP(_Vor1Vw(mJ{HRt;1`{OV^Heo5= zW`4kTF)#X#6$H2e;{B`_6E85Wikij5OKfyNzqEXx-Z3mpciE%JSI%Rq#2y4$r5h=& zb;k|a4lgB{V_JHZs@h5{l@_VVC5@*NeH6lB-LoS{o@>5B?RzMMRC0<`lkx&2g{ov^ zDOjZpNx>=!>%Ioc-T7czA>Z{PcPhD3NuB8}lKT1o-7sIjiKVVl*@9gF2+_eG%ZDR_< zG8}n5S9G`}@W!kmbyag?E~^QFXIC*>SPsJjj}=&`NQ*bj@sJATK4tX2)MTL$hfxSV zZ+nG2_9un$)|V-i1cQo$ZQ;h1gbr2$E9K9W5szlg`3af7K&+U@Ero5D)?5&HjU&eO*`p! zRjGNzYM8OWbavPuKZZ+|&)K-HYfg5+Bt3szr;0&HD5>-3fnLZ9XYOYz< z7yCN6PP|G{t3p~DypPxL%2h6%uVPy%^dj)OR1JPzrV(G%OZHYA!>f0xPcG5t#bM+k zbD3|MJ!bkW6iwUNoUv?j$ip#b+_MolFIzKj>?7KXuTte?<5XIKA%Q1z!l42_fy!tQ zQ31S@dRm$#E3il41?ksuVyVDwye!HivjQLC}5vPU1Uh6HdHkQCm@Jp!lUFn*%Q_%s7}_Y|tB=Ng=Wqp9a(_wCgYOawFXvEb#uWG(4Q633g`04GH3zqz!o3dPMlN-vF$0ZQa?Y1q zEaCe`4&F)O-#h?55cn#57cDjB|9!##kl_D=9R8o|!@n)?KNR>Q0{>19{tp7L!93p9 z9`j!i_zC|X<>3D!@KtERd4XRP_zC|DIrz`_;gcSv+}B;5F#On!v9M{Dl9t9Q;BGe;qai{wIp~3j$w-pTf@s z{zeXdGlzdKg{QD3@TMZ(P2mT?1b$oKC;K*!|L+BU26oWXGq4N4!M|rP8(44)9Pr=+ Q2q1zF;SPKZzl2}^7a|hFjsO4v diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CertUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CertUtils.class deleted file mode 100644 index c0820a6d130cedbb83d87211e98f3a30837a0a47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10259 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 P@ENQ?1y*4l9)k4;DP2s5 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ConfigMapUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ConfigMapUtils.class deleted file mode 100644 index 0e3a497179f0bf4d4921ba1df04d7cff2167ae79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3672 zcmeHKTW`}a6h1B+X~WoH-0!B`Ixfu%PZY)-fs}&81`?01>ve|2j%;UK-uM~(5+o4t z&VK@Nl9bSDg%&X(1iYkia?axsDSVF({DN*&^eX9=<##K9;uvnVt( zdd=~u1s@qF+BhmT?!6_ga5|;GWf+2T-Jqhafm_{ z_7d`Pg4tQJ{%$h=OWUAUmGPQL+6dHp0!13jt=~9TRTq1=M7hBnBk-yb4(n3ur>p#G z$2!Bf%Nz6O-G|s^%7WFDl{JA6e=4^LyP^t*2>CQYCrlu|8#dmDvpuHuekZZNataaf zmvm~lxFxgkvZL(2{G5`1*L!djRl9uQ!7)6j6ngK$2|TM{5-A6aaDsIuoJCz;e7>m=SZg!X&ToB(w-4W^&F{^`|pGOrT>A_KVw+< f9~|L-x%98V;e6*Ka29`Oktu~b9EX$8fYV<9?Nq(0 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ContainerUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ContainerUtils.class deleted file mode 100644 index 9f965a02b472cf06dcf233bcb15693ab2783d0a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9880 zcmeHN&2to05bw7Fv%3Vsw}^@lMBO0niXti-B7%uTClHfBmB-2K%jV&Htn-l~{t5mG z`~e<3c(n>kxqI{E-SY0;DlPlX?7p4N4w>E}v4ZBZ*_rL{>HfX$&iwrM!=C`)D%>%k z#9%56?1pPeuW`>>vl`NGgi#>fuVlmTh`@^cpkX_47>S_a`Yqu!Zunk=M!j2g1o0Oi6rWia^o4Cth&kf`?pu%9hPdgn1eo%(}Z2Z_AFA$;c ztce!4eYYbWE0Vs)JAuFK2sgaKtCgiy!CS(1tN@8Rmi>j*7W}OA>s@>6J$vh2d+Uk4 zXL-vPA@}@shpGA4aprw&?ACFHSrI{~&J{H+xiSn@$Ci+$5~>x`x2;WpbIl5* zg|k~a1#N@=?Q*NQrPSF=Jq8Ns9#d7-DwN^C80>|E435{#{@k2Cf~K0Q$4zX>Z^iDi z2$od185~I-47QR<_`5gvM5{7naLs(OVZVtA?Lc6`>KHJ1lw;bkv8M8}X)X?S+D$XB znQnH8Q8CgsB}spDK&8?O9PAVEF!`dowxg<Lbq@X8nI>G_+`d?p;Up_b!ZJpOuOPQc2t^`N0ooE}gBe&LGA}&~SO|ua4h@1F z{S*j|CP7>#%?f;^G}i0Ui4hG5Bdr-wl}VdHe4b_j%QZ$!%Q z0xSK#3o3d6whJnHNuFI@5CEgHRW!PG3xG}|ENPlzaCAd^q=1>hxg128&GaD2Xw^K>x!^`>P*~uf1u?%lA_K*<$ zL0byIl+c2vAuEtGWN`s~@y>^o*iX^=h{4I0z<=4hxExERtu81Mmu1Nu@mN(Ow$ z;IO{cgIxn|;M*@Lju|kGLUgZbz{mI|j55lASq6KPX4ZgD85|tMQ3K`}9LpOM47iOu zxD8u013qK0KQp}>usHBiPFgz*#^%yZ?h@{NLpTHYb`HJ?1W?6qdto1b8hCXH?=p4w z2Pl7jr20LKJ;JLJjN_-G0i->IpJOQ%9EKx!Re_^$45^Oe_Y#~)B%Mb|`|&!J^lXl# zi;1LCm;X7%okI{ENhwo8_?*hD`<5So1>FaIe@c*j$%Wx6i%GleF&)YeCe`>x8 zyaSiD-gmX$eulg^%+C&M{t{fl$dsT7OZfK`X3Zo_!8N!JAHfXVgipYPTQCm`{{T*s B-~j*t diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CruiseControl$CruiseControlUser.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/CruiseControl$CruiseControlUser.class deleted file mode 100644 index aad94e369b833215c038251b3680045a5cb1a1b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4855 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/DefaultSharedEnvironmentProvider.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/DefaultSharedEnvironmentProvider.class deleted file mode 100644 index 543b8e2bb198d684d8c0581013cae5dba28fb47b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4036 zcmdT{ZExH}5S~4f_|6SU8z>Z7V4J>Opx6`&LL^iwC5T84t(s7Yk9+oBZX0{o+FhRr ze+-FA@QE+{D8#INr)v~fcB|8&ez4cKH~Z|&GcP;)&%b~C2>{>1R~~c-JTf{CGbUvC zl#N*^RA{Ug*>56LIoHf89mZ*4EZ1SC5}t84P@gw$Y4YA_)+C`sLc{>h`**WlWwa4r&EJoQL@yd zup(`OeEkJ6nre)sR#8UnNzVOV6<`fQRrECo?PYl?VqvK%Fb6T%B!*8BV=mGvoBCT+ z7+T1L4~67OK=(02UBHyf(i1A=SRHf9(9NUM2!3yomi)-fXiodN)XKOWsf0?Faf2KT zwaUs=aSotOg$aXw$hC1UbLo`{W3V8U&ZChq7Cm@^buO!Mj^C^N_FW-TEO9jwrvl-{ zFmvLfRTMo?X^I5|OO&Zm*zY|YbFHyr*ZldsHIAAFkyep^Uu$+!ugR_~>RE58;>^+p zMd!lXB7NABfL0D@CA3K67PyxWYw*@8oP)OsTVV1Rh5(+sri8Cu~TT%gRQe+uw>@-r>}h$!AR~<64-@j|*u<#`mxh zGXk}|?~eAeF+nB$Xc|D57I_`X9>zHhSZUPte9SBxqIukdjNMCU#~G zUl*UAqS7>Hw*7MKAy>vH96`gEaB$npG`ZB?pT2`#Y3EV8k})ILy! zj`$lA?w-2HReTdz-LE>Q zLu|SXTm_WIXBnRj@Suxh5AT;9@L>tR&%r9b-^7`_r5u3&4Ay?xIR86r{8h?b#PzUaLX9U5k1H pZldLNI(D2*rRBG3(C*ZrbzlqEbl_w76310!=M(r8LbwB8{0I6B11JCh diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/DnsNameGenerator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/DnsNameGenerator.class deleted file mode 100644 index 11eabecc71a9810c329286cac8eb12de6e857492..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5669 zcmeHL&2k$>5bjZorQIlT5OIK*BohUQ9blKgK#IR2v6Pg-R;nV|6erhscPve^yR$XB zGBL#yaO1=SP~13ifGVg8cWyic55a|^_XkU|Mn)pGaZ+5gyQAr^yTATsrgwk+^QQ*@ z@IG8CLV>`Ck#cOGiNLh$I6+{h=f19# zR3(@p#_DRIcqF|o?ovnkq3~ENWI#hDH$3h~?@-fdbvSjo<1vMkFqeC*&1qFgD<{eN zn_?bSHyY zQbyzLkniiHZ7jU6ac3G!e&`8D#5C%nPLRL=Dd{?>7n&(xeu0XJb_17hih#QoT|pHk zB&25EHWk5^yvHfSOge)I`F<6-IC|=HuJ8lcGu@YT)*$|FqPh+)pb;q znc{sOcce@6^_eettmmeZek$ceXLR>QfLh$-DoS`w+S5mD7PtGNBAlmcf7ufmuzf zmNaHF%h(Y#y8Z@NErz{T(jZEQd239G;eNjpX(ag)a2{5z5>kKLZ^dfs=#XG=bCe zT7@hS`0c<+JnX}lz?IL0=Q>Qe&FrN=-*R--D8b7FzI&87AaF*X9)ap$*>(96xHi@n zqm|2R1im_OswUqnE)1u=Ydx4v*;Nj|DU#!VcK5qv`bDG&Zw-7|%FX}+<(2H!vW0J< z5nKcU$MA#JF{r>3FpYN=D5lr5P)e^SaLfP`=N-qpH*sb%-~1WMpH@!(2&aC*rvf~M zztcDe5al%fmeYF^X5kDz8SpeblOtR~`vQ(-2+wK|E~N;`90GIjTyB?m?%AEw*j?3n zo`Va0o_n!V4MMHYb9IF0OB%bD)^l|N&(4l#174WGF5I!h{sS)eah22}<9J>Z@fVti zai1B1@RA1MOD)1HBM@{ke62;WMj+^7_*R2pfCYA6#e150Rg=Z{DMB*GfY&Fmd$40y SfH%;(fGgu|yiTF#tA7F2yU$+$ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.class deleted file mode 100644 index 207a709ec65119458b6a2726aebb63f676773d4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9371 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 Sn0`t>r(e>q>9_P8J^wE){L+g6 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.class deleted file mode 100644 index d546eaca51e059d40cc576d1e37bca5d1bbd3f8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10730 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 vz?0}t_xJXyLPa>5#=}d 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 bHFDpd%C+DfM7E#@ALJ6yhIM!s-UI({F$8M_ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeAdminClientConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeAdminClientConfiguration.class deleted file mode 100644 index 80a5de2501d9222885b269c3f4ef5c368d6ffd7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 536 zcmb7>%TB{E5Jj*1N?Qt)@>rA=J0v9h0R^N!5~(76s3}r+l}X*mkT{i-BEhGz-~;$5 z#54;esxDyT@wI2p%(Xwi-ai1`;><#h!Ap$KBcU{Z5-)cwm0OGkw?$mJj2=z24yg*roFW5q&)Ax|AG zoG{e4EilvuDoM!9^mQc@T!6Ca7xQSMh!QD_R1Rg*l`UPx-p_q4%i7P@1DsMU6XOs^ GIQ|CM6q7Fi diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.class deleted file mode 100644 index 1b9a88bf97d990a7abdf96b7321b069f29af0b49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13611 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 Zcou#MzlPty^Y9|P1iypdW7PTMe*q8^C3OG* diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.class deleted file mode 100644 index dea4db2351e5db2ce11c241a3b23c69f1442c31b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20654 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConfiguration.class deleted file mode 100644 index 594f94f9ecd5e77ed5b4ff8e23ae70f3f2494564..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10062 zcmeHNTXWM!6h7+&d?64nrCb73(3=gd-1~(9n0```rK0*Zzb~&sw&l#7ZoK$iPfqY_GNZ?RUe*nO3sK+5j zV9^mqwoSQ}eN4A#mfKm!6}i_f`j z#bKI&HYrYS4JV?8y90{ArDCb3RTeAdds?NjS}E7c`Lf=qYn5uTTq1B<@6j}=wVtga zQEPpkz;VQITxz*>YIa!yk_0Yu3n{B>!rsKMj<8+ZuuXM~2?rSyxTu$x8!KA1np@Ty zg>q#jR~t-{fEj#l+UshYISyTCYReXF>iPyRX@%TUA(yX}D+!pz z!A;hpUDH(s>zLf=DM@XithOLrNqRmmLj=JMrI zty0!?)OkhIwR)~pYv6x{;xaxxqF0%m?1KE>1OMnPZgF>kz;arj)DlK5YCcmZFr7zx zi^CfPX1CW|6T%h=xJpj_bl(!pvCS>kR1CY_;bu?I3a<5<$=c3MC6%mgFr~>1lM3wA zp~fbzrgDwjYTw4yfsLzu8&`WaeoblG%uy`cRdC&n4aG$q_N2oM*N=m8s?u{*NlzV* z>ha<2jxAhCSuv<3=U8LPK$0C@wh>?Mo_+Dhk({Jk*X3p?yjQxT7r+AKR9su3iu<&~ zQpp4EBx6Vvj9xYzFUWX1Srt8bPZ_tU;1nZBDjAgs&oDIx+C2$QVitigsbqy2wqTeTGuQ%gapescq(N*iD7C zJML4-G@VhnqjW9Id$@&LBqmI~JyV*hGP=D-=UP#zDJKN&NixRpA~JF>=UtKc^q2{K z+7^s9eFM`yz1F>iHlwrzCKNJH*+b`;VzjWYbZptH%^e4mXRkL(l}bh=S}5!GNkyHq zXfn*tR)tK)T+SS{rk&CRmJ0g`Gy)mrHtJi0F^d=__5!4IAu%Ei-KEaPc&Lc3DtYWPt78gT>bBRIsL8TJp844ZHS7JltpDesnjXg&bQp%=-r)SM)mw2i8(rY@ecabRf$fvN_9?gsXW%s)f3`RN zb!?y8)jp472G1|z4Cu6Q2|q96h)>x-VfmNPmhb_OCSp$3>kblWUwvEM*-vi z4Ui>?I{0*m^jQx{GLf=-vV1;@M5cU9zJ!~@@$&&pZUv0L9KeLY0^AuQeKkbdW|9j) sQUj6lu+-P8T;Xj5EdXI503im;D1Qv@!hQTcfmTq2d$0m!_y(%~1KIBassI20 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.class deleted file mode 100644 index d9f04538b624ab8c2cb2eb79386d8bec6be697b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9631 zcmeHNS#ul55$>TVEeM^VWXqN;d(FrRC|g8TPDh}bfFNkYTpR&F$dZ#FgT)XWaj^^U z!HCX%C;uS7Aip40sYtniSdV28p z|Ni9@0C)#}ufYO=yyu$PKIL}y5j~_??qogR<^7L&))_FD`i`45t-$k{o9#PYW@UHi z-T^H*w#`g`GvHQNgGB=G%nFn5pd4!YWdTayQlVO|RV&3xv)z19D-u{Xq&^n4d)WqR zWcP9eE}~q|r?%gsR=`rQMBwUy(C4lhDs;CaG$L?otGJ!tHJa_6e5JHgZ5KZ%7IvG} zdb?E4zgtYf1p;sMOm_{NC$LaHoLml~%izueS@k zjb^pnE>tU(VxigI+$|Yf?OJuKZR9tLMk58639L4n^-}p^X+*q}-`>d|V+qL#oE@sG z8Pbzz;mbbj4}@s>0?pmyJ%e_b>*3Beueu~MJ*Q1Ery?Q+3ItsUvX>R^a*&M>&=Bl!*a zpioYzk{$$>)nKN}(8tT8>6-YGz`1p9bAN-tLB^;voM4k%Tq>F~-lJZb`Ls)Ynlok% zy~aLuS+{5(a@Vo@%=T-pbI7~Q&8@ZwEEX^#HTXP%%aaH!x~}7<;0Y=kJw3hD+-G{1nU)Zv52$&79@AI2vo=hvwNYxV4O44Prq+ty zb(p8)bm)ERoBO(tIPCEN!!nA4=B|l^T@&hI1jnI<`tbh1aeW=h_h`rE=G(eS#mws+ zrjHCdr9Ac0|5Jnv(MOi7 z&zO$ab@xfj({#P9&~qvagTVkxNbf#%Z9J!WG2}C0M^BqExKYvu7R@o_CHs(Cyj#a& zK5$J|d~7m#f{9_+GX|yG)#A;=G?ItD>$P zo&RD~Nra0LIkfDpWCqU6kbEs0`7WV-cog^X(8b(@^hq|9Bs9+$L^Uhuaa%EG>7@kg za}veE-bDNwlPE9}==9u3#xt$(UUb=$P71vcLz%<{X;^_TUVzsiL*RwX$@YzCOncZ<0m_D^mbj&l$UW(RpnGiNUL->e6=&-)DXkb4}RJk>8-HX6q^KXlny+*m|+ z^2_ARhY7kx#}Q(J>2&)%*|>_P<>~f0IUjwdw@+*^%L;C~Ssvh>1+FL9V9pGi>Z`33 ze4W4_5~O01eQ)j?GJ)4dcI2PbQ(wx2O?9yg+zOwSeRW~$I)SaH+bVk0@!KhZRF8#M zJlOirtPb6of^QKh#tTT`O9D503`;7U!LY2};}#p&6$ExOpK1x8VCGhhF>EdcTLen+ z28=nLz98c!e9{O4@1w(Jy_kq@rxE2-@E(Efc!iUc84+#e1Tk0M^w7-1nYEP{K{dR^ zsW}!mk8)vzDk>Loi-g*4E0bthWh=ap&oL?h5FS|sLS99GlanX*|mN`s1FyJ z5E#|}kibrS;762+GvL~k0pi>&FL_r~6?eGc4QX)V(+$}v*v3VQz>84}qyq9jj=+Ty zUX8m2i+UdOH0WR<{!Ht@bYZLkR^aQO1_&=y!x~$I9@eN*Weqsq`9|EQ!2wzzUkvTm zppO|7P6(D08aUxFj28_)LfkNjPsChww z@J}T|5w;@;6CK`FApA>-P=fczUf3DW-`TM)Dlhy;fwTYyl*dSwG19~;1roWUM5;n< zjP&g>(!@Fy(y9`v9zkj(MA}p!0W@JZ;^~Q1t&^T6bp--}58#0k;h_S-RU&)`zNd5pOqWM(g+(F*9+3bO5=u+F9Y{GvG-hTMOsVG-bq#9Kd~xEYN#?? z$Xx_N58Q|SXY`-p%$G_l`!&NW&DK+f>K6H^p~0{=#oje0GIg9~)nA@yBa@_NC>GvxF_3&yMePyq_Lz5j#JipI-sFBH6Rso6 zLt(vrZpn}QDJGUhKa`DjmW_5suRY)EkdF%E$XHJBJ<&JH`+|EyXG`@Z9|!buAxFt7 z<#{iR1LY~playM33ZV&|dejPhSk`8XtAwZ8mwQT6_V(xxeTy`(MRc3rr^dUI(m19hCEp99l^!G|oVbm+;Pyov!XCY8g3LewGO^rue?09jU2I+;RT_sJ=3M+S{36-Xgd6isJkq)h%mN6`}kAphS ztzre|87?)uQ<)m3q?5_mT9;yZkcNF}b_6LC!+JOJMDSD?m5oP}RlBbehHtye(bx_t zY(G<6O3N0hV<0W9ywU8^xKl!Om*L9eR9h9wd-^~nikN+q$x<$=L~Ol#bnnp;D+eM- zWgV|G{I-A`AN5dD{z7t>w0jvYjuX*KJx@ws`gOd)pcY`foTg$pKc=uPR3LqZv-!k$ z}bpJCns>c>?CZ4bNRBq z`=*X-48NYtHb03M(ujpX3kwNFLD5lQliSB6$Ro^G3PRJR6KK%a3eM28Mx$Fa%joU=iTV%g&hJ?Ln?@C^(KEw< zuovjLIz-_j)@jtht9WhX;W~M!(A?0&Rb;S=2YAF|WGXaE2J diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.class deleted file mode 100644 index 523beccc7cf760442907223a12473684fc27b2f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14940 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectConfiguration.class deleted file mode 100644 index ea34ee8c1ecda50a436ea293068722a041091a0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmb7>OHRWu6h*K5OIr$*@);Bfi7^shKmn<=i4>83)D)?+$^D--+iB})mPXFGU z)3oZ1#D)%BZ0j$u-|gzf8p1$ds_e>+8m+XW)tZJU z_!qqJJD7nPc;`nkoZYpFLli6z3n5Hi*1PLZpU(Ltopbj5`rD5`1HgOmMhz+iK2A)~ zi6ja4wdn;iO)NLPNQYeZK4HUM*4Ik$z+Tb8E;mCV`GtNI z)}TsYC8v>0je0k>?;?i4nT%15K1_uSxgoGTxHbFY5`jjj6~87-f@tz3fu(na683!p zZ?*q~9qiK=B$sX?M~Uc0G!v2!y3cirE4qslwQp2ADNy5&hd8DiWHi zkPn68VV7=TF3F-{K1}XWp~iZbQ-(2Y=ODv$;ruKqdy$W4);UX4Xqq@s&BnTve8l8s zGfE?_?A3b#kMopvI6)jf9E*5+(y$J-{+<9{gkGRUr1T>60+l|iAK||dE9Us08#)K$ z7fAN7B90tP%|^edmTyd|XRMTmV&p&;dvMH*U|4ZZgWZw9*;Mwq5m=9x2fc~qx%DFT zNBYT_e+PIuG6&>u*g#+c`sG)K=72U>JO|+=L0@Cs&Jw0Osvl{J=Z5ju<)k35 z=&zL2EX+>LWn;yV1@qQ(gN?cJ#Ck2-Nzv+`u=Cgi@|yTqKz{kJFwG0wgcdy1f(EP- zIM;SJIF<)kP+w1@ZEiNRvp`^VpaUkiCK+Y&vTAokLSQf`ug`-GngIyC{dcC+|&-rYLR z8=wSQ>)28@eaVu9CpCD9z_oHh7J>Wn=5!Z3(Fc~J2Cp9IS5JLuZHOenhV>?Pk1%xB zuk*xyq!SAikPCa~6E@;&1aOXnnEz;196!3qDog zVZ1IO25|IQyteZDCY*yu@Co2icx;9to2g)U+`;hn5e(;N7%G1-Jn3Ngz`;P^X>c<< z<6ziwFnkNo9^u8BgW7_`HPwyaGLVJ;z-99lRw{=Kufz diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectDockerfile.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectDockerfile.class deleted file mode 100644 index 3d4410a8a7b57dd7c8e9825a4b480c75641a97f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9223 zcmeHMTXPge6h0lm*({(T5)2?Z0%GE27Zh&2vKq{llMMeFFe* z!Kwy*1TOi)DB6@e#apyRi`*^xf#CK%UUWSsXyA&XVTFFcMA3FlW)-i}kz+kmQRzqG+V~oIl zMDzpd1Pjy(Sq}OMJdP3s#TCh}=viTdJARQs|J=+>eQ~~4p3A{L917PB&dCohn4Uo% zbCrckwLDp#XcIj~VE38Rr_T_`o9p5t@kIGjX}(%toGLAprxz@ad}OvSn!Xs%64)g|hk!q_d2cs1PmNZ$N9iZWZ4-63dmIg; z!C?ZAbu?QR!WB6gQwtW0*{>M4iDZYFr-l7=mKu7${jWx+DlB-DatMV z$Tg_7Kn0iM_GCk`yc$U}*0a)UO)8jKc3NDxj?J84R=6#WPB1pQkb{$C;JFN%tv8u& zGQ*Nkx<`!_+F<%|?iSi%R#*$OLOaX~QJ5XqO_%w)w1!Osqp1go!|r+*R7o84qk;_H zf;2ojZ5nF6U&_O6&lQ2*Ay?Sxf69keOKo3CGkPy%VZg0Sc>hJh?M{9QMd*Jojcy-O zri9#Iu|10$Jkb3Ri$7KitjQuY@DQNK1$|^x=e`~~CR@gIY!>t>JQ~Qn6fLt>b?&s> z6{b^6T+METwfd1wlI^z1&Tvh!U#wGKL6z^XSQcwgt0WqsEIsAB2J@n_oux+ivfBrZ zR-vuU(bdbQG67~HdPult+s40vGKANZW!_Lw z#y;3;pGMb`-F*p@C+cg0qPRR>-M%qk9 zdr)-sPsq7r3d+QIM~Jf3zgVN*udu@Pj)r-R|hCUP6Y~C0X=OVZ18YJg zx&|oFK~;!o&_DwxVpju>IbNO~G+05?cKMeESlsq^1*rxuz9_}%U4z>QmZ(@7;6ZF} zB2+X8aU$XP8rSv1kK0a60@iokcX8^Z^52=s95!i!Y0ve9`Acy08V!Ri} z`xE0wVGssz3^;!vF+Yg&2c!96_!x%Z5F$Q-RL>)qKKz~k8iwB+Jn{uR`EA5U$FJlH z@B+#rIRlQKg5&LVXK~$boQv0;P^{Y%t=ku2M^E0^v&~!WnoufzXlR6$Qc%N`zP8waf@VDG^@pL5AOy2ydilRJEJm zl}K;GxvaY(ni63Q&LVA5}~9(IH5!shlvD2$43=@L5fO*GF(z3 zC^ShfC=n*%a%O}XB|-(RBoOwj$A?OWn@WVMP)#6o^q@j$DG{b%Iy1tjN`x7h&5ZE5 z65(B#OCWSSN@dOOlnAx#5k`JgBGh4CDT7LrKPwOjEWot{g3PLMwo~om7bU{=9uR(2 zAmre^bxq2g-;v>cMP&UEAxLfSf)DW92Oq*mQfgech(8qnx{Kps*b7Tw!ZI}B7Fghb J2Lb|U{RO+(xs?C_ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectorConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectorConfiguration.class deleted file mode 100644 index fc8796431462d3ef53319d4e685e97949742e18a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmb7B%T5A85Uk;~fT)O%177rO;(P#Tf-sv9mPc4jxRG%kHlxcd*@uaKng>6?k1{rU zFp&@wFVkJq)zw`ypI`4E0B&$*A;&O?Bag47HvCDxNUlR3Cy`#gX&$asB$F`WUXaF# ziufvgQ~@8z<+JRD#wd@9lq|KM5>bc7LV-d2SFrOy6Q!5@l45As zGo!TV4CR^{t~POp*lzi%8>W$`Y#q=d7k|9X^=3N@b%w&mf`tY{o+ep1VW@Af&QKfb xI3^Rb*R_gq31ZW)<do|RbxTd_X4-Zvz44NsHe1|M9n(r{M%#9{m2Q|d zZltfP>zk@{w`E%NPQd7EfXJ*-AFAf$T|kE8StVao3R0m`t=ue13=^`)#Za5|beY&R z>vIgpvS!nE)TXnl8f~7!7&Y8qTwSyq;o za)qT7M23f=zcEY=Y3%E-N~JP&m%Uiz=XaJ z2dOB? ziP!mE5*)LoYk_de`y$val&Qd3dn6xW40-DDUv@K3Xb>Gcz598b4T&0!|%hsYXZf+JyeO+C%bnO{YQ=4vAYh3IM=s@%T&q{$yC78_vP5r=1JFfRV_Yf~awH@7v zGyMNhu@^w&NbZ?t**m>NbSFBdsEW?L79Stmk4oOAJ%+cZbFHl#lu%<-_u~)`IPFW% zOEfLp_pUJx7~03iXwt?tMk5i!L`t-|-Po)C?oo}V5y3oReAy!!E5lMi|GqwgXE-A6 zO4%z&#Q=IbouXBl_SrG|CEED6EsaiRFSd1yyGI8*rb*(6`Cr0Gw0~t`L|R{caPZq*{H#t4YMW&hv?}UaosW--Z{-p+M-8t)jwg= zscM~mxen}};~Khc(|O%X?xJttgljO-Z1lNu=WIT7Q2q`>)@>(7C4T*r`5Zco#^(A2 zoh2G*0-OXYWv*E~Ztw-}+%c`qqG{;by`2p;jv`i$A`dDcoSEKU&u|M1CuA~Hq1{;H zR>k!wx1w!os<9e)SnzVx+0dzU^W3h>8htK6^%KGM&8$TQn}2REpm@r=FP(%Pd`dRW z&30?|AUo7w?sL#7ypJ8S5>#joQpxt}PdL>kNn44Q>wZ-7ocJJ>ge!mHx$lc3$x;aw zj_cg%rh+0>8r>kwkeZ&6-Cq=r&IUi{#JKtP9*Diyd6S8~L!X2vdQ+B0n zI?;7L{}ow^u1gI64uyu_qOIAG%$-ZYVpxo4mL$~qv{p@{-QYxPZ2DGreLUFtJumy; zJ&q@66uy`@+jQJuc(^;1(0fmJvg7+%y1Lfab&V#>_IEn3X}W?CnWZZhA7zf%2ES7H zKr*8w*l3aAJIwpGTnwjZtbMP@O==Pch8j4-nmw`MWRypCxzdE)D^o_y0G--bev;(ZhvaFJFNNf% zNWL7BXGwlzNPZK^Zwbjyll-=j{C1Mx5t5(9DCS89J+B1MtHJZR;Q3Buyzke%Cy))^ zFL=)pNLci2yo6}r^$bRNAg8X;4}CfzJM>` dEBG3|fp6hE_%6PWAL7UODSn1u;8*y~e*oF_P6_}3 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaListenerCustomAuthConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaListenerCustomAuthConfiguration.class deleted file mode 100644 index 7440944757686ee5f3346a2daddc057c8d881c1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400 zcmb7AyH3ME5S$CaCLusXNk>V;eLw&yB(@aAJQSy(Lx;JT1N$zz2NHZ51s{-)Lag0E z1qd?uu`#deq@ zlw+(G{yX8QD%Z>^?YLfGEZ2^&irjN@thCMY+_ECGY);9NCwNaf>TDsqyhNZg^4`0$yjF+~w&hl57YYR0 z9|$SzBLYL|#RFg0FmhR*&W^7WXr04olh8+?@4#SQYo$Bj3~8@Emzo>p?eHRXm0uNJ zO#)igYSZJsnWCxALWR>JcRi-jsLI@JR_1h6s7zhq%)Y{zy26>7!lSgPxS>*6>ND$B zs6`HcTSXb898@wB?pr2wFLOLK)tU9Ho^XYwCcv#lwNl09@geLgT0?$ULWoRBxMmU02l*!P`y%i$tJso^*E2>EOn}B&Heasn(Sv}Oi z?p8THX6or`hi>Elsie|HA(@vxDeq5tja&R%_vlo=zpq~kdf{w0bip|SgE2`f%vpVl z=;u=4Z*pB=n1%=pEGn0I>r9KVU;o%@E5Z=y5@tiG9Osw}2(+ZfH#*=Vf%ivew*AER z$Nta>^a``0d0v$F%8Z)lkzOATD`O*HlEUOxSqZC-p-7Ac)iCLRQ379&4z!WN>yiG8 zmw>>?p#Xo8Xr?@D$p)p5aEFuJ0}0usu4V)Ss9i90_#R; zp9(A_wOiRu!fo8mNI8X72Z8RqFb3g3Bs#b i!i^>fJeF{?34#|xXn|XJLKBdNaclu5@z;uHbm9l|SoF&P diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.class deleted file mode 100644 index 23c2e8a8ef2c8685d02f6c3e810c28a33e894e4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11895 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 CWREof diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Connectors.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Connectors.class deleted file mode 100644 index 175aa48e0825fe0aedace907c88239954d276c2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9872 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerConsumerConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerConsumerConfiguration.class deleted file mode 100644 index baf5c183894b1c6472113292985d06a79b67f9af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 540 zcmb7>%}&BV6ot?5S3p$6p9QYmYT`TqYJ$)v#1;sJgdG`cX-3)(nYJeSXfAvJAIf;? zLKDJ5H*@FA-22^oWa`~rMy57ubpvh3$m@&{|C{j-Y zCk)MP6ATSUCJEV@zOMZQ7ocqV$s*b)qe99cRX~+=ZA;g&_jBLKv-b1#0H+kI#5lwe Gj=urXXq9&W diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerProducerConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerProducerConfiguration.class deleted file mode 100644 index c82f0b9fb1bc91081c1d0b221498aa23c406a4e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 540 zcmb7>%}&BV6ot?5S433Ap9QYmYT`TqYJ$)v#1;sJgdG{nKt@W3Oj{FuG#5UA4`sY` zVIpCno4Ipl?)~mPGoN4Y9{}!fZXw4oj!nQu9bPDU~Q4Stu~r|3$Z+sJ94`UnqvU(;q%` zI~}_>9Sm)!JF$I+lIyBCX)^5jY7vPfHIku`9p1W`l~6dWbWMWnvuR G7$@JpjFo2q diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaPool.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaPool.class deleted file mode 100644 index 93b027b3059989bceaa095081bc0e348b32dc531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9781 zcmeHN-FDkV5FUjzvfVUkQ(9UmAX0wp05(4b+Bz*HZrY}G5)-?DmY<@?8)q9y>#k&% z@(Mfvmt4Xda1NXU_q+j5zy)u>1&7&{?8vd`O2HTWw{*|!nkC9gp3kZC1ud~Q;ik`c$+A11Pk6~;O=6dBnp-<&jWJt? zaSbk|Wnb7teADt*1egX>m9>@H+UnA3<8I@2ZApWfs+7Yv-BziNlDMt121hE)^?cLy zH%z-jGLY5a(2kHpgG?JmSv4J^!6a=icph!J4sm^fw2EUaNBR&+_fR9Vh1A(d@pwvJ$?-{DApLiEj7YZ1coWu!Uwz~nAUi4r!cPf<<{CaP8H z34r7BWxm?~C|REIiPN@CpVSEVkPxNaV0OnL72Bi^^3PP)iN`wJB8`v|v8MW5tcjv% za5&O|Q&g?7W`z7y|105(ob3=^C%j87RORH*r*+ox@xw6BvfJV~FQ|TxXW6Abs^g=@ z5H2+AHzI>i%u^)0tiiW=RK;ShMQv(|*(q10{e%y(K*E&D!;4;Bdw>J1lP$uDYmxHs zVph|dUVYo-q`BmFDQD6~a51~INqD)ip}}|sh0)=84W@T3aEWuqGw`BzEPuKO0i$*Tn*d|7kShg6(Xq(m!8k#XnSuxyF#om@GhFhvAx74iB zWW+OE<{OUbTib?@IOOv-vHU0ws#_ErwJ5|Zs!;=ZsMBWLH;{bG+~m|cZ&;=)hT0@X zPoce(p|}T>2eTBK{D0g+E#8t)dmytp~bWyMi9-v?98 z(>?@EH-Ji9xea<7ymt{%&hFqHYqaG5lcPHA(JmLN5+oE3)+rKl^-i;dlahAc)6ysM zf}?gmqsB|%O1dVeCSKr0%sZO+G||kZb+c+8q^6L`G{qs8z}cw=%E4L4Pl5pj%o^o~ z6FVZ;GF`>&(Q3!pB)lPJU!=U4W!f9zYJ{ER{x-$jQ#o~}M;ek$EMdlPi!-Ofn;QI* zG#Rybb;|uz;ZRm;ggL0cp=AbM*CxJ6kf9oM)Cyx5^>*Alt%~83ZODVz63?!|Wj%;3 zQw6UFv1LE+lQIZNNuD+aNlP!!tAp4wEK>YqV@s@6i2@39@xmSy?&k9GRiVOg^pJtK zH25lkr%M!ujo8Cs7(=~lmN&#ASz>td^r|gU97=j#HZ&AVF`9Ic$-fh9Eo59tA|){&A_4t zl>{=XB3qP8$cLyJ%;%R2`<5vKS2ehrK%xX8I~Inmpd9N3@fB7wQ8qNK8yeKqV+2gQ zb@N9DWms>gUQkZf;IVw+j;OkO;-KctwnahsWQ$Bl=BX*Sp*2_yfuVoL5DA%`rR z>VUV8EXo_y>UH=KEBHfxMhDbO4@c7BV>C<&qr<0oc*)nE$U1z6Meu>HKw%v=aV12S zO9wmyjtYk8ZxM7rE1DXNUUk^UvVJ6Uq{BU&;AqBD2l1nc!FW#x7YEqujCE+^65)kT z2V53C+<`jaF9(k97Py0B5(inK_|plu)xi3X2hRbr;*Ug*z!^9M6WG$RH3k`Y9CFwO zI0}bh5})HpGbNwX*oTuT>1MG1IMVjoC$N1Io{)5>!slstQnsH8+h@Y()8X?Ocox4O z!9PRFGmCHMP^t_*b3ee@+cPhG2QU4EtudIx|3XSYXF#** zF?_$rXsW?wco+GCRd`QoERe*^1d=ZdBWYu?NENseE6Y+0!m(I{Yj8alVL1ljOf14p zs74STt;N|`gq0KsbFm1kuojVFcTM8v;an_2EwU!>CtQ;&u}JItKw61G8iP7o#27T7 ggU?yqxwqg0xD6k{CvX=`uz)}dDC~d(4DN&XC&r6Q9RL6T diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaSpecChecker.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaSpecChecker.class deleted file mode 100644 index fc70e8529f7616ec1e1b7ac64bf8d3af6d5db4f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9398 zcmeHNOII946ut$7c?1JN!Nm9|2uAQR<0J6_h=CCj!VKX6LCwZf^b|vf?yfo2H5_s0 z&aE!>ANU7yj-I3Y{DEv-xK+2VJ>KeW<`Ft{pK)jiC!6l6p4(sDy05zTRzLXn=U)Nf zV^~f>7lG@pH1akxo%}tv%krkkyGok&*JfT+xnxSnykXT`#bw?WWp3q{*wzkPt8$~T z&5a!{Q_w?Tz#Lb+kH3JE zv7!(=wQ8Fn`-_~|Akb4lDW{;HK!0Ot^HK_#hVx_~bH|a~71k~AbmpVdGn<-3h@Lg_bc=yWu(yBKn~^=PH|7Q%u#|I~Ww)5WV{WF|e`3<~)&VEa@Fd`}~1j zquDv)1*w>JbGT-nN=feuQTE$GDIJCTHDOk`TEndfQ>D4R6(Ou;X7jdvyTqzbyze&2 z2DfS@g=KNsfsogPd!#b&DAUJd=ZP*M!6n8Dz^!&t;)<1-VnH(1wrBcNXERUt6R%p1 z*iTQIO~f*s1etEN(GKq)5$njpIe4}Y&cbs9hQ<%}L3A^rzlep@a?Rf4a-Cs+KsQW; z!K@7?O+5}C_NZ;sB{0`s3#6$Rgw2(1S;M|eX8i6%QE&eEB(r8#989JpPCvZ=e7aaK z1*T@E((p2YKVq~tI+#y%5GrPYMBozUu*Qy86|Qn!)_Tnwl*E=<(L(b@rZqS0|85o2 z#6}t}6Y^)Wf{N*My7?9vPC7-@x6uttUivyG@CGwG*3^; zf9uhAm2D{uxj{u!*Vu9E*l;%3hbVRm8;G*wvt=cPynxoS2HX&zDhwdW8 z5Y=$0i%FloJyJ8J;XOjWNmfj;a)(xXeT3^%SLqSB;#uqRz-3Pgk4b6*5fHf6@cMnj2qLzhHDgs##&qbe5Od7s?!(}3 zIO>8Sy!Ij`Aj&Xa^;<{<&%*`016)MBF1Uohy5L3FN9w|{kMvRq(qt&oD?sZ=BOyqm zAxNKvB8^2Ly&8h#h9bSz2GX~oNaGPm6CphP7>e{p1k#%!NI!)lD$Fo*tF Q!f_vZSOMnY1}wtTf9y8iv;Y7A diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaUpgradeException.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaUpgradeException.class deleted file mode 100644 index 929bb5c1f1807fcfde85f1befe948c14a8bf3bf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 855 zcmb_a!EO^V5PeQVHdz8~QwpUg(-T~FFB}jpTu^|D01{0radfaafL>$W;GKsxoM6A~YG+>JGUuFg+1g@4ZD z&Tyi5rerQ0fl47y#aQtjZIcC&#Bl25Qq3E{JXkJxI4@P)nalTg zP>eS2ba4wUQg)z?`Yal|e|d{EPRt*epS zH~OYlmE5s!q%~fX%}jW!$#+gp&LiAs*!q)55w?D_+*}og?tAS$*=tBzc{~Ec3fUc$ zStSR>h^nXb+MpbNL;G_t{)+AuRSn#wSYbfeRf^sE9%BvbRIQ*#v4IWTqYONx)1rD4 G4}Jokkpj#B diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion$Lookup.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion$Lookup.class deleted file mode 100644 index d1659d2cc55fa2dd1a4243f706dcd341373b02de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8953 zcmeHMTX$1M6y8%ybD>Jq3VkP)$G& zft<%HS(}}6|3P1##y!(@&KF&G zwNXz%FM)$-dsQ+M)oTgP3Ewu~uye(|Rq~^s;p7mghQ! zn&WbIn@i6TCVENu5F5fZs39KLSvr+N&!n89M@9&i7_BlMA%wR=goJ+!MFK81F)u=VeYYm$@BJQ-ilQS|dB1I9J#1<@?9>$DNylAI-9tkh8WyYCPiDEk* zP0zOZ=ZP%?y3NFjTQ!==#K@?z%rTbA5G{|KG2NEfU|dB$Jjs$Aw@uH(9L1OO)${}I z4nvk2jxcQ&_q4ZMZVmE3eJ3&aw7 zCFz^Pdybpcs0+Q|tWnFXmM~Xq@XF3!J+X|lYlUP|o8wHDNFoxfn5NjZOvF-r7n3kU z#frwn=~TfHtftM?pM5MAnL8&G(=74C(r^q;_roxpAuv1=F2l*{%z>imu-S&a#Q40t zYGpCdtx#)`a#OaOoxNhk#Ijhvt14TwK8XdhGb2Sm-x=>HajB-%>&XU*-BjSod}e4*6mh{_XtcyY7r|l!*aCOsLOg8s|FR@fzB>GUkT){ z%mkj06aFua;U|!wi&!a-p;}aqi_3(Rm~#0P-Xf}geN0QMui)5bV_KE5K5oj=GJ$KF zd12S|{UF>=ARVOD$X6vcm`1BG`o#EXxHAc8j-R60enDv+GN9_`>MsU?OR*TxYzyBI zRH{VJ0)HPZwKPEk>O$3EYhK zgVqF1iqcl*L+G+f@uy6A=?$F9CGJ+hU8{{u#d}CySRzTXL3p;->2fI14xt zA2{&=2=+i9wi4Ltfg}t<8untlU$ysPdp{h&--B?lt$zU9gB|Umj`pDq?IFY*hQqjq zk9-74OUQ?u?OXkFfY=-GbVZ}v-x@@8G<=X>x0O7< zzO8gj|D#2ifX_lYT@Q3xN7U)`pB8ZvJ`W-00>pLRG>BwCi}*$SU6NB;gnSn|jcF05 zwxQEy4FbRoxEa@WB&R_jQ0QV;b6Uh(+t}58Ey8pcI<0CEi!g)!GK*(h#=klI4#%e3 tVUHoM2CWxLIKKzVFfV-t@dzxy9Z10vw)-)*eg*g7YxowvgNl+|_#e57cmn_c diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion$UnsupportedKafkaVersionException.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion$UnsupportedKafkaVersionException.class deleted file mode 100644 index d83d2ab123f1c61adead5f3afff8d13efc4b0c35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5175 zcmeHLS#J|D5FUrpG)tie_iYdl@REJui2_np6%j~VR7xd~5OQ{>iDB1X*-knB7!pYE z&W}Qjvw@~uYe9>+9^#GH-;QTKd&c8=_x{xz0JsKc>ri9x(3&L9g;eolu_4D@- zsBXN{d5no;Fn(1k>8>+4e6hVXdY5Ka-MLHa48|5{vN|*vOl^%X8l%kw>|-+z?kR&- zXPcPvMCXOfgrANVMt3sI?G+w1)_TZOOfq2zREXq>=psKab#rK7^P_>yp@GeTf#-Ru z(Q>67&xK2R+>so7R*>GKa)`F3r>*JLYgS7w^^v(J%d5;2q5K>jY!QsPGAk@ntsgq-IVPEdXBEAQ@&ZAKNm0Y4MVZihiJd$_~;=-ah3S6 zo+Uq?OKa(LDRHHmWx(BGk*j^>WR9V`C5W&c+WI>r=2xoxf3EMkeNf;G;xG(^RdFat z%(AA0YM3E%y-~X4vTo&+p>6XUpB=fL(NEPJ7i#3AfwSk7mU@KXw%?&V&sr~R&Ex%< z6E%J-W&TN{gH|92^iR^aLg$>3Y1M(=Qkx=^=_=)FeUof=q0jCZqd7wm?|(PQC$$R( z{WZ5D!3tc8zniW#HGiZsm~HDsWb496-ygmlb3JJpJZkT1EoqKHbaxQoZb+}n%xJPdD8o=WsihLF zEZvvr!gf#)?@~ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersion.class deleted file mode 100644 index 4798ceb5fcb46aaad935865c086e92f63e42e688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8164 zcmeHMNpl-T6n?G5l1A|sXD5VA778nX6qc|=#$cS7D3R^p4dN=G+M~AA@yxW+Gh>qc z3w{AVgDR*ZcTTx+ht^oDW6WYMtx~tS z5-xLJh%LsDsTPsOohxjUdL}MO)(ITo&a&5N2Uxqn$WVhyhjnfO zJLe}WON>^TELG-dqm-`3&YTjn*}=a#^aU3^XT%5pG9rw8BZ{#i7N47`F$Z7ce!ltO0VRkH8Ys*O??<~FP9 zhOipkq)I9}8o-9hEa$SG(*nus2DNSB>KjaN&2WWIb@yI_H$J_jq#9pa09b-aWRP`{pOy>1X zDJsR~33zQ7PJ>P$ zJ;iPAP7^pX+3V){HT16vx7mVcZ7{h)(RoyC6$UlesO0K@*m);ndN1JP^{lV=&Qq+N z47Xjjx4FZSml@^CzNcew9jRP*ggq-U1Ph75@%*FIH>sqkS|+=ujr!AWN|lD(dpK`s zo0=ZW!UZz=U4pQpv|D9{NhQXf1~s-Yz36ATC^$iWD>U<4A>}~_|S|<)Bh=R(R1r_xQ@u-2daZ4p96$v8@Q3(=Z!?gj(j-_Q-qxB z&$wTUOd^Y9N2Ta%WF+xXW>%?5dzKx=>q}d&hnrIze zm9*e#qLjyHg50uyM402Mh<32EYUo#U2z=Y&r{TOx`!YKAR~?XJp#jJ+h%fBo%b0&F;oc54)SDizJhNn zUIS$p{K&u}fo}#vTx~zTbV|5&wIQI#kz`;AmDLt}23AnVc!AFV79G>Uy)Oe_cRfKh zqwVl~Q1Vr^aR<%-&cs)*EKI-n3g9c+Tj%WvQ zGz}?4It)kgcM6WdacnQ(SPI+RFL2`4#L1uF)B}I?41TAP4}dq}tltCp?=+l4>hs~) z>)0xc_Yp(GHo(Y7U<~;f!#-XP5#K^;0&hd11FhJBrq&J6F7~342a#w)h=y-fI8*V{ zMtC;@;b9~~W)}#*M5UKO+%xyFmCW65#+!FiMh_A|&~DB*Mrp5dMio z7)`zld>2+0`lxk%2p{cWU2S`hu&z{;t!nTwTn=T@?J=cZnWQFse$*-&zFbGon~s>5 zZ_Oj{8O-d!ecQ65xW5=Fi_c+p2ekgOxD>6c(_(iR~@yAIDhsr5}fuVHG{~tN#Epz{LXq diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersionChange.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/KafkaVersionChange.class deleted file mode 100644 index cd3bfd67717b5d67c617462cbbeb69d0c1a866a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1796 zcmcgsTTc@~6#k}`wk*{`1yQ`Mcq=}1W8#x2iJ(Mcxdf2J$La3S4(!e}v(rZWU&cfe zefLMHXLnnWlthyf9?s63**TZ*oNvz0Uthlic!?)P^TJKY|o>Fw)4YY{e1P689Z@ZTKh>sm2<==jYmGy-9^#pkR z-(D{q{$@`YBLi^`^>$FfbQxvLFwE4>rck9JmDuP;O<{I9u_Ad^+UMaOH!{)thk4tU zF~jSTn4S#|dZd%9+8-35s}p>U2<`^16&;8h5+&JPCRsyN#z{xI{yK3{{c>?W!pD*Am84-RZ9r z>6#;pGA<*BEA;mnStnM`H&i}Ur@r9o57KhDM&AP61j#IY%jw?1b=)9rj$~$x0)m18 zB@%~Zf`od8Tjbz2?Gp!gXdMJf++~68o)Kv3j6iwZBbyxNai3P8Mp7XC0Ulw2_Acd+ N!OlQukTbw3+&_#>5?BBL diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ListenersUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ListenersUtils.class deleted file mode 100644 index 4d3ad9ccdc36069c6e94f007478dfcd06410eb8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12504 zcmeHNOK=-W8U9-dt4ExNorLv1vY9peu(L#hY7hO95_;(C~j17yQ8W)o%dc8TfG=VgzPgVP>k7+nJkmhi15waXrDScX-CBF+n{?WK65>dQ4=h zPK8;S0>_5UgnP~7mK%q|1Wq)d7PU7s%jKKQ^awmQm(5+ho?W@Jx}IBJEM`mjxx)N< zv5?I#trwS9O6yD6#d!i_g*J2*`P!S)1diq$+x4jJtx>Da5|AWt#4~H>O^Y+za|ujn ziI)niZPE!CA#hAVc@_en)B@*UD9x`dWeY0$IDrv~X17sun_2|!o8dP1W(gdcoLVDr zIEU7V!zlvC+bYZp;fMshn~bervjuY*$;dLZ5Kz=Tn8m}}UMXH=em$st7R z!6%3QajIHIdt;`(q1vHg3FAehks3@n$FeZlI>OZqOeOb5$i1N&UG*I*IK|R+Z|Qg7 zsy#?n2ch_u^Jvd3b8k+ydn%Pg2;qGjGDJ<@AILthtoBE#11|fpHa#%%fsyxm|MSj{ zu@szy@ew!y4-hy#*?o#8kEo6paO1pGua=o8$)&qIZgWg(tu>eO&CbK#7RR%(%Z0ag z5{L(Pr?#jo%ck7_UgzFcV;@Q&Ia!ds(^EI_|5d(eQ?D*inn(TqnS#!h)3Z1}0q-Gj zJHk;~gkr5@qS?PG8$ALixlW%4CiN0ad7mWkY6N))7be-UzKXctCotZrfxlyy=meZ2 z@Y=qM8h&Je@oKe>mgjcm0y&6~=|YF{^4s*3A5#RL?-NC#*wDC3K!%Vr5lpiuQMX6u z2VEBI9s9}NJ7)r;-1bk#r4btU0eIftn&>Ux%=Yn(@5COCxJXFs9qWi-ABfX9m>P|| zddpsAVuzc|O~8i;{PX|JMEzp#m~iSIQv&a_<^1&snTj zDD%=?Dx-SXo9|TGuhlvKVy~?>Ugc4%F|9qm!;0x(W*6x+t*;Dr=*WcCiOf%1xE50&xy?G_akH;0#Xc!-Y6B^fu; z1bA(z`8ww~9^PxvT5~4)BWE;Av5>`rPUj+lh5kB6*_RVY_Y!(VPM~GcjEZnAi%iT3 zXPb!*EuYb7nUAa{){b(^c&%VnvCikQ&}=e+!E~(LkfjZp2nndXin>4GR#37; z9<fr+0VvQ{hy*Vq6kwDU+2KrHu<1oHb`ch)fk0X$^JB_4+>39UR>~a(a#W8gy`e zB!n^=#bsFn*Fxd(|H<0NmOx<9Ccp*gH-gyfz9jV3d;5!H0V6|QWlmy+_;AYXmd&pe^ znNZ5}&1VB00QA>*tzNdcyS3zaD~wilvz3ahMN$vk4TVgAImfXWwdDlhwFO$`)^1CJ z$xu+fVc`YXx z^%!c@kvwtjk9WGBkQZwrXHgeLJmUIGoF*gM5hyn1Uf6amq^S= zi`;c_!6$>rg+~EN;M=D|Fb?m6`>++qRtyr@PATmp*gmSXkHPzK>w&gk#VaE?lX#> zBBGtBf_K4-%-2zH^#SyJNx|(zkK5QQ3hvebxOQDm!fn`9^lRr&O@4@}_4E#WHZtxH zikzQQ{1G*7|E%C&g3kwW|AoMxJ@ZoRZvj3AU&IO#gD=6G_;(zRz?b1=_!@izUWM1; N4fr;E7rqZa{4c=A^-ur+ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ListenersValidator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ListenersValidator.class deleted file mode 100644 index 8cc13cda3e4a1748277cf795d9097aa58827754d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11879 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ModelUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ModelUtils.class deleted file mode 100644 index 5df0744af2fb4926ee4e210e3ee7df782ee414c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10244 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 RQ<(T1U*ao#gKyEq>OWqqXes~z diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NoImageException.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NoImageException.class deleted file mode 100644 index e36c694a636a3827bbfd85ab7802206730d8e2ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmbtSO>Yx15PeQVHdz8Kf$()QJ<-eh!ifSxpdu=Ta%iZ;(Q!tJ%dWk$ovP)JA%O&U zeiSg9h6XsmfrDo}RH_5NU+Ed`of@i>^)5qOU~74~)NZC;PmakXfzBiAY9x}L_ z?d}{2w4XCxhMvIY`g|`0AG)|K@coSo6n%L@Q)zrv+fp~r$vXH+NmYC(^WJz)a!RJu zfs1Nw-f?4c+xlX~q4>$6SaB$p9Jb}uQ-L;}SY7(8xMESX2`VW6kUZ1|x5Dd8C7F z;#IPp<~9mE8~yK}?h53Gei014u+3}3KR1THQ?G! dw*BQk#}=+}w1ENJ7Ovw4d*BYQ4#z{>`T;?x;s5{u diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NoSuchResourceException.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NoSuchResourceException.class deleted file mode 100644 index 4c8b976cd024343699b5605210b492e41eb16fc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 803 zcmb`FO>Yx15Qbl;A)73LmXz`(4yGr#tS_7>^imb56pGY@N*o=>%DU{@E8APO{4peu z;NBmFnB4{fNWg`|&g|Hu8P7BC#n+FY0X)OK1RaJK!7EWpW5tO)mBKg?qBrGxBV47u zjLr*H)FEmwN;lVqICPU*@7%;4_?)SZSzK^Sn_1;)dy^2#k=gO6pDP+@*SKiGEU4|z- z9ZYl0=UNrgQ&J_>JGsz&+qi5wO7?w}Y&lBSjchI6 zX+M<&fnhXuN*2e`nAJZFq+vowQ4TZknd||Dc4H6YcxJDrbWs>Dc(v zke0m4&lB7tnfwkY!JS{kb4i3@_{xMpLYWe$fCpe$Bk6)XYfz9)D0)n%9rEcX^xuxs q4;X%-sDtZdn;cN?I@w|SpJD?yC|bjaYzLdTNglXMUytG~-2Mh#{O{BN diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NodeRef.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/NodeRef.class deleted file mode 100644 index 427e86c1df202abcf3dce03be505b255f1e25cb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1534 zcmcgs>uMA+6#lYq_cCtnc5S`YORTrH!VZEUS`|bT7kZJl7VN+5OzfteNrp^zvA%{6 zBPi&9AHjza&&=#vOA8h${y0faa_-;B`Tq0sR{&3Nw~7+OgVY9oER^*R{ zQ*SRaR5Yn~LI&1hs3pckg|HVG?W~C+Y3Xf?1iRMkW=!R=(#kz$SeQF(uygooYioX! zq5PcuR58ggu^+_?YmKepEMq_3Xe(0_4P?jz6DKMXP8rP;Yr2t)(?{H^XL>vkS{ui^ zlK+->h70cY66w{8v`#{3qbGSNgGgA4C=tP~*p_@&nf4Hk_6Uvk5RG<@#w-twOnDY! zEL_mzj_kkk+bDoT~DP9510P&k5Ioim!<2O@U^h?C+HKAxtcRY z9t=}+^M@OlVP>tbor+~g4^*lso@ZGT<{e7<-qNU~i#1$l_;`$79%=k95GcxZ)3ARf^P4VcBbWhLGx{^^$Ano zh%4bdtre04(FIx?`PsuoTq16UXnKqsf}8<$B9Ev+#Bdo`$iP)PX9lj(K5~?qD;)77 p98DhKsEk?CDd7fg(hkfMRfxZZJ6NDIrx=Q~i=>N`i-hxZe*xcHs#gF2 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PersistentVolumeClaimUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PersistentVolumeClaimUtils.class deleted file mode 100644 index 917d5c76773efb746829c99e4fefe057e15f29f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5954 zcmeHL-EQ1O6h5;}>s=F?658_9LWl5|6uK@@5Mo26CZZyhlR!6(fV)}mB$;;XS&he` zfg2u#dmaG^B)I3Ahu|p?XY6g)>ALkqWR;G-f8+p$2jI-2r-8#=(fRZA9AEy>>ln;g5(1N*jviTdb!=^eK&4VyEhH zdT&8bs^u`O4l8rWw)>7Jh=6ltoBCw4jms1u9aS zC4Ign60FuOe1rd4CQaG8O;?eu>>ISAEV1QX0GA;BR)`E%5magvWz_5qxZkSextcLu zq|Ri!&WP7d-Nj{FMjI!PvV$S(ahcW_t$&|zeUoo-&6B7O@h0+arX#+=aW|N$GoMfp zuW8Np4uqYzAh)17?a+;$>N~>Wc1vC~LdOvRRA#X3-sqwOg3O1iNIzjDk{CS>3C zh%tFpW=E??D@^>>vXXXfC@HJB({Ej~qAi!4Rqu-_c9|9o)u`WEQc7}cGvm(G&g4TA zo}Y%}aFW28`EaC#i`3{?tvnNA8(Yib9@iUoLISg)ikRFSIxu`VWp+eLAPf&r%y$T! zk2J?FP`L>>TergJu**#+95P|&yRaz4PPo4fb;1WbO=lsrjE|GHx?($FCeygqUmh~U z;(^z>hMyeR1v^*&hjWWzWh4-@2``hz&ko-$2kL6>W#YsoxHA=5S}qy426p7!I-wvw z)v|-YxwH_KC@9i&jm7-B(o0(1;d-S{;L`j`DZ9&}11ocknVN8(z~2t}?v$9Lsw&T0 zo2w2=yBhgXVh7{&2+||)QxzkP#pj{1JP03-oG%dpQVk`?eslg4wH$eE>H zLpd$pQD{9=ZNpQ((nt5>ui6Os-TWi@y0CKWLS>!h$D#T0p$Bi_0cerg9=wC6pSFE@ zFi+s*eo^GXMFM9>aAh*|;CsGkCQ& zfVQXbI$c=73owg!EqD=5qtzMw-+;3@(nUnFhy~J16-bwJqz2kF;T3pw=z$$)pB3ZI yRgC+lH10Kcy)K=gkM1d z3Eueweg-kN6G+8E0sSKLf~eq121AC_8zh)%oEB> zjTX@h;i-gcW|Z~h3nj`7$H*!#t7^vKqQOTy`}C$ z9vA}qt}R?|t@xb>i>-SPR&KXeTW!BJ=PwW-Z35foRh$|Yn^h(=z6A{<1ST$vSeUB> zw#?R735?C-!47OAF!cp~L2IQaVTz3Fm00ss$tOIdfr=6#S#BClwCYM8rI)B%?QC!w z@<1|;LJ12Vv2{*oglhDhZS@viNAT!-lILW)DJ+2pAl<5k*%k+=QIt{h zJmGG28A~Nz{}n<$>vEY6L0WnmbA6Yuan0j^4-vL_)8QCUW`06*E)z1$Q}7i-2g6Y~ zvCJiwhti{|Sgag!$p4s!gE4Q%W=W3}lSO7WEU|T~Kb|%hYOu2gRhTBQXV(AHl}kgK zdDouuvDj{BQJ3ou!$wSC+E)RSt4xc0-P;^98zLoe%l}pPP?NxcKy#$Ig1h#MPO%9wUu*(ABz$}47mLL6?I&gN=s8+fvIegdf NyyI{JPQe+de*!0NTEYMT diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodRevision.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodRevision.class deleted file mode 100644 index 03ff5f9dfe28d8c53d97d812833463f101e659c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3499 zcmd^C-EZ7P5T8Ag`0QSr5c)w}5{PRnMNt|Za+3D$8i~GCd%n%x7Tas> z`l7-gg?K{(3B)UZ6k=>&5}UZPQSyR#Ij?tTelzp)eC+-C*Dt>Tz(e@lfChoCR-O|u z5jro~5p#rebgV@1gK%WT6^o^EJb$KRuAD%Qx$iuY<32wUTFB6V1p+Inp3lOGvp;&t zy_mqw!LZ-kecpS~-#+LKdi#4XHuv`ShnquO5?FOlH3n!aoOB5+x%)di+kFDp-9GnZ z=m}r27;U(6GT|zbcpyR%KO*o(yK_KbVGF%6;4*>bQ@CxVq-w%4S-SHqR9s8{h>xi! zgGl%(8jX}3`8?2HQ_CDqIURG)X9|TP=6%N|oNfqd&l#|f8L;OJ*eL@WbS$~1p^Rz3 zVsA=g#Nn?Z3_Xv7yxIw`cH*90jhgu*f=H@3ahZB7Ol*ueJ&vRxf{2G~q=ffX4as># z{}ahx5c$FrG1W87VI(ue_-7vGGR;!7-JwF$Svcm0BE*k&h$pyaGe4pJMB1jinEA;G zN>LUjUpWKL30Y>A#3kI)SW-sg?;~!RE*o)QzgFmoDZwx^Ewe2BU#pg3*Hp30EuU%q zAXmYUDv)c1Ry1FMh{h`2a;GX>7mpc$9RA64^ZQMenk9Ql&Br zV-fJW7OF!^XvCI^f&-2jcBZiN{#K*)FWS9oleO~T;)JRl+Dv+5+S1Evs$NZ6(1JHx zV8SYaYwfdBDH$`%E|&h@EEsV$OzJZkU(#d#!MtAQn+x$&XaW!2b4*j5ahE1MJ|3_V*)qYDeG>bhP$2T zO?Z#MA2m3yPUZsix%vKg?Sa7Md4OqdVOX~b{B$8<)eAhFR76}SX9=w5O6ReXL9Rg% zSj$2zt(1ES^4&IV+*MJWR zTq%~b0Ur~%THMQqq5%#jLm?Lp__T1r&qyH9+7;;x9^%zT!)-uw_?MyqYp@7QxLOAT zn)qDA6B8`_y@YRHpcKKU^((Z#UA^)%to)8|4R{NGm(r6(xQgpmCI#2vI=-231Kyq^ z+((24?qvvTB?$LYgha-KoA6Gl-n%7wUl#OkmFm$Fy{9L7P1t}tIla?J@0RFIPxKn_ XK6=}L58yL=wve+n+=q|AhEM(m99CF+ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodSetUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/PodSetUtils.class deleted file mode 100644 index 37a19b98e945cd96ccb854b882ed1026a37b265a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5328 zcmd5=ZFAd15Z*IsBs*!6hKA4r?Iq>KZi@}2&{DgBCQWII+=&*nH;+!nhY zi+TYk&={U=SP0Ru4wu?SBfZ^vY9v{yzJ`BjK|^>VS|jjAx$>02)CQVvz&x&c2(cLi zGBDu`F`qy20v<}|1@BT@y1sB&B&0|EKz1DNhPP;`*xuu`%Wa1RDC9Hy2e!-Us*u%w zxT*)?s`kTGjl;D{yOM|0lM!`UWbe@karjFg-~o9yPH?xV{V`Wiqvy zr`G6jdf>_bAcA)7uudTCo4WN5J5v6B68VeMi_LqG1myiLvuAfjt{}P7?-| zD^!HE=XLpx@GwU^ID_x3=cq^zq^q=vRiS23iZV|nH33cum5OQpXLv{>Ng0i>5XKT6 zsvHe07LG8f}uC&0&r{XdBXTu%*i&%KiZ4qOe778wyt zGi}6zrQ(Q*v~I2v8OIoHd`d6}Z_dIDoF%YSP90YgQ|jt;GH>A)^04Q2c+h5e;2^MQ zNt-!OSs>JRe{d?=6Cr`y)_*v$sUw&#yKRYlBQRUG(1ChI9j zpC-v~ZBoYBl}~85ComJ|F`*HGa|gLQJm2;iMxZok;&@_TC9piA#hdUxfmb<_nILQG zRG)`I6&bx;wp1w&cFsd;U&x+0pt=d45%?uXFpq^NLpExvd&GjJWZ!zoT#kNU8Rgw; z&2O!4!VLmHACIfK`ra7c5;!BmEw9Z3S9r|Xj#z}7zu9l)&rQHhdE;o))zyTS@z@Br zWiPP#J)uq)3#f2#g%e*m81NO|k*Lrca0l;9us{shK)R*bYrrN>p{fDj5I8;LrU6?x zG_+M3@a@puP!c=DY>N1Yg%S>71rQT&qY7{yPQf(3od*L<94*G9rTBdYW^v>+j$B7+ zg3r?LF!yY6;a6DvGnQMz|I_izDR>Ltl{`wpGQ5q?BAi3qLLc*;80qp5(z_W*7h|MC ztbYM6qCUmH;G+!va)$nml>TM7GSI)8q5pA){(4Hk2A>S{ zKh4m;mZ9HF>0eLjf1aWLMTY)&DgB%9B}Pu=a5(a}GW7NbdIe~pMgeatEqtEE46eW$ Qd=2Yx7w*A*%;AH703RcJ3IG5A diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ProbeUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ProbeUtils.class deleted file mode 100644 index f9de02fdfe74e9e58f3b9457400b3b7cb80707e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4310 zcmd5={c_tx5Z^ON6r0erfl^BNxFikO1uQ;FDY0ouQ+Ew=xm@K@(7U+io2HK$WZ zc>*2*coAk`2L9(k7@nfT>ZCMstifu=6#hu0)9u%9cW?LBe?0!>HvsqyZW>S`un|hz zbeZtXhwOlv!Z$-Dh5MZ_{eVlRd}-QF6e=!F*Y9)3yeIu0-&Mj14VWQtRgYDL))!p9OZf$+}pnb2q)4tmwU|3p0gTP!D3b57o)q>qYBMiZ)#LOC&`HYF-2XSF_Ckb-kZYz6a?TD_K4nxr3V5X~{0Rg* zZr})8C>lnXj2LzgJrmiOlr%}UYK@AJMqZ!q36J;d^bV$K96HVBJfgxo@b@`o=n;42XdYgroIN%-+!y@Fj6q70nri7#d z6#!b378)3k#lyRRVuLt62QE)t|s6eyAj~)kuAB z>x)6ymba2JL149NoooV)(TagN{1$;93;3$xsu4&+`bo@x#{I-Z&=AupnJ^kq^ z$bb)V1U#8c23#R>y3L10!ZFrZ0bLBFOQ!~mQV*9#SU z13n)aOOry2^6rQ*#QSU)XO9q80OwAeg9%)OS(w8&9Eb659>0`vbp>|`J}bXM<(s92 zpW)2!xGKRp{6D96W?>267ZNIX5njSo8P3DYsf5cT5-#LOSkV$nn(rdKn&FErOEfR% z@HI1hufrQ?)tg9P0;(;K^~N$2{*@g5uQL2=a4Dnrm~TCYZ!g35HdJ%@YB_x0X87KL ncXRpP%i;U}3110JjqrWg#OD%5=>zx(K88==Q)u9C88`k0@EcM2 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/Quantities.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/Quantities.class deleted file mode 100644 index 5c5e8bd6e487729fb62e51e1e3934ca2f59c67f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3069 zcmd5;+iuf95S3;Oh3dx*6Ab+EP5Gp)xdJ#_v#rdHCxHS#HgP3b?5P zZc5Mnbyml&1(6iKFf>k3B%~c8k;F%_XitQNMJi&Ngf0F;guLa_21=OzI)lkB72$?@ z#VJE>o$VPM`wEwRc0aI7Gw8kV; zlajZYT-NO*;Gwzq+UHSL=>j(TXUvKdycQbXPV4zo?HqdtVecnFlj~Kb(Wc|-@=xUa z`#L*d!M-Z&g((8F3-w{g=oRT!+EJ$Kc&K`stur(@ftkAUnS8>uNZ0+BWz!Kcfu;KH zTih)IlM&M~Z}33r?g&b2791wXvQ!lBgN*xBNy^)n@4btfGmpOIL;z)Ff;Q?lq|;$ zA*H}4JR!N~tY*P^0$+>b_uqF$0#kik^@T}wspT4LkwCX7T}Bzp9`yn3KX4qDkAU+? zCEDk!B5j1z!|^N|XDZ-so6&kU!5j?{$2euI<1i7!9N@5qLm^=EEn)ASz;y*z*YPdE zyYm68r!&qwsD8p#38wLy#sJ3d$7{701qWaTS2i4kL;Vbwwq=;j$uOH`C?U>*BO`D} zb8t5XxGEfn6I=e5=ISv%nS*;az*%q_&TPRAcS>_`%>mAac{rPkJC}o#1DpjH;9@Rr eAqUspg1ht^Jl_s*CAf@Al;8?@crW9huYL#WWSR*8 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RbacUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RbacUtils.class deleted file mode 100644 index e71fd5cfcc4040222b059bd7a19efb3157621e8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4658 zcmeHLU2oh(6g{&f@vak^Hc$wkorY490yZB7+HR;&t0Ez}ly1^Wm3W!;PLc^;do{LO z$`9a)|5FJhc;`nU?%2+LBTu6|1gS4xkN4g)ckVs+%-Dbb^ZTCwzQ(qL2E+AKhkjqE z*gq7Hg|8An&9v(OqWokawa60fhf$tpQv3a+CnLYp72$(SMX7@YhO>oNB;tMlUiVOj z8N<@HidA-#;ib*3hYSn1$<0BFVRdACN9#m4vCN#`9>iLvN%UCuc$oADDiWDWVm{DG zH7zs^A0}=it_9fp?iC2Z{9fj&up?XEA8@!jul*dWN`yvYuct$w# z=K)1IjzbCXOaeR;o>z}r#-sX!L}#4L_e58#@EQ+AY^Lf;ezc$$mZv346;Ui|WNBG& zC8su+3;A7t5UEgQJk6o`FS}%Oi>s99aZm24n8>(C|Ioe2qio#T<9Dg` z%s*tsMQqqx0*^tutxgijIdSkT;euyR2hwfrP*cbICt(yQifESW@eMd2LjI z=*lRqLA&=PmbxSNq?U15x6Te}Nv=b=E2#t`t2L+0-O5$eGgX@D-|;n>9N$uL?}V~w zRSz>KExaZ&i-PRrg*Mj#or-FdIkqdx?Q&;2;o6+Wv_B`WXA@(UP!~7Fn z@Z+3-WvRu-+cawn^2$N0Xz@trlv~xK4ggzlmug$?{ zgkh@S;3~tixvQGN!Iun9RUik~Xiz2D!HtQp5oM(rR_>}ar9=BJy#}SY2>L8RUq65a zx?98&T^$--rKgO3-9ONLwB|m;%3m~UV3n@M24s7dt}CS#&S8y4ExdwP$?81aH}G14 zbcK+XXj~$_J_qS?fz&Ac-@uzg|F?$zCZf{+?K%G6jQPKd3qyZC^j{qMU!3FrXz1U- gdt}+bCA8^x9m{whA7Bd~;$!&u6rbY@e1+@(0*zn$y8r+H diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RestartReason.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RestartReason.class deleted file mode 100644 index 782aa7569cf1b3f5d9ea4ace03e74c7e51038bbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3448 zcmeHKTXWk)6h2Br9IK%zA*CcOWeGP2icPt^0EKGgb)tzZ8A%QkUNjqd6K|@EM_OkH ze~cNJfp`88ZwzN;WfD)EX@Pd8oym(nd3E;Nv*+$V|NixN0C)&r)?iM9heaN>5+>5t z5j$ork+lk$i{xj~%0@hAGRs?0JT4^9TS+$Ham(X{WV!S>E3&i(^BUYNcg8F|Y`ObK zJdzr$n?`6-F9^2{KXmPOxJ4c68G+?G8hmH}uQR{aVEL5Zqg{8Gwx?Dc`h!}zW7-yV zg78#yhwg% zkEho1=&t3LwyLXTKj@n~XlM1_cW`gdb$n}AQSKO>or$Tfj%DI8ex)<&aecrK*f^F> zCbDF2PDdpk%*ZTSxQEEwjcAP_=@QDV93dU zM={G$XvCt&?2wZUku|H}Y@P;ZvkJ~;8Jrtrknw_~nIs95(U3^w;XjQqCeQO=_%&6? zHdaB`NoerHDzyQgzZkC#Uy$UV>4U;>E`iW+R!(zsAIqo2bD7&kG{6 z^2&)Q3Un}$CnHWKA`{iFh^}mO6-TNnJl_NXcD^}qLnYDo!~!)!oOmhi^3LCFD@W))Xu$(^dvdfm<<7V}HBIA*zE z*!pxG*5U0XxD5n{h#CD>HP>Yu{pXC6eVzwulWOdWezzj27U$(q6dK$(YB!oKP?r ztW@Q;z%e|P+XCnEJQ|+Vprt{rsvKxpMPY~5j02c8!P52Z(`v*MxH?#l% diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RestartReasons.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/RestartReasons.class deleted file mode 100644 index 98bbf8607a00d297f5070179af1309bc64ac3bee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8500 zcmeHM%WoS+82=`u^#k|a0;L6}p@3bA&7-{P)U-((8gN=j(v}8sn5-x9l-(V(GaI$s zkdU|_A;e$838_eM=g1YopTQCF&F;Fkm1%Y>8z)p%6nl3)^PBJe+TZ@U`wIY^gHLlX zL7<@mr{*!?*KV;5Rui(ObRfJhMNM{iz_bi%jvFe?gPJE>+^sEgrCFdCIaAVCIhZ7{ zKicXtf4z2f^%i$Dfm{&(PN2}d(udjNv!)!hXE(xbe~T*ha#cgT;h7V*&|^I z>G#*`4g4dpds_HHHwZjdu3RTDIg32xU=M+Py$zRwKn8i(M@lo-{D3RzZtxa$q}LHH z(?a^R6UbGUd+IDL7M9zbwz%W602g(b^Eq4RbV|r-BDZQ+Zq-C?)ktnrv?aNszSPuX z+G$gbIQ(`8rPYsvqNo~eR1JC6bkvw0;dNx7X|yNQ!le%L%}J}AcKLagpWE~!(Z^4g|6;jU8M`?F6I|pMVW7u90T`3 z77O#}Q4EdBqAIE-WmMnk@M0nHos?DR0ck5Dr$||p@vtmVB`Rm_bZ$p5 zn;u93r%mM>>$lNJk;DT@bq6q9=1`#m*1wD*`_ZONm95!||r-d7y-}x0Yqpb7r#g^ja?y%yxvel-M;I&hjut z;G3AA$l~ycf5nF!Lol$%@~0LXhs)YH;(GYp3s%@=(wg! zLmxh#Tv~_Kc{oSl?+h055Vm|crsrRT%tdhxl+1DWRj*+9zd*?C48qA6gdX*d{sZ)m zXvA%%+UC_sl#S=}aEZY0qgKcEH=W3+mT?3oa2UO{_l_ujirH|Uz#pUIe8+`*%>7F; z3>-cuOka9vVBVmjw^9T?>k~}kqj9Z*b;Kx&lOyxKc~^o_ll%Izz>+9%+IMnr6$|C0 zFv!8jsI91&z(aGe)V;&vDF@f^O`nOAIkawxQgI+@n7PN1zXmjv>D%xcW+V>W;N%#P@HUS?d b+HArC-UF=Q|9*US1wMjBScdDU?@#^(VR~c6 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ServiceAccountUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/ServiceAccountUtils.class deleted file mode 100644 index 1a19026b0dca41eaf70b767c135382b798e9e091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1880 zcmd^A&rcLF6nUo>0+_ut$=M*PNS7`&}=U3t*hUbn(ApdOzCg9t!RWOump> z`d0+TR#x{2jISX<01X0DC)jmsjjh8qGPby@t#C#ii5}%9Nu^?58ckDcx=JMOIc+vN z2ZHtlSIimhlS{6+B3pYZ9Gkw=LggykNBLT%3&U~BFwD_ zb9v!t)>4m5Qe!*0y(hY61!i7e3zt3a_OndF#nhcjp&SH z9ndnZE2~sGn(3bCOO5XJ@e97QO!;ASNH?%*@-K*@Oy_oy(LMzxyG(N4XgjQTIB zKrmLO-oFY^%(_Ck5lma3w6NQvFRaj9i~w(A>1LLTjz9yM9|f<*{U(#Dm%DwYaE8Kf zLLIKRU;=Ism|KZYTBx+8owwLjjBamcNmtko!>%DP6C2Ld9`jg&wSOo;Ik6a~J?cWR)|3<;v|*mNS9YhI9`5 zy@S2)Ucx6n`BSW+v>i{1FgE9afZGki>r|l4VsEkmxMCvH?ZC^iF!0#>q@-X0n18 z%Y)y*@&j1q(X&-rrDv`3U|D_w&sJG}0LwR-p2-a9&2&LFfN)7N$@{&3{od>MI{nMP z-~R{zr{N$YOcdOUwI<0cA8iYP?eafp|oB1^K{HpDAf{^*ume*uXb(#6= z+-8?U?gSc)5!l%UI@DdOF0Nc>c1U2`EO&W0M_|kJ%oPG-^N7^IATZgZJ?HzLufujS zId<9gS>QSAtZCX_tIZu6a?dr}zPIAAR&dHJ8;xtsY%<%SJ`%O5{V`o*<`nlTLfcBB zZAEBX>1sP=Ha!-Yt{0ju8rs*)5c#khZPYT$2Ypb9d{Bwhs}ysM_2I3y=Z7YeuhJEt z+b2z%x{;_AW+n#Ruav^A3Ksp(D7z8R!Qd`3eMp4$R@>n=56z&1`G)cDqC-12=A9X5 z)AWqV1GD2c*(!H2XjkzU{7gGen5C|m3z((RFGyulH;VF@afW5t5ZNm+&I~=1n&Hhh zLn|~DTl_=|i3Qn&yFK|L z=~Visp>;+>mKhnoR#=ae!Y-qkQU;Ylhlz363Ofkwowj;&axASD&C!z<_VyP$trg}s zD2~Pic3YlJoh#Jm(X;q+EWE}80&~`#jP^AG`)r?KXFVT}|Mj*oiNLBvzkZFac#p1G z`S!kMZ4h2HD@xVcj3wlt2F5a9b7|P|(bUc+3Y|@4M!{Q~%jlrPqlBy}98d_Q3o=VB zbX3wqsR7D+zCgDPmZbotP+l{sFqj#EsW{}$^1$}i@%RaYxW9e8@z=Xqc0XpJ;eyK+!&>-eEi<|+9do6INb}U95^S$ z)${_RO@{@6sH!?VL&%p8M0(!+mNof9MQO&vk&5R|a(a6o9zSyDG=j_G7{i+;eltrCBc+el`*G?IO3uBJnU zz~2gXsT5Zg(-rt6-YF;q1IWt8;4>lgoA9YPqa|<*qd@-m7Iq_vC=nkzyhz{+1*he4 zMfS+W4@MCv3rjFM2pk$@g@};jMKrnC(cx7BUn|%;#D%>*N9@WqxY2O}ffJJEv0m>_ z?{p;Vo^zT7?skb~>)xa3-aFCY3;|7a78;x-ut(BCq%;nU0bEy4Hl51?P&UH%Tnf5N8{ zOyX-q14z3QU&muA*af@s$$&lZ2vY6E&n4K`<#ZG|ZNul7(|!r3BVA6VF8%;Kmf{~z z@kWY2D8Vmf@K3^1Dc(%+6Dj_X1piqE|8#-=hb8!LQ@jq(!V%%Y$nKs8rzNCUc!}5*6V~s?kf`fA1U5|lki$b?pW&QQxe>t zIoxapw>8C`mf-$LaV2;iDNFDMe2DJ{VFKQSc{m4eK^@+K1z3c4VHqyNdvNtX8KVKY diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/SharedEnvironmentProvider$EnvVarName.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/SharedEnvironmentProvider$EnvVarName.class deleted file mode 100644 index 0c627d678273c5737152ed43d29085dfef895532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1438 zcmcIk+invv5FLlKNwz61g%(Pon2Lv1Lc2oZ0Z~AeN~%UmlZu3jJ|V~JHZER!WqTva z2k=WsAi+Byg_zAn4dT*Dz{7ex-s3r*;~9Vb_VF_SJcYFq6bN*j#Kb~H?H;otuIawCMkhl1eQWwM7WN*l9WdKui6}vl!2BSf zV){60bx#EM1cKd8XaDv7i`J_{0tb!%LA^;}CTD4nY0Aykcv{)1l+6IirbiP2`&?uI|J0LHMR`%r11Www!#_J7cu1~Nu^?58ckDc zx=JMOF%2r6o}jVdDp!oAjK5*Wg04vujx-L(8iyl|!-2+YG&aIfZ9Gkw=RN8%j(D4* zhLdqnzA(SJFh5>+e$?T4WRe=|DZ-Cf*Gm3~a;9^tuAt+Den1YQXI`qm1J;vNNiIEg z85R~wrcs29V}a3{&XV<^^!KUMeuGL!GaZW~sWIUrgy5WI%1>?!=^oZ){s&Q%>0F^9 z!$j<$(vS%HIYsIXWz?UhBB%_h&jD>4rSJmsEBKmp9cLKOnIN?`F9 zrJPstTmuzqW=U7r4#VOku+T7^DeP96`=iC8?@5PE+BTWxVn^n{)!(-Jpz4sbu5-Cj zWPA#CB|aIJ_f82^>skxDt(bGdmEabE`af%TJmchBbBDm?i4MhLLi#=F9JX=?FBo$w zH-+=N#`&!WK;RO-f5ok3n1X2lw55?Pk8CBkh%2D1Gia;mJ;Yu4zTgwg9xlv%fGc0n zE5J1zrx61fZ4t-nU>?BIAjTA2AE0i)GFpI}_yvd{umZP{nWA4rZx!z1tN<(D0SBGD A`v3p{ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/SharedEnvironmentProvider.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/SharedEnvironmentProvider.class deleted file mode 100644 index bb96b64add0427e8ddb7f81a1d644f22dbcadc7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1446 zcmb_cZBG+H5T1j=wI>3iC@A8Jh%GU9UyW2^LNFmIXwpjJ$L-xx7WZ~9yL*lL1N=)S zn&@|blyUa%u#l=~^g~}}_SuC*PI_jV>QZ zYIBWuRw{RUJju3$4y$MwVHTky;qY+joTJ?-#oBWBriN7H7=Ght@ z>qGP0Mk*VIjQ6=Q_$GQdq-NR!TuitT0czOtDVRpvM{Be42A`n*Y9aUlGhfg<0rU9n zFo4)Ag~u(v1-Od7YlXdt_I0@N!(Kvr8E)d)B-|NE3w+$l}C~T z>EFa~Wv0vkXD(d0aOKLCD-3VfYu8RTUZpXg?IEkI{oYUSOHcAoKm76VTL8EQs}_t9 zm{HO#_>>2QdvuEyxF{$sx&MF{M3YIXg)F#UOKBzxzNj;=P{ohvCR^Ye8y1Wbn27W| z8f+F;YxkI|2^?`&7Z*zv0;ik`b4B2Ck5kP>;E2slCT9qYmls!7E5++h>F!!_eW^+y z>#R|Yvjq69#Z}2~>TLq#4uPX?1HqYE-)=GjIn|InxL@TD@a5!|@LE1o#d@99S7n9y zVvE%YoYg`s(_s5ng>L9&rfHpOdb=%4;6%OE^tekkYkyR(E3|o*2VBn)C`|1zdd7)e z?)`^pe8b1|Z8W{gHv_6$5-lnjYR@|5K(jCya}iMQdx$wYkHNO!6o%?id`nUanStlX z#M&o;WJ-AGt?dfG$-OAPc2kO)$9#3w&Slpd%&s%nqY{Oh)V+^cvoCUyj}x5lBsd=@ zI3FeWqFonE*@4iuPqo{yHR7-@nwZ&M94woBST_04ynH%p+aB&Wh18+Rwo8L>jvBK& zp7enFT$94{a3d8`C4?l0 z2Z^D;nAND+WW8%>{~BQ%T)~q}g15cEcm|wby1QIlTPsx(M044{8D~KEHnzp6^37Uq ze>Z6#q7%Z@7f~h^$5VTtaU0(VfG$;yv4V~SF|PvKAY7IR_`<%ot3-S!7kFoJX8PdmD>*j&X+vY^CMbm|UkwGa!@V2$y=dspR2% z{Nbo>a3oZ&IR{{tkOV3kGAV5yCfVXo4KaGzmyp)!drypo?KYTue|-?mWbdB5XUmwG zzLSAh2z+V4vWe*p6j4Rb*YJus9^owTb*gPMRu|>}lpNCBA`Kf{IC`Rw{9uj?P zY{!}l*Txlc=;2`JBbL+fq|hd<2M0Wx-k;6R0mH(1a(3A#$J1fe#=rbLfqk(mTGC}V zcz95lh?i+diAFaDc*-aTcr_INNL}K1*CgG>wguNvdMAr&!AE#26fZstig+p1v&~sB zkKe{Wr7b8CIM%#$C1RRGE)C7D!3zIm$ zhv*?{?i)Dy*@@F%!}H%o-@bs)Bd7s5>p6Ue+9(At!g(A4k?bzgg)Wj6%Ipg%0~g^X z#13t_gtm-y5nfKP<*Ue+P$mPf?xFWug5LLCJ-kSRX`JN}Vub#^j$ZzN#+ zm=K3iIErX(>%&MsLdYi|{G5m|whx3~5)t0o2g0w32ygEL;kQJDclLqsdjbN1cg+!q zm4Fb|^5t$#zTeI2;ci8JusbK@R07f=_z-nQ;3~}E2(W^GlUO&iFb5yQby$EKumm^3 F`4f7q*MtB7 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/StorageUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/StorageUtils.class deleted file mode 100644 index bc43a170d027a0350f9bdf6ce84fb4ac2ac4fd91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4119 zcmd^CTW=dh6#m8}_1aBIo6YO{G*0x1^EE1JZasv8SEAXm>Vh zD#1H1ydZuBk31lO1W&y1EBGadv-aBSz_eXC7DD1>?b$uwIp3T!^PQRB|NQ9}03V=T zMTKEKi9OdBDsbvA}S0 z2-G6zyB~M&O3yGHTUUWH*BG8?G?BF^t6b{C=%X1qQKWw*vi?q#%x1Lpf+=IcR0{T95ZS;-ma1j14FAJ<*MocZGW*$U=1`A5ZA-mO0)3 zpyj3?Y2_)ylavZig$Rgi>QS}%sH}}9R|!vpp4?LbWp9tZ(0`F?Gi}}CTeMuVFJ#3< zkfnR%c*pZT_?ueG zzR(}W{nVF%*|_h?Xt-hix%>_%bGUIWl*(CUpq<08(g{7GcSWqSasG0_3{=8!t#g#N)n=%X812j0?1T&#EtD)IZ#X#1 zpi4BXQmHIs#Bh4Tb4zKhx(7zm^iMQ8W7TUnZ#j6D;oB0t#+b)SK#5INj=r_pMEE?z zmn8_73Gyg8eYnyxEcwz8|@>yEGAObaJU`H$Qjq z5<{;P!6Rxkt*$hY1rY}q8NT^9BG*c5F2lK@<_aSVt;>_eaG^+?WgG80c$Kj)<~X4e zyQN_H|7bxBtKL9*_lkMv)!9}L>>RH)$ojiz|Nthj9Wy diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.class deleted file mode 100644 index 40832f59c83db44809a0e6b0ee46d145765e2093..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4535 zcmeHK+j84P82;CU$ad2vq-~&3U>iyEUzt#`QN*-Y^RCG0?hDFSmbrOn))zTbVo zO-0~BySdli?d%>l@84VR>=2kYhM+bIaC;2`=QpJrDCVj|W{12C6#`Sbay*2u8^-<@ z&8_>b{e!(u%%co5(Xrzq`{@V0q2V{a@{ zOY(raQc;H~^O!2+!ykF*ge)KQaXs>JJyNeenQNkta6IWNitr=W^@Vwxn#_$vbvaE9 z`Zth$7Zi~GpFqYj2r+vn88jZai)A28p=c0dp8XRx9neXmV7hN>WDEiN_0qTFiSAYzir~!-5u9 z%wmeAePe>`d(tY1Gz7YBv?8+pIFxqi@Cl&8d|EPeCrNyw%sxkX!r{$FCimiwHQw6C zg#Tp#3+7QF=dN3ph*W2GA$S7X2!(A$H8s-iMuS@n`*i307WZs<;&4}COmMXJP9~T> zBq&%bLxN%wsxSwaXW%?65V%|$o!!yYoi(sw?S)R4`yGaZG#c{K#6UA&MC<G!vqpE;8fBmael73| z@l@v+flJJ?&Q>EjbD?HrT5iLL8dxI=FU>hvF_HpptRbWfZxHydfMYWJC**bE?m3=p29sRd z_N9aOgd@?5EB|Z?W7+p}vJ7Z0+?}^Z zMg@VjnlbF}=|E^?_R^k@z8V4tn`L;9!1o3GHcC6eDMNx(tHK1ScH;>MRNFH2O};JS z`ICx?@22r(OM{Q_f_gTX8hnht9IBT}(*Wm3WUdHbdyb^P|eu~qpIh=09oJukMHCP?H9yqP{%^bS!fUW}i->~~6L;nuEn~^)T_g0SFZwGWGj8o+458zXL XFJMGJgxjzTE3gK4VFR{c8+QH#I9`w| diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/UnsupportedVersionException.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/UnsupportedVersionException.class deleted file mode 100644 index c5df2938812c08a5c6014b85850f5feaa5e34e84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801 zcmb_a!EO^V5PeQVHdz8~1Es*p^aPjP3nyB*pdt`yIW&#L(eaKFhh2MRJ5|e%A%O&U zJ_?vkLj#v`;oupMJ$mE!{J#JA{1w1+JWS9McpJRVD`jjxS7$0WE)UV0>Z8eBOf9SpQUECD-d1^fcSDsNJwX14Vs%D(5y_=L&g=aGD zjbJyrx&C87!}{!cr*y@HbXF8w~r$#@B`o<@M|$ z!99VsLJ98wWt&S$1o}rN1h&YCg$j5Cfekh;IEzLLjtN&!`LxA3{etfMLHY^(Z(Ox- jn`6@h?%m|rU+z^gvc>bY&kKOY{!xfHV-jgjpd2=p<1n6 zF*)-mIPxc`B1O3K3-|*ZIZ)gwdLLemt&MjKE|;qCMb2#c>+b39>7JgMU;qB;1pwTG zW)czv@-16a4a!aR3EiYBx73znbK_gCT1{qC$FfyTZ?_y~tA6C)u}@XT%0LP%@k@PpYq(|Y_&FDs6I+TKY>%~Cbdd*Hyoo$AiFnMls$|}svc-$Z%}1=rI>=V z1diPW_ zG8uffXxgl0>6@&sXqM6BI(4{ZDoxv3)tS+{t7OvEb*9vrrc)bY zx9#Ix;NzU<;}NB9v6f<5j$%+pTUQ+9!=5(LxgsBooSYjuIaj@0JXc>IZZs|1QILF% zuG(C?qiEE0MXfSrdqPK)M^uimite#WK zSl-?A?!ojeg`1n!22&^|<@KE$GHJj1$EbI3hAq?Pp~;fcy2Q~|-33bws~NUcwa`QB zF?0pnrdtyH4$}s*x`%WR+FY-@LDE&jMU&t@Z;dx_B7XQ(thTMOe}j<|=S$fSZHz8b zp>c3TN9Nj2(T5rPQvQ=zui@H=39A3m`mZp}X3jnqe>Y%1t9d`PF;0>SiUTC-MME9j z^yaO4mErz`I&syCXka_RN;zDL5`5e zy|+@N(rz#NVc1Wb;&zL`Eh*=CIddg+5rGwHm}H{tFi*ivlK7+d{C}8PLMqmd+7s_& zZ=ab`41cLK*$t3O$$lZ1q9ve8ttWAjd`QSl?=2Fk!0onZ+;*p{Q<5@kaDXXAOW=&3 z9*aiP*_!0G?>++er99KU8w`_W3holnC0r$EJBhP?tCBmXRg@$fNJ6E<(V6fe~8i6bYtzRBfid#o;dXd|- zU1Ve1ZPPdcg8hUr2NX7(jbM$szl4!*+wpt~9us&d69p0->n_#iZM^(=O5k#~6g1fG zth<`E6f8=qAl0O!3Jr7t)p^~w&nz{tzq}UViU?KElLp;jUGSj|o31%!=1}+LgnR8k z;8Mr7k(@Gqk(=UfS3c+~<2~r`Zt|1xHGyO>r6hcVFA>~uNWv<!4*^z z*6=Nbu!@s_3M2#9CgBM_Yw!gmK}Sj=cL3h#w--w);Xh4>F5@XvPOZwYcc`reMf{UG2zf;*A8 zk0Wp|1Y91*1YF0`_abn=?ZAB^;5zoXAA$Q_z&(IyyGG&u6mSzTDJzd06L3YC5^(5- zz>g2R^&~?(aMJ>=W0wd$$t3~zDa?faFNOZ^_%RB9L%^3|HpI_`_>O(&BlLbO;1{4G z=-t6pBXEX*TY}F7+}`v3F2tqa^L^mH4{`ml3@efHqUQH=h)cj1=)nYh2^Ri6gX{b& Pr~w5H7&L&x1{nVUB%WkF diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/WorkloadUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/WorkloadUtils.class deleted file mode 100644 index 9b99537c77ec7ee396af4f4f6b34e080feccec48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11662 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/BrokerCapacity.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/BrokerCapacity.class deleted file mode 100644 index dc0c94f3afb3f2b7985cf9b0b1d162a07915d76d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3929 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 KidTXfEd2prTh*ih diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlConfiguration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlConfiguration.class deleted file mode 100644 index f30a221b60c02b02bc8c95e1ab81495036ed0776..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1595 zcmcIk&rcIU6#fPZ3l#+s6bkY~K|q96(TgC-+Ah*$X`5~#z@=H1p$ysXHnUq2IC%8t z-(#YQ-uJS(fgj1h)3dRaJ+o*z5Va;niNM#8V(5!W zJ;$%<#l0i$MhwH*@@C#PtJz|qQZ8E6k43|>t5)8wFmzg$2%}|&Zd=rRCu&O0kcq(+ z>ypYQg??>$l^h3Ju`%>t_huNo;=68?bBXj3l<+n|nVdN@UHMg^7N!3ETQ#BqXE;+{!oTe9*r0S1I@Q?&BXtQ(YiWbhk{#jEh zOKqiLn4$ObhD|90*@Y2?$xUDKFz}A~{)8LU8^VjbYoZ~8J&)JlO{CKp!s8x{VVoLh zMff6GWf+{jegbn_l*1A}FEs0WTvi++P^}WUj<@AVq3m;TNQ9=Z?ESo-=xTGCz9svb|=X`;kM zbq#cadEX8Ekmiy5(Ym0wK)Qz~8Ww2F*rP|naic_>2AyhF1FYc{$)LW_u#|WM&IXsE zXG4S`jd10p!9z@fyy;2m#wa?_NtQ-d8@ez|Sem{^aVLRi&~uL8P2j`07vmZ9qVIy| zJ~HS}_+{`QVW%k100t@NS>}g$L|LE5s(|!&4DIx1zGC!etZRb)l}g~0v@50R_XJM~ zQ*m!7PStaB+^0CMC+0|F3e)7x@C-A5F)03<89ujUn7swVmlh1|n4_$1RQWuusuI$G L6kcEvFY)>hKbwaK diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlMetricsReporter.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/cruisecontrol/CruiseControlMetricsReporter.class deleted file mode 100644 index a62f8eaccc8ac2f35708002fab359fbdf743e73f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5271 zcmeHLZEqVz5S}$o&NgZD0tK2vdr2uIrQEf=)09egk){b8)ut))80C2 z`fK>k4?qG5zVmzdjF{bXV;{9sH^FU%V(GlQw=>Vq&g{J0{`vQ>zXQNmaNmFofgfVw z+CJrh{eT`)n}>ER1@|9uJB*m1G8DG!bz{kd?T2mV*{Nl-QwOsoe*Fm{sNdvh;iRx~ zFi&8y&Gu;5lh%NU)?QD>>j_T1+;pm?7Q!{0X4y$gl!Mn%VZPR)0?}H;y<9Ch+tsbI zTCwRgYOQ~P(Oz?j2AoWhyJdjUVG$Cz+1G^gSMMd7r@Tl_yPf zY>y{9t2+d;B|IqxyiH)XZ{4yGp~%5ilKXi(5G)S8L)JD?>WF*Vnr0-zU61+kU9*r^ ze5Ol-Ae81VGmq(IXi`%iMXZodj>}VsdI#q@QZ@IP*=DXs1#T~*?g8yEbD4)$&#$b< zer5Ii%F=$7HrBG)4q0rf-TPF!`=&%x_Ao;K8AL_jwUqB#N?q2ou2IM%?LOgPv zLn=5$?=R#}33CR<@nXcOGLggcl7V_2>rk&KI$fUya!e}~;0l;C@D?l)xHO~^QsvHUjR$O_>+dqr zR546dwV_MBonB1qz0Asej>X)MwaHc7SRc<}5xyU``yrQru_r>mB-#WXt<qqqrKxlGOp=}|X%Z-G=~Ae|RW@8oEsyzW z@RCS>x}u9z0~ar2I9@ab@>`BKPr}_lGT>uOUp;jh@F{^QogNJM9Fwf>rgme%m#G^k z2k)sw+W?gp`!^9uG9WNh=W&cTPEEW{z{EVAP{SP{@Cx3LbW1VBko#`CePl z?IOI2^9Y1<8Mpw8Fgq}wgUiU#pMMRX;9D9v zgETq#0B#NNsqH6x9}eN$KIY4Ujg%RR2DBYFFtuo44|S5J}i>>q-D13R%Y5s+achu@ZXqd zqVN7FotLi=AK0hsbuF7fm3rz8q1_zWnsdrFhT$boQPOVV5qsoVze1) ziH>A8(VW0tH}`ly(*BvJxN`WhkitGiz{czov{t$bXUXvAw^DPX z!cE?$fr?@gGAop%u~us#kIX|_8(Hac+U7yXG#a7z8?3|Wlu+JI@VwpNc{{=L(%^Xm z!JDFO#SN9p(umohOD&@Etr&yWkBSNMT!K6&);lUkPpgPxr7gw9n_Sy18ZhZ-*ErpE zb-*rVN~{R~%&?c<3=C=&Wz=rRyf%V~Jj5awOfI9vC=LadDm4ifH)a=$PA35tIqel| zW0nd-6WQkLLh`mpm$39*PSR!JHWhMHZE(skdfh>U!aRA&Ot+w*6a!+=j=gz8J0=jKjG) zoQCrRCL8-(oajXYz zDJznv3fBodKe#!&-khg~@hZUDZ2~hHqO$^Ag=s=Y59UrU26@PHDa>c|PY*Z(l@7OV z;}JO9nC**OZ^u5W!VD>G(%= WP6k2=8pv9LS@7_;it3#Q_kIJ`PM)~{ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/jmx/JmxModel.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/jmx/JmxModel.class deleted file mode 100644 index 5bf487436c80ddef466a075c338747048d0d2d63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8222 zcmeHM?{*VK6u%RYO+ukqK#HI)6{ST<{4df{4Uj@1No$f8TK~k!X4($jKRL6TLjB@* zpTRfa0X#>~(eJ*1kKhN-@ew@U+1;d@cGqm%6*!)L$>z@7`OTfXcjo@~&ToJJ^a}u7 zhgAhq1g31E3icwCl( z0*48la0lwtT+PolA2Q7$aO`gRL1TWdT5nVei~9Zi7D9s;;DjFZT=g<7#H0UP&j5B z6&%;?i5S>5G7aap4ea(1$Z)%8(x%SPXtGRTnA?Spv&Kw^Yt)gg8M$n`O*LG5)@GVu zPQ`V^5uG-fZlfzpCHEh?`?&SUWTMJem|&(HaiTQW*Md4}hZ$`h!R0HfGTZ71jn(}& z>_0NaP3}w+sEqG?qaiK+jJ; z;U^2GKy&mB)>1XgXmd0Y$Es~%p@R(jnwrhj*O=O3nob2Op;OlBDpSX}mGc8S*A3{L zAJ92BpmP{QV`|G{wrX0AYEVa8Q_;;Td)&rg4r1X}$;qvflP2ckA$xXlqiqRC#UU%S zDY$l3)u<__YcjRFu>ZfN{~}_n{XmmH-(GTeK*!pX4%Yv zQpP))2l%N!K@3pdo-YQd&tj(G8h2E?gG2*QbtD6#qaoo?JsL4Sp>kX8m@T%#P1ee( zWuzhURCb5yn<_UqtaYYRJV)315t4kv$vdhq`wj3?a*>++I_}Yxb&7dBz)CPD&-+Yk zz`}MJExS}t&}|%pZfCOYJ589_;2N8k8UEijOW|M`t{%h!9;kK*M$CAQgpcS5E&|E8 zgVctJ{Vbyg@(dSJG&dG0o+mr_RdBU291;tsAOziv0hW|wlEO)De>{H{#dsYR=HSQR z`n-jyWOLSBMG9_LJ38B2)MPV#c+s&RVOcg4*->*p>IRq(B0~n zX?p--axsSqbnR)*mz?FXkYoUb_%db^h#c)!Y@&lRmT7U6vTzylLvRV+A#ggRP9Q(` zhfA1hDjlQAL|v9RWWB-CsE#K$m$Kh@*jeLP#h5Pbr$~i$i&NthJF63E_?Unmqp%QX z(Xl=$uoi{2sxDWM!slZ-!N5upe>gK-oK=YUWp6*&o>TBGJpz9i`q#@@wV?DcV=0H<=J zahAYe$wXt+G<)5seR$EEH6p&FsT-c?SXlO`ncSjyl*{`3B zcFXB@tN%1P*#QUKc6|^$YM(g=#QUh4dwDd&CAm9>RU(&ux;G~ZeD2-;Z5138sNwCB zmmw5b!0x^xnF9B*+pAzHu!Pq|az85Y1%c7N4IDUk6!;1$M1KWSfd<}tZLcLMKoQ;B zK?-ODjt0n)0%(8Wiqkt*k;#?0ZR15|9Sh1fTmZbh#9P(la28&GBPb~-r67%R7LNAh zA(W2=`lbGffczrLCj;^+lwS(SXHY&HkY9!oI1jJjTqE$R|9lPmrL6kT3oz!&ufs+6 z`3Ag+PX%qd1mpNSfzk(Py&RSO87?o4y!|8Oenlw-@8Yjq4dANY!`~tIe-_@y5rF?y z_%MJV^*n@+LJ*8lgsbog&T|b%reLyX%NEj92$BzN&Ye!ac}z%lIAVTHhH>I5@f#camsoGHsv@058`%qG%tZygglOTBc= z*hp$NGYdA%lEgZnUYSK5ss!3aujcWT-A-mwcmj>S&?;8`gg~WxFeXqv$M!lj3ABFM z7tUGNfHeXycd?VH)pHq9VNIem_sYgJadx7mIif*x^dM;@h2{=92^WuiD(SwmVW~L$ zQ5=?v!$NV0iuY+`WlCe~so`EcP>-|ZB0;Ikvv3z-zKbwd82)W?5I_Sq)?pJ`1Zw@# z^KN(W>vD)2ji*#DlS1=UMd# z1VfuSAum<_RC_76!eWg8#)H2BU6FkHEN5N_1nR5WSTLqHG N-+^ts6WA$`-EaKFu)+WU diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/LoggingModel.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/LoggingModel.class deleted file mode 100644 index 1cf114aa2fa8d0e8f6a1e9dbf05d68063f0112d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3225 zcmcguTXP#V6g~=R*LK||aof;PE^270&1IK{03~S)A#F;jophRznTCgqyjE{( zH$!;iC-BbyUdtBhZkw3J^IdfE;>hl{r%e?0B{#p9GD<*Un}1W znTWi7cECI#J)I~K{wO>dbHx&=JU>Wv!j%`w9uK@g_WL60d+mJgm`w*J2~1}I0mFYA z-F@yS1TMEX9xi@+Yj<^HeeKc1-OkFB-Nz4}5ooku$Zn##sJ~3${Hly}!lGoG1u3sU z6(LdC;=UUz!zB@1A3-j>1X+PPftgHtVMN?1=n|;53&yDGN{{ccG)QmcO{e}MqmAuy*0G7Wl9SmF=Nd9GICm`6RX2%NnmB9Yu9;5FOdFr6c%igg2i zr0S%dJ3Fmy0+XxgHV0lOF!jO{50sLs0&`^Yr|%-gwG0k;kNPrQz#TO|2gY(IxnPK#Lqp7pIgMw&En?k|I>pS#9Kf5QQXg+4&F@yTMTMp*CgPrmc+aIByrU+5*|Fe| zis(Q-=aiwh2crnJYI(AbgZCI+VCC|s99`p!K;-x1WOfY)F~6W47LUVHD|%K!c0RL{ zvQlUxRD)T#T8E49CYIdh$uee&*i;)+Z#@mWTy2@6XX?82S+LENFzaG-G8qUg+-vP| zbQ&z)mx8>49oJh^8nYrinhneCPFhfb>jZwWD6}^2s*bAumjpZJ^=df+bwBG) zn6i)gAzI!nwWCSk=W*F#Wvq=5fm)xN25TM*1kNG#VzFF-4+%sTjO}vXN{YZ$q;vn2 zwqF5{Kw!bh#&WA>LEyD!Yo`ME%((Vyz1ZuKywIDcKSXMqGF3ib6Xp)i6#mE_W?9>I z;B$Qb94DOvUl5or?*R_r1#=1n2ksKMFq+v8d^z&c%N>H5+7Vh~q_?nLYPbeyA3ieA z!W^8z5ixN!0r)tg%yNWxOAwYy5pKYHLkLDwj&QRC zVXYLQ1@D(4d{BbWDMk3`6b^0)!d5B5G<;mj;Z_O4_oWD*{0D??3Bm-%&_wK0_zLGb O#_Kb<4NGtb?)?L4U#yb= diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/LoggingUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/logging/LoggingUtils.class deleted file mode 100644 index 5420217e6ae0c3375971b3cac11c85308c34ca4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8041 zcmeHMTW=dh6h33p_(Gbrr7aLB-Ihz8QtZ+OTIx2%Bxz;j#3)H4!Amt>Pn;>cJFD4o zNs#y-Jn#ef2S^~nGyEvTncYq7jknoxlC}}*i!Zb1J9FloIoJK?-{1cPfO}BSLyo{g zAnmG4xmSHcpVBH9)j&z^{>ZDsXOb!*tG3e%6q8j~beL0hM7PVmZnYVGKT_NY@-Rl= zRLH=g_^j1_!fZugyxDsAaB+pe`Q{3-Fa2)y4VN^1>>CGtEBVRTRzZBJAY6@B&3WwN9NLE5PdnayPHzhIhHg)f|D> z$}{T(#^zDvJe(ph)n~FOrH}n9xqaKRsi(JWGi&F7dnse_Ur`=~mSU@ADRUIE9{QCL zzrzzYT;Jg~S60wNmq$-P*OEOOUEhivxjbX>!0LG&w!uBTwj1~af770$2B|C75(WzW z1gR|Q>3beA9$;B2rbU93lUhnx)Kc3%GlrCk^9~JyyMv)=E`xOxQjUTsd9DnO7{4}n zcZvELbUOUFOl^ve)nzI^7}{e)3O9@;T0vI4zN7;*di(~HfmWZ6H7*YVjG3V#cj!vR zhUcJ-VpxUfxc@`s68~|b@iV@MM>KvIq^az@k zZ=a6=j>V~yCe66f$3o&!?P?@+!}EIzDH(M$bWm>xN>W=zX?FhvkyNgci#1xN!TGo` zH_Jp#j>X~rS~D_OT}rxb!0bij$r4P#*$J3{a|F(nhdWi>gibZF)LQPjZ6?0xcbi2*!oz9ZLd908P4|`T@8`s1hpCWK2C2f9}nnFG#hGg7DgPzLB^2ez`BT!lm2cHkP?z~RNnh4)ohA-Rl z@EL*PZj+FQTLkhkRUW=T$dLc%0o$v|WLnI_J#4v>Ynls_dAOf=HyWuBEx8m;=GSn5 zAHXHRcb52CHV4yi0><&zG~}UxtHp4&g#Qo&C-HLEGauze2k6 z_&FXvIRS6t?}>;C-h#Kof79?z%;73>&^tyP-c8|92|47DrU383#Q~gNi*Qy7jt<~1 z!~3bY4^nVH4d6b4E2+403hw7!ToJCq$Emn$DY##EaT8F1>Hw~<+3P8|zjtvtxPh9; W!A>7~-847R1L8U}&kt=sH#~IC11S72=N}fdpdZMN*xR;>ZOHir|{?6|E(1O(!Sc49M z=BW1GAB5j-$GG7%9+unagesNiMKY6i!qFgsUT6f@Q*KpR*G;e1PT+K~6aF`{I;yiW z#~}fKYziynu`0)I{>rnm-6Vjq;co$0Kvzr9#M;AZx9<8+(7NjR53ur5VY+yh7(ncL Q)hWM44>s_QGpbJi1Elx8q5uE@ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/metrics/MetricsModel.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/metrics/MetricsModel.class deleted file mode 100644 index c35b793f6c66314405e1004afa65e4d12ca860c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5766 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRange$IdRange.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRange$IdRange.class deleted file mode 100644 index 7a9d856525ecdb7000ae8eb3b05096142e20e90a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5912 zcmeHLUvK0z5TEpV-6prkmBR7o;J}mvwJ*sFPZW?)>4}xLdvI4y;?bK-cYT-G!FEc^ zx8Tztfdub-20ja7oTPgx+Ny@D)K*%p6er%F$1|SsZ|wQ=?_YlhfY0IM9xMg0XLOnr zT*%}ZKjeu}iLqJ~KZ!(@sJT@-N%P8B)JdT-%o9n^QmNb|BYGQTkGY)SgSPF#asX?! zq@4PbN8@Lh+5m1E%Qdy(a3C#CP;Uot17#M#%4b3f`$YhEH-|6AJs}yWethDl{v!EHKamL%d)NrrYM(z?cO zU1O(c{9oiZI*OuH+Om3dWkt?XF5R4CWG6OW4`AcVIqEa37-#ml#3=lRTM9Axzfn=> zHH{bOD(T{-uovhmS@rU|d|P3K=S0h(D07ht%S=U7MuZ@Z)m2KA#u{GQ++xD8N@jQ< zBxW(&BcgL#xgM4uGa(Pvb7Y+M-So5s&v+Xt64%lfQwMdhvkq^@19`}Ek#)Lebmy#d zyWLK;`cZC^79Ck`*RaB=O9)ODj)~EXadYfDJSV>M-Bmto`K8wU_$&P3+(q{hcFC*K zrl518$Hx#KjNfc7D-~#`Dq|D0BRsNANKl9#XjRlXruKO!QsOr0Qa(69Z5*AtR8$CK zD0w!q*3KSNvfzKX&fmFJXn6`4LSH+qMxpNBkA3(oP%?}MmmIzJ>Lpv^=c2PwQF!)$U5A~Gio$Cc0N31W zex6yNPHu6FmAD!!@wk#!6zH2Jya?C}G&``*$#b3Hh@cOz_F)x5s(uXV!qQONzB}p% zus&2N&!2KF+;`i#Y^Q>%CXa>}TI8YH&Fxc%)BtX6Zp|t?tMGPkaqKNEVQk*XY@=-y?V(?$TEPZ@`=MJdxmVjfA)6 oNcee6hfpv?%9*OP3&EFcbz8v z$B;mR_x=t1EvU2h<>HhiEHo&Il!x2%$9TTyH@oxCyO*y4-~r5cU@8D^bea@g$Yh;w z@q)-{=iKMkuDmO`=u6o&1E{FJiPj2#DWUWU_TPc=S zDA|GO0A_3MIngG+4c0NW0i6FyNMU~t;M(2g-M7z3x*RUtTMb}(kpy%g4B+za`z5WF z?!tv&_U&`2(WrbAGnT5N6ghX|SgF+@$HM%`qHtw|EW8Nfxv@k`rU+#Mmhse+>UdM^ThYTULKvS&_4p zODA)HY{$maLD+_v2vtor}D{9a*& zAIO$oQRX5QmYIrhivU3ytE-goi#33A_Z}05RWidhAu)^DV?s4o%JpaYHWPAFZ6M=R zccZ-=JoBxuh}{_Um|CloowX1#J_ID4b*|d&NUOi(0%_6W<*J4iPF2jx zTeis(O3^i~in_VxJIP|Mxfcl}*v{jpIKle$OcI6*4 zJoz<8uUb83OZ-A~FqLnR594qO6X29btzAk7N9K%b=M;D5iId@prU{xfbqz{BYWigb5&B{_GQ-g#hmF zGqY(;aVA#QgPiD@s&tAEh0}euy{UBr4;ldVq&u$(nlefINYL0xr=#rvW_nVhUUX+2 zG#$7Rz|xV}7QoFzj$$3SNm~9lK{{}I&lIZ(b_c!<;Og#lYGOAj|G3$juh8L*!qV-d zv5%Co@Erv31x?@prs#?yOlybkexRpQ^dG%~?jLi}3z&IR(_Es}(E!n2rgf&ij$jt9 z(4FHj*W%zfe;kK%aFxE9f-m73{R4bOzlb;na2>ve5E$KeNw;s{7Th829qsjh0UD?4 ARwbd5CY_Td(xzz8{U=<-SnF)bHWUSUl5{97E~-W?$+30*Y~FvAbI+-}}}-rM(e_vQD$e*P5zK7*wU3=k-W(#iYG z4f0Rf9?QETA1dkkKe~C*tyWDuL8+K;qCDnb%ft^J*F4ZrW89K_rnL&%2gYj*0|#_i9}82JY#iECtYEuK4c&I zke&LF9s7{o@}Wsu6Fj7WP}FD2X;6iTe7}j#(~gL$vbB%eT2T9+;3qP=ep5(An|)h7RR;nRh_lU{5^b zlwsU8IuQ*0ts)REO(#?DULYLHzD_L%3^+NN6RPVY`fyJ|@BLr_2|+OTxgP+yCS z6byH`gBdLhHIJ&MXPECyqsl~=3sSO!CH{THU!Zgouv6AbDNwww&3P=Lwr3=hjhN7w zann`F=c*xUw9Zw9@2kWm&_#Ep@Z%a2+q}(F?6i(zJ=o<%z&W>Cdnom`%mvlq zE$%`SXG0SkQJ`F(n^p;<1Z+gqI2L*G($nFmH=V zSC7-lLDg`vYqHXxz72M3Mmi3s1g=a?m(v(8WMPVsfl1kImIwOO2@R19%xj5~J3$7pXPim>HUnP}xE$Ly17CJ@^%G;Fu2z$4aTOaUA>081 zm+&8jEZm06FodHFjt1hf1y}I>HVn7TkKlMTogc$_{rk0aJRX0K!*zHGac;yoH(?Op zF;yext$0SS0QeBO4&b--3rsv7f9)rDw=JlX_!e7W>AJBgnL~O9>oY+&MeG=jS?rj%EuCPuD{=9{gc-EOYlCT k48RAtbAWMt`v`e|g1DdJ_XEhmqTUN?tAPLRd=3kL11!Rh1^@s6 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodePoolUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/nodepools/NodePoolUtils.class deleted file mode 100644 index 3a938d59f0ede8ef19444584662ad3ce9ba78e90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9758 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/ContainerSecurityProviderContextImpl.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/ContainerSecurityProviderContextImpl.class deleted file mode 100644 index 2432ae550b466927fc5add7114ae66f8a4b89b6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2530 zcmcgu-A)rh6h2c5OG_0ffF)>6VNfBc!iI>yu&<^bGY-VN~@I8D4 zpTR^Ez4xJvXWQKZP0bdATy$q==bZ0+bIzG>`s??%9{{ipk1WU$;99wk&qUztu`Y9j zbhJ^z|0En4a>a~Pj_XC*aOL>2#XU!JH&VhJhDz=Vk85W`1_u4PswXS&lpzUlo_qb~aSQ-PcHYZT1)%&k&1ePO>Xi*q?g11uC1dYIaZRitv zOg$HYFfRx!RcZr14UUnS;cL|$0{IPOZ@~ouvqv;uDJ9i3%#!^2hd^;Hy)JK2SNfqq zMyKH*g*UxCN(CBd5;;zRO8imZ=N8)rOiMN?jJjv74NxTOPJdHgs;5 zgOa6{9crNwM5vLJQEWqAEF_(iWtFsN(nuNB14?NZW!T4EE?i-#j_}-I4+WUS$i<$f z{bsLJsn9eET6`A|OUtHPc&g&E_uRZgDuS-u=agY>Iwujv-Qj6D|Bt+Fcezq{`ZLls zX6U{oWMGXO@>KOtJ8`UTDMAV6OHhC^fyGMgNMP!yr9rzVK(jS0``gHGa@Am{DFn(j z=`wGJDG|?;k9pG(nn1gDF1n1;xl$P@?_Z>Ircxc4pg6ye0wa9B8FYmfNc?52COx%8 z-o;v4jkRgGPT=zxx|(`ql=%!>hQLC+r;`nVgjWcBIYYuH@w2vf8f#2+T}H~~uki{d zP#v87bWcM98mm+99>MTAH*F;i5Y`v*�%sJnD)8Bu-{{(;+@X&z_flo&JUdV*>c36vf zLV3n&5q=h)inwN0Y0nR0W4ZQ1)!>0=xF2g__am*gM8J)=p&He6Z9}V;XmGuvq~&{d zHH-oWvIM5u*a4H<-g!oI{XrNp4dF)Xuuxx7gryMjqOaDl+&Q4X)QR(c#JN%qMHsku=>i#MpR!bqT_ zP?F;2>H!bUGn&uUnw&PcA25wZ5%YI3Yq}_un-jC`!%h0(Ci%Lj2y>9J2qUE}MgJ{U*TR2FeI}FGbxu25?zK!ebZ(Yi z-RxmbpA@K7lu_gz&*xIY46y2gPsuXap+lYlmI!9EqTrFJ=G*plYI2q)OyklCJ5xz<};Ydr1)YBgN+;jD%X zd7935G;AoUnU3Xp>$ftga}NLs2Wo^rb_J(Cse{JS`;b6sPoCIpHV<+EUuX_3s+ z#jI@#Lx5GzScp+5=SqiCdrT-NO69|ksKf7LX+_9aWlI==$-YXoqpgjYYrfLy!}2&> zBk*Mi743MOA6W>@;+~FE0du}d;Oqa(`FMx{n>?ulR=lcW?ejNy;SyNt^6$~jM3>qZ z2hws?CbA^(>X!Dcz`I=g&3y-MBM-X(Qo1{Em%x12dJnJzB?1%py(2je+{a5iJ+%Z1 zYr+_0ehu~6z%3v!f`2kHP=rw!!?z+hFpgsuzvLi~&k3A8Mym{t`5#dDSiJZRrhefp z1DEkRhBkoS)A%g3-}5j7vp7o-u5=+Jkxq&*3Rf}C9C{{k=5g%glSDm0Tj-Ndsc$|G lTpx&bqYv7nK4>FAF@p@&a1lp<2ly*s9hTq@+=DWV`~@~O0^k4u diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderFactory.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderFactory.class deleted file mode 100644 index 004e53f33d0e16ac3a7d43a18ab4da133c628629..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4202 zcmeHK-*4PR5T3mz@!fHdlC~7ek8T5P?+VyF@I(s|L`hWPG!Y4r5aMCa-dwg_dr!OT zqb=|JOGqHWJAV`~w(mIS*buuSAXVhyVtZ%4nVp^aX6M)6e*75#K86oGXc73@=qN~- zNP~xL!UCZJW3@=0ia?FIW>)DSl9{nw2Z@Tg3=EGlE$oxAR!2f|6YQyYfBJ1ttBHuY z-eM6dKJj3Qz{LVrvUC*e4j=N!5?Bd$x3@RHAkYp&H5ze!7atL?&?RssbU>oW$~}<^ z`w4*y{lOuDr497QgBJ;`&P{A;t#lh!iTB-?spdw>36E){lChA?3YAi{Gn70rAJJ~- z;F!~xN0Mn28nfsT8*#cWls}DuKZ}7sje%dpz+a5PI*k=KG*y-+%tpu5A~1hE#@$wd zG1Pt@YCreae+Dz9$08XkZRuQ}Ml8*34>_G}`8k(VdUV#NYlsxbkXa$m!uor``^i{} zNLXqzEE!C;6w@cmD}a_6-ycw6XqLwONTiq$N4SE|ER(h>?b97Bw0s4nC`%Z>zaR-2-zURyA51N=oDurHvz0-Ol}V!lZ~dRC**v8Im{h-R9$nj|<}aYaUdg zYn|2}awsNmvc;LrkZK%WR58yfRLx24U=6!@Kb*JcGRyAf?Rz!E@IJ^A+`vKZ z7=g7=MNA$}9i4t$vd6*@_$EBZdkWqyE+OZ}v+K*QJ~-CuTLJ@@@6Ovv8?KR7tHzb1 zd3w~U%>Q|G-uV7Y9wpGtFR21~_$j9JZASuyi!6%e(1y1N{9Yq{Y9+&>fm2DLyel+M z$yyz)F>D(sAwi8GG)C?`zjRLEg%P(i<|1&lKRAV;-XZY)xdgZIabS_`t4v3H3kOI7 z*Bt=U39^`!Jm}{$V=*aua0f@q#RT`@J*034j0gUS3A8L90=*q!4Bk!;@Um>+2H;GI zGjR*9!7{AiQx`mFEIhi8Q(rcDUz@L1ii1;Uitwp{(^5UxP-qe#mX{V#^+us z1y|q|d~3s1cy)?!=LEuQ4uo3;LJRde@H)Iv(aXP;mfv*f-8-Q-^EkJc|CM^z9eUdp ky&JGzu{YOy+oAX1PrVl0M9~)9f*`j9OK=+o@GiXn2X7d0asU7T diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/VertxUtil.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/VertxUtil.class deleted file mode 100644 index 577e8dae40c2e25e53770f9f1dc54686b351d9ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10727 zcmeHNTXWk)6h0f$%68K>^hR%hD7U1vHlr%{ z$P6<)^AC97H!uS;z%xGv{sF_0WUp6_6m1%J+L`9Xw&e4jJ$v@trN96C?GFIB3S5H$ z0u|3SOAX4L(j&S~ON^I1-(`*OScx|+m-^f-nRd(bEw_7P(Q^H7@A%BtV35FY2(+oQ zQkq+OWSKsJy~fm%whf*ftN-`7YPhb@VceJ zJ^}~3+^)MWcXP0x4F7Y-aV?MA>sDPid85hfkel9g`I2olyeoPkUt6{Gx@FqbMWQA( z*XW9+pJBY%-cPZ!pJIDI;>H=h&Mi-OxUV;;Z?5V-va-Hy;#OotQHgOR z6>BuP>+6VErb{j}FX<+Ag4LERy|b-e%C^wEl)GAL8~&49$a>(e3YPRt=(xL*C0gij z4&%=?T?@mZl7KG;VN%#nP>=3&o$CHZ(<hi}F3!;p}pLcnKd0AA8*(R6HNZFfXwzPp|W+OrPLjDGI>UO3p89dWo)fg%H zWZxa`CS6{mN=v6JUe;$i)e{|0e7{j8pKw^R1gV=*471aYZ(+ZXu}al4UCW&0vpTNt%7Bxp0B)h zHB(7F7!^@>1m2!6_ucWI;_};&wEzV;I0PCD6F53zbSENFwN(x#CI<~HZEv+2OO{&; zaz24W1~;j_NL?0Ow{H&mtIQ)XX6$6lgY%j_)Z1`O0;fiduy!mPoocQ;YDAWYRQW1f zacEFK6DU_|S0vG+%DgqY=n>>`sGJ) z88QqkH!A%CHxu?3=3H4CV^`P_G^{I4YHrYHCVl zwcBZT1}V>`NmprK6)Y?DeC2$sW-6)nuOjMBzy$WwdOdRJC>oBdM6W5!vG5Uggo`Fv zas)JX%A;b)5$*#5x3-RO!IS^(L?vvKS1f;#+N_QP_4fV=+*Xl$Q(t#~bGne~i2MEK zS!ri04F1^vulMd@I$=_=4Z(@)Qcwt8jfCe}5HK$&)(O?$eV~TQt26JeV3Bgf=+c-38$21M9Xbh?Q(BKY% z)2V;sS!?hG*03Q(XWe`F@>GzrG`NrRH_>`(@HOr=-YsbGfWVRXz34HH1{AjvnT`fH z<~tBKBMne@#;hTm*98dcPQLDH1sPR_!F-N;AQ;W8~(Eg z4&m>ihzbtF5xmO7Q8hi4{N>H-lVbv(gECYE{;I%l zDL*+c;m6=pf&WYqKPKVF;hMltDB>psegHnllNx~Q;NbT;wB|{;0W)C0EtrP|sKFxK Wg)iYN_y!)r64YTCR?)s6f&D)ddfin3 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractAssemblyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractAssemblyOperator.class deleted file mode 100644 index c0d962c1f391a1e81b24a3ac0ed980b8d6ee7815..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7398 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperator.class deleted file mode 100644 index 78bf80dbc721341ae93eedd8eb7a233bcc9e70a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18377 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 U!)?lnd-Og|Z+GB6J&nQq4=`B|r2qf` diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/AbstractOperator.class deleted file mode 100644 index 0c045895cbfa6505b29a00d9edf6dfede182490f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11508 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 LPZ4K-PQUywo=a@` diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/BrokersInUseCheck.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/BrokersInUseCheck.class deleted file mode 100644 index 5b7469790697ee9d9cdc5c72b4a75b80a9c5ac69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5290 zcmeHL>u%#j6h2eZx-n(Dbe96!$=b;eCcA7Yiv-V060;#H$`ttenIcLuK&hh;9_iujyz&-fNf;j?vTDdi! ziJZg8Y|^OU=17L*9w zjF~(ZbZh(VN8B|87M%V2_qPuStU3qWm4Pcf!HkfBBfDL$>WFBFK$tB8PgORK36z?$ z!!3B4!19P~TPdj);Tcly9|ekQ>GgSsy3!AY7qih&$+pLReV5wh)+whQ?s`liC}i## z>vFm-WOd+R_0qxWz`@alO9$6!M{-RAX{gVPdrA#*^79aVN^@cet5FE6k*U=udqZNU z@I$E#9X(227DTUYb9(9MHF6ZCK3C?vK#U6Er0V8T{g)tdlJ$)6@{FDlaMuq#;R-`_ z4;2B+Ex-cmxu^^@DeuY#6`J;f4nGkA*2M|l!DH6*Od4IKd#EGP9Yj$UM1_yMPeKC98D80M`+WMp>Xwn9Q&*+Nk^hkxb|3><6NO|#ddwm zwX4LF=S7YIvx@GFGUKs}WP=UMOJKoG0?$>P(PWlHu^vrs%MQx>gPz~!suh(gffYx( z%sU>G?%-m{oC-}~-bxXQ#NmEnFCSaRLksmOhW35)E zW_?^b>0)UXgbqqzLP(NYc#V+n|Gio$)CvCojg!EQPTa}bJZZNCHgi@h(y8?71_khq z$?mW<rFOECNa1*~C$z>7o)&(2YIq&+6}X#5 zU=8MB0gp;}Y{4S_mhtQk-X-|o{vGTeSC)Q-8-L>296XD^3-O(KSi$3^1O>O?HlE>d z1*?d9KE}Q0;M&xktsnV)q6q;d*6ebI}0=DaR&MP z*n_pUim?W7d9X2;`ao-?*I~oks(vpu8kLMN4!BA)krc`XnO407Q}cD;*YkM+XHqH~ z^e{NXTNSXtjx+S@X9_!TM*|FE91wS7?{&t597s0^$~(IvP54y{Q3|G-%R zJE>VC)$gM|$Le6A_A5ChFA}MSyEm_kQQyB1YX|uFUt(xc*KaXP)HtPj`e0hlJD7GS z)qh9DT`WBZxh@SR&LvgZjZ+~f#eGMsk%*lu^O&8SvfVyed!cDRDRqiS{)v#0kcUFL zMYYNK`%F?f?+TX=1;KNrTNf%)luv62>|N z_Ov^qzqRa(P(P$p$B`HWq=1a=87yg!vgAWoo$;MY!_tFUTd=&+*)dt zdULnRnOmpD7bgjTm sc#rM?@6+F>2_Ad^AJN;}M6Z*WkKq&e6h0%WLL+zRewCgk>J`fU4cr9{z5oCK diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CaReconciler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CaReconciler.class deleted file mode 100644 index 800665ee5421da058f1de13ea96a691791416fbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9660 zcmeHM>37@45g#y?KrudK`L@!8cHCAprev3H%{7g39cwuAix5k zWI1iq`@ZkHO^@`xk2Fb-@BPsKp&$BZw6DKifFMY&4cbpH@3l`K$OU$1XJ=+-2Rpy{ z`+r{iD-k_Pf6*zU(PO@67HZ6L3Rl?%D_Cy94?L@O-72_s?y9k9uLCM5sPPH&!zRJx&qkd!l!iC92jSd@4Vv7Zq>lkje%DtjS zd%cKB*bgopl%VO`;9hV|Bi&dL59k>R?p9h$?=irn`HIm4tWvX_ zl5Ii21<&2ED%^u4#zc2FsE@9*)pa&e1##z;Db=O_z90o8r!wOTDBiA`% zTu}`OsZCgRmN^W&qR}3s)Oy9}{yKJj)AcGBxD)yXG%*%BJ3+aZZwSpAW!v)C1gjIq zOry*_hX>qWGnR^^uF}g4E=D22zh#J~z8ks9Gh^n#JB>4pN}G4f#a9<}^<`W)w#sfKMYdpQ0$ zT32w262oF>>ypna*r##Jv4XQ2c_W=CH+0crQ>doyq5X@X_T7eO@@D^1qh5!^UNJi6 zZBD50w$T-hc9q-;*9pt-Yx%^a=eb^%-mLBKzvOsW#opkRyy@2JmMzVeuX}FU<~9FJ zJ~trddainamt^x+_5OqjJZ)v z8jCiq)zJ*AC-W7T`*|TujRodfJ^)XCt&VV-%zqIjvgV^@2R6 zuClUcnU5%R`(LGu%-w@VJCxRrmDr1kCCIUT*64w=975NEfQ zPTmXxq(^BBOTtEA+5i89sw7mQbv|+T>v4*>B;pP?p3I8R-V*B+Vww7;&~&G{DHE1d ziEi4Qwv0E0IFbFPP%1Lulo>ZlfK#R^Q{a?2iF7!HvMVW0p-;(nh8^~g0KtOi6i1DzhQJ{qa?sf~zHJ6M)w)82m^g5(dBGq6wJ2D2MHOP4iT zNZ*o91~)%+0wi7I=6VUxq+2VoCX`u(3MxRiiEzfPxbPNaog(}?6h~LG^n^ys>5{4z zNR#&NmZd{Q9O$xxP=h`-c&82z;Nc5EJ&GF3=o8em;66;O_s27zR0k{LV z-zxJ(2p`|6fQyez3uIRS{fnIWuHzStW!qoiwdo2#b%C%aRC=g)>R4yM`;b!}dlL9Y6q|NX^O30+_jN*%@Tu+kFx?;yqi)oaBN?D| zdK!^Qk;drsZWLgIVo`xjr)N-3NoX1upLBX3zCH0xOQ#PYl*(|f(}(1Utj3m@P9MR! zjI7p-Ct+blr;p)iwsyBUs?#S>tqH$iI(-V|)aWeh^ck!o4~I^lLpYL;imIbdU(o2D zl#E5EFNxxvtd{BY6_jX1lA_bsG`a)VTAjXum7~L{)3@;TZ%;mS`VO|bD~;0WSr{>q zPU`f1%x%9%>hwbxw!JT`H0$&uD2BMCtT^fP6Ui$XwRHL!^a#H#I{gCU;d9HJzk)`H zAUgd9TOqzAD4avUL@imT-(g;R^wa4Nu(r(Rb$TA=5s_S{7r-NqqRFbQPA?&Rb)G?Z z{;cKu_-HJnLgmv5f-tD;57Tk#qkcRMl1^E)Lo`4++1^RJW&a-9E8q8lMvU*rPqYW< zpllD(Vc8y`qq02)o??8M?vm{*=x*8GLwVVrpp#hrUOZ>$6zE<_uaf<*rV-hWM(urc ze@yoP=w3r(a=g&d|6tpDhF(jrle{0I)3SX%J&cy<4fKd?-zeKb@IFID{EwseG^`=C z&%H#CK0frO=V{_^c+1dv{P%-~@SDW{Zuy*}DY}5SEEVW6P=&foOHTKJlb{bdT~u&- zPIAh~`48U4{1@W+8W}VjuRj-SB6x@E&nwpdhe8vgw(}>8h#W-lh-3BwP*SXJN4*KnI{!8-9Z8L$WVhegg!VgoA_@N?)gM(zofm^ga3kJx4#LpVH6im-K7; NE&ZPUNPnUi{|ipfrLh12 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectBuildOperator$BuildInfo.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectBuildOperator$BuildInfo.class deleted file mode 100644 index 9bbcb3f797d85a585f2386e12d0146e5841c7d6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5418 zcmeHL-ESL35T7+^oV%t?8Yoacmrz9eV)MWQf>J32qF6Ys6{nRzysY=u_BMCBr`{)3Q3G!gy-rjFMc4u~GcK-VNw?6>jYxtxNH3C0c!6E+Y8w%VuPx+qi)z9Mj=moqyQBWa~p1XdqNCEY^;pWb^B z{^HF2rvz4ZbtLMrPGI9yz<0)Ivj#WGtzVufBdm@`BBER;sf?LJQ8YEW7mLJxNy8wg zqns(F9qkEvf_IuS>c*)EgHq#{0XiBA8VMdVgBqobALH)OZK)d*OEjjIXiO||Ix)4x zHjT8fG*>rajt{9rp5l3m`#sAOZQaOi-N@J1SWZG12jM>>(pz+;g9Q6tOCEGQJq_P;jldjAaq++j=k%W&uY!6XGk9 zgu!l%f%w6qZ1~V4qLrt@t}}uq(*)|F=;)JF>p`MEeK|N_X+_RmVMdaR9nN*8Tt%WH z+n17-p{R&0wx^TDaYx6Jk39=+OY3|P%~@O)B8Q?cj8I&7NIF;_^tDO$1alcy0y`sy zB|{HA$@vs&B`K;c9km%&M_6qrJnb3BqKcL}+`CVurJ0IEUn&tb=mC~mdEzd};xUzK zq>lw9jX6R-qiu4|c-Lev#Qk7=+Y~PiKpIb&Q>EX+}Z-ql~ z0Y}=)@-yLaf%!P<0b?-4n}7$j&+LJ4EMm@Arhm`+#|$0y5nNpgGHbdaCRK z8DVfqTQ#d-5v&&|H=FdTZ*3(@RRZng7p)>MFW$QIzn9vNn2`)GaA9yh+V}m{a+|fr zx0)Xd)0eUD{8ZY*CudbiCm!uF{QN1cR3M${(icijXL6l&(@J|Xzoezs?*U)3_@x$B zN!LoC%MlyGb=X{oHMm9K_JS@@-t*aLWBv3fOM1c_DBV@bvg zAC3vEw=jj7;-VpJ9o{3*dD&|q5X|)MKAh{_<(4;59X^_yEu99HJCN35);_|{7%q10 zk+5!GTkQ3%mW1#b5O@vSjy2eVYp{x=EvOeyg5xy^@JooJ&k>d5!r$Tg4_h~Wg^fS) zEvEuR=U4)-Bjc;$_FQ_47K&CnHE&Q*++i(Y;0Po;0L;?cu!uvS8jqj`Y W{R5!zF^+3Ee;1!Oaa1Z-sP+${cu*n$ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectBuildOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ConnectBuildOperator.class deleted file mode 100644 index c4d3c8aeb9c3b2a2e64359f01944a7f51b24eae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10728 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 K1ru-^?*0HQE6Fzi diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CruiseControlReconciler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/CruiseControlReconciler.class deleted file mode 100644 index 1066daed3096d66835aa8f412e71bc642efb8b0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8302 zcmeHMTXP)66+RJlLP(Wgwr9J){`#ELr@K#|{?Awc z{EUcxMt^f@#Gz)af_j^YsD6!Yv$~M=I8mbghN#O9S1ggL9)xL}aMi0|am?Fm;ZA){ zr6T5YGD?&Tmw6zgK!jYmH0sdtj4x!-M*Y&-H6A1m9aRNHutdlR7~gctYZ?w63Cf%f z9rODJ0b;z6XO1~^$e+uFn`3C1)OsX5Vo|`ail`;8#}1A8zK9duuPHVnmZXY1bYE6E z>-S`ALhERwabDBpnnS`B(dIHu7D3~@=+J~Q$r5YxxWfW4O%8H6bngJrXKOqJ%|So^ z!Z4>ryu_31Qf*z9p$K-K=aDveW*FyHhfa!kMRr7RshEe05nBs+3q!VeCzLyF9wnyD zp?m!225K?L(U=E{mvG1ZW?v03Cu6R*MZhlvflSMsr+}?$L7!tqpPm2{25hQ;IuVr> zG!3wi->120K#vLd(7M=IWF1rK(A_>ftiMttJ8(l-uT|JhDvi9nyHd*}CLqeRZu04$cN z3b?6nrkzeGxN1}g?!Uy=w^$=DR=JAd8FgREt+dmCt&@fiD-}PzRWQBk(3k%cd1n13 z+2YH59g9edRu7Fy=7r$TY<&Ou6-egwbht^SKjNp+B(a3-F-5}~6Ew|UD8 zWV<86jMeKXiDBCD(_U?SWs`d?9)wH*1b5kjO5PbEXNs+JMixtUrr4@_6=v%^9i+HprCa*^9S`~TdkBu~^8#k!OpMZi0_Aru|%b z^jo+YcGj-Wd z{wb+<(V_WUtEZD_!?;zJzb;3|I{R;O!SJ6_VmHoXZsdih1}E?I?z)n+zC#!7(hg;+ z@os|HA-717!(hF1y+dbi=0;^-d-i6aoBEoWl9FCchc4Om+LMpr-Q+qG$-Gp(gKU|z z7S?r)C0lD|x$Sv80Xg(Q-??w13$C(Erc1v-LN>FhOL*$&g#a%73Oh&<5tzUu0(k}H~!sEb!EEsj^8r~DiacPlz zcPZ45O4)mkOL)W@)ggyV9sLGVaTvLThl#r&uuFIXJ5hNRb7>nMQ^c(<-GH70p@mCt zU^y5==I>=L{obKdCMq;)nmFF2KSCzcT8cW5iKn3I2OpQ-hOvq^GmJ~` zLNSEnF1-)wi`2eLAHpPht8?kEeXoFd_~y{zMG?nH%C8`U5Ys~h61+#=Lz8rX#_%;s zE*;FuajIqIAvz4y5qyu(QM4bU<5~R#zBT@C^w#AGI+>OC7Ud~Ao&CR$?$62x=sQ{Y zU3xGpJ&dmVouTh#<@f1flq2*=#ydif7Ufh?PG@BevYe$K0GCVjLwXFoo`4pIP}crM zkH0ec@H>Vc1nr)}uhs-8dYT$29h${UtYJFeWjdfS8Pm@znBJ>k8l?;L zY?o=S%ao0lF+Eqo^hqVt{B1D(y^`tq+hF>4CDRME(ADn6u683`JH1q)-4~Tii?<=u zSCvdlduMXaRx(|p%U$hW?rJyM)oyuEJLjoNrj^@}sae4^LRT>Q2(8k`D9>R9U8Ps( rm-K7;Einp+(*_CJqBco-onlJqI_=Q!=nwQK`U|~9@6dbn0e$o}5#>-d diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/DefaultKafkaQuotasManager.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/DefaultKafkaQuotasManager.class deleted file mode 100644 index 6948cd6b8942084b0d088de91a3c89200ac99729..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9934 zcmeGi$#NS-^tEGqB*lrd6A}_8VY32AtO-PpgCfhuWNg`592^!g8nxthW)ZWvV!noN z;6fEt!G#kiiX&Bg2p5Vs)3P+OMw)SA5mWf0+1}Q#->&}k?;m~wfIFZHFh-zanMzud znV#N~x8*c5(w1#9?HiUhTGW(n!%QoxW7*W~zK|`8YBhByJx?35quTf7#v^&nF>Kjd zmUX#FO##LUobo8DvffM=YFkvX2~0|b#l?J)zy+yD6+>5;%4C}vx@0sFEkoe!e10KY zk;>IdDPOGSSISG}4SXx*R7Q2%W0KcxX73>E#nobAzLG<@dmH6^wV1`9wMwC!C2&US zGB4qR^d`ce$Qin2%euWTs}7C93508zM%_`US*`8Zw2BL+NHBis`qM+QC zqwPT{=GQ9uQn|XCFXm9{>|$G#7@S2ElYZ?`%dVnI6CB!ZaBL>IPGCG|)TscM2~2lao;OXyjKLLh zdcC5X)H2jas%#=qOI9ACnBsM2q}mpd+O>#O z+akIzb}iz%SU0F8>V_?9vaM{2HqxYzTe$gtnrL$=*XB~LsHy#N;BqppWtg_uMHLlU zciGmcxVz9J$it$gZED(&Bka(D!Wm{WjOAeh@m#^NnHnbap#@yhS}IeREm{u7ISexx zY)wbO6e9BYKa&)hB|3VYHkgj_pn+fT-c2EX=#;pO3CI0{P@=560fZCwkxayc5=emV zMB5N$(cWp%$S8?;PQ{2eJ21V?h4AT1RtF95W(38}n^pj2SNuK6G60I}Wm`6xj2R#i z=UH+fAXnhO48&`SRn=)S-77Le#2Yod#LzDL6OG@*e5%i?ST*r9I~-@fVvk6StZB+S zBcdJ2aOMpMO))^hJr*5Vtw%h4p>M&l9WzL`e&by?7?y{9g_IwpH|mA}uMf!keuCM$ z#&qsAtEREd>Tc>7D#9w&$|h!r5)E@kgv>hj=29JNZfqGs==$9-1hiKRym<*hiDZpl zkSk)L?qHt~9NRsR9B;`6vh0TSCy>G#hlW?!`MT(Te_c+S#g=`03O$043%dO!mNx&s|aSEOTk-+(x z{+W|InVFWbjahND8a2yqsqGG@3`JJg+ogB=<+#1cECLUtkqqQ;`gI{Vkh+2=rM{?_ ziNOqk?;?zi`cQ|fY~KNPpY#dfP>Z&3h~**X486gc4zI(Dd<;k6@=U;rlagy&sHu2~ zHFepomk8V%3_0r`N_HJ0U1(+IP<<&f_Gbk34X|f_iS#6Xw@_A%GRz3AS#Mt%(sCTsP$N*CA-sD9{cknE1g3Ls$v9cUK< zthh%>x_`y>w1@(%5;*Pq%4Ze=;Nh4_t||e_c+aaz0o*elZm%f7r+DTA*DV05dwS1^ zTY%3oNcd`L0lp+K#W#)rktV=b$l3qKD}@B8;db^~s{nNZ=X&393l^Y(it_wQfK3$5 zby)$ndQScD#s%3g^O1F1C$?6AWh=zWCDKyuL8upYa9~z^*G*-!4$qf>3g2W z=hMFDGx&VY_k13y5FEu^#NX$U!h6Vt;5G3hT-rGE!uN3XXOHeR{GIf^Ou%)#pW;yP z61PfG`!Wp zf4hV4>W8o3odEoL2S0}EeZPZ$vx7g;!M_!N|E&-IL%7|+&vfv|JNUB!_`mq@=iqJ! z|Dz7Rs~awVHUR&R4*nSA5ONIW;SpYE;4I`}5tiUSEJFd-pad0o02}Zbd;wLEK>-R) GVE+IRqYF*| diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/EntityOperatorReconciler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/EntityOperatorReconciler.class deleted file mode 100644 index b138600fc0d06ea2915af73939528608bc004ebb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9576 zcmeHMS##V(5biNf?0$>FNICpPzpNfS2Jr z19}L|`NFBxZRS-j+pBhk@roY^R=>t7yg`K>a8YsG&=06+P1wFq>kIB$Wx@+sur}Q! zoS_c)9OhDCKrewE3edH^rONceW$FY3wu>eSvjfIGq_JYAXl9haV6-m2o?~^&!{D4x zfSg5UnpsUUXV*vOQd8EdO<;>vjRddS5?1OMP|x-pdXafGeg$DSTNd*J$v4ZEJUa*l zC2&AZj#(}7XK_corO^`-rbZhsU#p`mvDyT7S*JQ?k#@UJ9YIrcJFMBv4ASiJsaRzW z9d{farZM*+t?mu->}URY8eHLG9$)lsb}QhDc_&O zJwT;eWV;nv+cZ)S;746#OXuuHi*~0~ZJ$KS-CkO%7WG~$BX0ZxIrcEWDnjN{gbPrr z3C~_|X$=<*c$JEPEi%Ur=o#Bz#;x!CB1jl^681aJc!Nb-9kFg6V;&1m5SSloH@MhH zVyPmUFYoDCZdmr*fly=E`2*rPEY8rSeVf!->wQ3D<$(BHC~2_d-XgD1$q zJ8yUb0o_$vGaX)UFjsvqvmrPtT=$Qg<yD95j*4&v&N}!dOR@ecHk_V0bPUAhL~^ovgNwjK)uiFLV04pTbKC_vhl zYUFTqBpf;P+LR-Qr_jdVI-;pMW)uz!Oh3ev9rFSY154;&%56po^U$!#d^7ZFbdhn@T0aCbJ5ELPw(+`niG54}_873s|=5;=;{6x!78LS+%i zG7Q7WR(J#|Sc4kstP;ukOuvO0)cLT!K*gM_G0Ae046*aJVDh;+*&8e~tP9Rt|3y_4 z3tlA=*GLHr4_&g_He)oZM`CRWL;2{i6={!rQ|r-=S-O(~OOmby(UL%UDE09NlZVt-e3|sTc^kjty`z}9 zcg<0(S{La8Kp(tH;PUM=H;m3S)9jI@g+8bfn7p|VvW{LPaH$SM$`2(zHk3k4ieuM| zruJvtRn9fb7I;eRYbS5L+LK{RY8QAurFl~GhicTN0iAYh*_1NM>u z<}*C7#$~x(H4#vfL96}5$1`Kos_lljYtsZSm91;llSC$MC+csapX>^`8I*+d^Ni| zDX~v^#b&`I7p=O$47IVRhj||=I;*-@lh}!^#&oDBFT(<3^F zHo<26HwXswsj&oQHEw~eYTO3fk-8uM_rMOMlRT1sC+t$=ZrG#7y|7P>`{95Z55oOw zJOmG@@j)=vcv#W(z!5l#&pq%^b9`8h1Gv^B@F@Nc;oIj>N-16W7Z`qP@bMe)RqTMBpb~m(0?`%M(KQ%}_@Gh?21Mk7NI6j7P^nI|w0SZgNU!Pox+;BlBS diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftMetadataManager.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftMetadataManager.class deleted file mode 100644 index 2c832feb923bc193aa3de5334f00811b6e7dadf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6999 zcmeHMdruoj5TA80haD%Rf9dKXE^5$#=fC3hXe?V?zXz_t2vYw_V?Yw^kU za-+Gn@#x9=@?!#1MqgPI$L4eqJ3h}HE*A(~D9>&a7+Z2XOoK}VCi~!JAzU#5lce-w z%Mr|Xtv%M!P1p9gr7Y{7aN8EM{rh^c(As5shnW@?2=b`;3_nJn;cn%?AC*IYR1W;n ze{krJ8NK5&Uw2%o+f?5LNrcpd#;drUsN}#6Pj%^ z{qRH2k+0WFdrZjZ8T>v{oGZF%Cf^uDMQw(i@JKVwa*ugh=O#@5D(G|Up>=V90lun&6pCZLEmBm65r6i0?m#$8Ax$m*e zBE`azg$X{N#B~cPCL+2@0Uh$^HWNP5;ZXD*6`Uen6$>kY3u+Oj|Z=pGaO0K4Oz>x=&O{{RL@TWD;hM)askMDj@edx3$zARfXc(hjvf+Aa+NS$$ z7KP~%#}i=XBTKfLp&VZ`1`B@8P^mXq(`(1S*@)HX+N==~2@ayro*>UQ zMx!Z~Jvt$cw>f*Vv!NkT5vsm(4&3Tp%IchHFCt<&>$5vFV+R(0M~Opo#@Q zCGc`o^Z0hQwFE8&syFPpd@jY0&1TH$cQb=y*)vBjtc}X+=^e?Dy^@5$i zJj}=|_iFGno@j)Ltidk>XDLw$B2cPx-^YWH7H(wva2xO#1dnubFb#Pa$E%y5!36&2 z@l64W_L&xF;Weab*9K1o_`$ z@}I%yJ^6A^zHfgvLH_rid=9=qOF8%wmhk^3%6|n_xC7t7x9~mu2sJ!PdjO071Nq-9 A5&!@I diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftMigrationUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KRaftMigrationUtils.class deleted file mode 100644 index ad87455e55a377ea375709a73eadde34fec84da6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6823 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 Dcee74 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator$ReconciliationState.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator$ReconciliationState.class deleted file mode 100644 index c98c473be5392a0b858981327a46f146b37411ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10536 zcmeHN-E$mA5$`=KUQ3p2MRsB(1hO#(PC@7b1PGB3aSj;^on%L6%dx@0Xm4~HYj5{5 zJ7;9`{Y`*({s?%did4ZXMHP=!@dxn6GdxoKX7=Ouq}AQpCmUCgs&u=v+w<$5p6;2R z?)}Su{_sa4`U3shrjkWGly0TPgkQPC?y`yqDxs31bzfA1HkV8Vvf_H3P;uFPz`~HX zHobe56}Gj*F2=1ZG5v*g?gqXqJi(L*{JLU_+caX)q~YK(zgfAmd562oqEVlrzMRv`w2Ei%W!wp<&z5GG*oaw#F6>BiXj6kc*XH70G zx=|Zi0eQgSI&qiF5DKVnW5gK4*+}M%>{F19#_Fvyi%!<6k*=#OdLy{6!sJcdz?(@k zpf_c(!{u7g;GsoN)#_a7PIb}rnd(SzoYc=2YMNr5Z_O{_^;D*39g_dBbsoR$F++iJZ0!Ha*@7Uw6hvuWfUu!Cj9@5W#nLFp1825zNJ&JC}IwTx?q1 z2Z`sNcNzf?9Y0V`iz#>8QNZN8Z8&8X6Rt6**M>PQ>fD2Ih~yNlb|965u3KzV3ima~ zWxi&+$(>}N?|;g8VhW7?h*BJBsjqh&S;&!v^j|-ZEab>S-X9i%2wLqH*bfesE{=5u zv3(FSC0e`?UPlS<|ASC+oKbv7-D@KbMI`G8U&p(Mb`j?~TY)qosqnYC6gnntakU*Z zLMJ(8&N0tRjuvbB5LvF9Gvmyxb8!a0qr2T4$DvI z=u`0yX}BTxa8e26lRDn6d}E_4dyFN=y&V-e%(w!`wXGJR(S|mFE-}LaWQAF3=P7~} zxzGU0-YiWmXd)eRI9AL~atap69xfLaUWWa@#TzJajEL^hSR|9`bGzV!S&V?nN z>Ya8QyTc%x*1p2GIvz50NzVa{sJ_WM|8H+qUPb} zBJ;BG$bXJ^+Q@~+!Hz}e%C#swGC|S&Ozl!fr;tJTV*ZRAt)Kg@M zVWF*)8aFj<)ondam7KXB1S^~)%E;Qq?L+c_Tl>MI!cS@_DFv)L6=g}XP@Ct?!xkd~ zHX=;#7a?JLdPj%7S$(+WnqH~rqjf3XkYU!t_>NiPx=dgYD&n#baY?oaNc(8n9+sB( z4oEL*X+e~mw^-YaZkKj-A*R>nZVb5=83y}-A;h!kRQJ$87*}>g$PrN~8Q=gPRf%f8R0ISTO5rmtJ{*3gczmz70l5{>j!@=>S80V^&>+vK8tZ1xA;UO8;~mPN-<(6;FwJ{X9L;5L05F48+Lo4$*kC^;-=>(n-V9~g*WZTcbjXZCxW zehkn!KCtPh5V&XSx9R7QL&r!qy^CO>TkDNZDj4#r2t$12a7|~xEIP5qLv=X_6*&Z+ z_(EfXrsyd;j=L$c==9$mOO_0iu``A=w-=;Qc3 z4jO{Av-ll1_ha-4nnR1ILa%@-lHrpnQVDM&q)+Wfvfju=dX+wtB7HVR(wq-Q3UiS@ zN3Uf@)nAt1q$^$FHPF{Wbn>F4EP9(D+|- zk=~;9j79dBeft z5xNCiE74c!Yue@@l|{Gd8@T@^{%5fZev>w-L0hyGppCOZbe0 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator.class deleted file mode 100644 index 64439448017f99a40ac38e31b46ab2942a458ac9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9090 zcmeHNS$Eq+6uwH*sBu%8Hf@1WKrJme5N!6%CJ>C9hN`g}rzvG?$I>KGD@(2qBrR~m4*~L z?|VkJ#w;g$m2I%B zSW#$PFMEQ7z~VmMO^7#h%cZ5uE5)VCLTOQr0H@YChK8@u6@ACAb}qzy z#6f>b9Ux1#yexqKuE$%5ag?syM!!vjcRf*mKZoeP+;W9V^ z>W}D^fCYTDVOMw%!wa};g6Hu9=6b<1<0;;cRjf6K1r3iY^kVzFyneP(<(|U>?iWCi z6XbL$zv!V`evq35h9i*zlwGs!XmLluWN1d`3+$M1T$7hw*N*8>s4&pci_yM_gm~H{ zWshOI#x)2P?8N{_jpi-K3T74BOzSI9jvG0>Y_nk1^=hZNytY5L!7Q6qprH z9CMh^Fue@T{nYi$dG3U|o!ed{+embJMWK-b=vL{tLI+wJSoA#C+e=R!B$xs2z6)vXa;c|v>}trahV=HIyBe~qA@_%dY=|grfbYSM!bP!8zhiF& zEU;>PAbgF$vi~1|9!H+xXu)P3aVR2L&2mJ%i)a^du7;RghNPCW&OJ-Sq)5%yUDMa% zG$F%mJ5GrfS&jSYicI6CXSBI0JRmcgnNMD(Dl_u8f)FYW8$Op-N{ghF#Hwy$4tBgV$x{VQaqLuC7ZB zM||7{1;1m62V(NTvP~?=^^r?#Z1GnjuFv(^mQbndv!ktM*9Y=HbUi{ITgrWX$i1@{ zYcCM?BSe-s{X!oq3Tt67pgvF;S z^!2j%`$*&r7Mu;s7h&9-sPxJDCGM8eO9<0F%jCJe^gM{@UFk%j69s86A`?VkPwzZ) zPIj_E+G4Ja2`CircpsqWnR$K1wM@y)heN3)P^i$&?S*r9=tYYqBrg;{`ZDQI9l*VI zwLsC`M64#1ZfXn7ZHzv(?aRFW4w?g;Ig%;+JzjG+c+^XgNYQ7=CEH#mt>a~0Z$|QS zj*RMoDS5+Wc&FG?$do{#V@amnG8D+7RmcxNLroRR-b?a2Bi6(Hf?W>ZDFJC7QRk{vi>0ApN$SUCr z^-!!D-65Px4TXl`OH}$4f{~)=Y_6)b34SLAJt}<;mdbvkN?)P@C_KDMUxT_%>s09* zFr?d;z|)?yd><}gS(HlXIDr)O;P=rK?V(YOrbwl|cs@j9l*026-i_lqLHp?e`8~K&@cTGsFX40*&(v?ET{?8) z7drU|W<&H8en$aApel{uaXC)WG(C-(LeJ0)c7|s@OPL5di)V~g+$zNSTmse~60j1z zKriC#5bH}#OhY{}{gsI6WqPIUhCOLfjwWCjp;zfO(2{hsp7adAkcjPddZWp&+`qv3 zZURLS-w>UN^m2jT6Z#08XYqFq<8Sfz3hZ`~%Ctnwv_kLG2lNqrLRY9t aCauysT_u|ws*^_nZO{$+jJ}|+=;l9~n|Q+j diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMetricsHolder.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMetricsHolder.class deleted file mode 100644 index af3616e632b4dfc7750c571e30e98df55b9a5b89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5344 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 LlnY?Tj_v*hmBb;A diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreator.class deleted file mode 100644 index cd7924bada69cc6bbf70ee4de05ef6e74bdfc35b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9879 zcmeHNTXPge6h57VOm+!(!c}EJ&;)VU3y88I5|#ub69U-;1+Sgi&hC)enYCwjN$~Oy zeDh7qDu02NFIH)lzWW>eAwF52?zv=!o!yxj1WNP3PUt!3>(l4befpgF{jZ;Y1%Qk2 zg#vv9<{YjU8`Q9hcWIjz4ZG;L+-Tf4iguH6>e{@hn=Qv>e0_jA4r?r#YsG7Hd4-m} z*JaKGwE_bKc1tXiTD9Wb(p{#z1O~Oat5>Jy2^`SonQmLUVH(smY)i9iHO5N>cJkOb zqC7x}G(&C19b|F{jA(N9Ti!rXv+b2u6G^rqiMvWb(eRbKiX;1IwP9Fg(_of+gWGMR z%DCX4>>L(iI85ivo%2^O#HhqZkmj&cr<_%%thT{zs}aLJs#UtZ6r4-kUSYhVQ z?^)h7-iqe5&Di3y1a@YuMTeE^Okcs-4y_0S%`%r(sY}bYwQSTXE_E4!$gAVsPBB40nQnIqKW+K}XPhp9_rSt*n%~B*by-7S~z8SZOtz z=oh>+c8kD3*{(7LP7v6&?!Qx<+k6O4l0Ah*izB<)W>r!tnWG9>8`Rb7s*9LxwTbZ>#YCqphz+737FXEV4Edap(`Ynp?yBpo z32WP;+|tsPhscxnKNKDEEY7f=OmuSpX}N}(2KdAhCS^Vei%}!TMMjoAg}6yj*kl|m}huN0bu6fA`!o{Oascgw_5_~a_Pr$#B<8BXso;Yop-a_6K$MnR)G@zwpKCXHR_~@8wIBLtPvSq_!)q*;UIlVaSC7ZdX8de(&6X8b_=5v( z-M|vk%}v$EqAK!hl~`-q*W|2;HI(RE0_9P!lvMJHRvJcS$@`IXv4HTaPNHVka!Pl` zH1D88?C)bJ;~r$7JgjsH#PLqWX#P&ogF-lQ0_TKa$tmFZGBPVlHo2} z0oUCvQ<&zqE<=&p=hkJ2`l)8`^ES728CvhPrq&*CN6lAc7kC=`*?6`@vl0JhAbXtz zhG#5`aambsjsiCc(9N{y6DI0B{t4`nbkUSRfd#y(Boy`(z`pf}zqJHSZLb@yz`NLN z4-3r-VAp=o%iI-sAHS23vncQ(E;A~a0v}_lCP%t&oeC@w*dd96yhQ>0G+?_N^6o+k zEThnJ!1rSRbWxy=8DjK>myjrM7n|@R6;Z$>(2wD-fQ4UV#5Y9+n)qo#e9ZfZL;?J+ z<50I!uLAfP%FcNIK!G-XlhHMN6c8Vh`1dgd?xWUlDekHQpT$0M@vgL}$XUa2uoSd_ zoqh-Jzqkne)Mgltz&04fzxILxL-Lt}ynJrQw_UJyayk^M?gUb1~o8X1sY((C*VK}?!g*-`Zu$j BxP$-z diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApi.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApi.class deleted file mode 100644 index 831a82021646dda8c1428312e91cb4c6badc8f2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7089 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperator.class deleted file mode 100644 index f780c418098e10fc1a36987d390ed79f31ac86ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16427 zcmeHO>3bbj8ULL$bkY#IQMMLwT0n9!CKf?~dkv&%+NPZ@Bxws#kjcHLH$&&nTxaHn z21UeuL2+L}TyRB2TtGm<6&1HX!N0)oK7R1=J+s|2OYXgCnzZobOLFJTIluF6=RNQH zo-;51@3|KMycPdc(8X}O>y(FTx?v67qtEF>hCSqZj#0bM7_#f!(LLK4Dw_@0<4&_d zcU@kaG3SR4=qFC;Vr_z# zZL4gUhVB`*rPd!-TdJ5rxu8VA5P`ONM25!wh%yYsa|b zohoWaOx-(SJGDLB=gS?L(+yLfA@O+gMUs_kH=Ht$WH8yN*NHviW;9Sw^nxZlVN{ES zV+`G+c7-e0#IT{MhcU;oogQ4swpNc?4xyTJyrP!vTAgMSdQj_*J!A5kd$ZcRZfcgR z6<#)VhdR~u@=3kQ)g6XC7+T4o9jbdUw322+WFIT4C$4{ro_q;TdK-hF3eb z45QAXc$#5iI~}&^DZ*)r5#8guV;NS}&4E)rTh&!>zRm;R;&4hoEWg23DLz&WOGMEW zLsRsuQY7yOx`s8&9YaLA6cx?d6<3V{^+DYW8!4GG z4_9U_%mACZOy#Eu4J00fIuZ>FXnS}to;F}Z7^y0oNjf=KYn0NflnPLuM=5g3QuWaM zLX&M;tix;e96uQHILW<|Z@82f@)4^deh&|*p%pI+C1-hIlpV^=`J}(Z`epeRmX+I; zu%JM-wT7hunwyO>-XD^~y*f zau$P5SR&&oMZEF_pD?&7-934Z7+oa#72b0zv?+S8J}pOLa)vfNm!L38i?UUDIkl3tYdak%%|AYA z1KLTSq;lE-E~@h)lS^3wZO8~>k~7h1H?N!ayq^p#Mn6HU)S7@^Y{W%0;)Bp6WdA60G842vIX)adALN~ippVY6nJb@Q0+7~(l>?Dl32mtlHIM{=@!(`$r| z=E}=-BB$+XSY>g*<}>{4a?etV&J~w(dYKSa-JoMqajsZdZrY3EVw&fcdzxhukx%^k z9R^>aEyB8Q&($aM%q2dff5mreXapx_vH@9JWF?WIQS{o!<3|lkG zh%ACu;MEJhENQ!J+vK|CTg*Vi4{*bj!gk!LS=|etLhC=SySx3|uEMaR1#E1E8>`$B zH*YwVBxd*N?kvM#o?H^DpkOt&Xrlk7MGYuvWB!hqjjCbM z%D*+kNsc-a6#DV8Oyj;KLd1$C?-Y|9Q%W=zvJ=P@6{jVI@9ea%H0$>4tW*UJ>^ZPK zhDWlvS+hNpJM?rLJ<$CpiS5VFVe%wNZ_Y}Zv5n_6?Mu;VROJqhIm+R$ij6zi>dDxs zrDBMf()E|_mcV_-{f>+KRt%Ttcmv4@9&GWtw4_LTLR2rsRX#e_@@e5tGG-xb9QG-{ zDC}rEV{>#M5pD_$SN3b+z@d>Kcus6V!kQ^k+*;G;XLwL-h?x(B#PC$sPGmPAE(ET) zvZO^iHS5^-iWEm)my{j&vWqWACWFOuk7jAHZpkZt`CDqT0G6|X7p6ttmrj>yPdaZ- zHyadKT+zCo*x@YW43{Lz&&}|d;o7X|Q*=v9=emwNO9I-Km^)b)r7N?+TbZO%c9ygS zXEqgy$lXgAE|GoNf=49`ITU6n(iRqDP9D+ma0>R)M>oDl=?g-$$P0{Rh0vU$xdzkT zMZQ|>yPEr#j&s^qlncjta5uxDw)xt+r1NN9o?+;r)n$l6EyFcg_EM%+@B?{<>pSaN z(#RnPdz7!1&9s8alQ(oz82+eDi7LaT$vi{2H<3&gXrWRroFbro&J$cUr|AmgJ)r&X zNPB^$eNH=(tvB4GE|*f_O-VY7h3Ouc3|jlCW%k-lyV0`4{VmKc7;eegy`}9Xs*-5F9q3=HK&^anyO)u*dg5TI7abdlpNfr4)y8mL# ziPR&kJNT|yO7c?~eSxw+m#!x0WXL)dHs%=ix96&f*G}|3hI>SBxSZ0s%aXdbov`#G zbbcShRQqXVokzpl5zss7e*mz@5Y^G`GD5nD>0hB|cyc-7ns&}B8K{WzeX>OytE5_j z%uuABed81@I{rxpcNM&sp}x|gnS%E*OfJK$6o#il(?tBP;DZe3OLYqcAExg%Qk63W zAEobOG8>+Pk25G?VM4(tsLmexhbVWTsp+c_1rO7wGxR%f$O=A9b4tfP3O-BKoa8>O z;PX^6Y_1apU!)x)s%0zqGJVVvR4x^Km8b|qcLk3UwzMP_JVtNBLW6>DkhWzTR`4y# zo+0|nnEXCS{2CZyoI6e=cKeKS(JuLY&l2Uyja$L|)}hAO$ZHfoZ3z;I~9SmEjcpp1!C`6hsyLk)mw>m`uT+=+hxlj#BU!A}N`F zDflZvH$$gjTTt+K(q6MQ4yZ`W2MyPy{BMfxq`BA*B7r_XTZ64Q4{PbyW+>>P)^+r| z3%&GwKKkglN^KWlJ^kH4PuJ6k^XPx?^VoRD=FQJw%Zq;hOX%-f>H~UvDgEv9fA``t z!UwtuVH=?a*q6shV&26gy(UJwB1Te91L?KI+nSK3?btyGf`cpRf5fSfP(a^RIh;O} z!zu7OTocpRA0stomWTA;T%-c7jgej-BQ<4~gT#7rkh(E|HxN=Dhh42WWEbb4Q56(J zvE1I6i`tS~wk-#>8#{4bjQXZr)Yi0?a!`f6UKh*ohFFHJk@n{zy%}$bk#3BUT3QIZ zGZ*P5+#DknW2EkunlN*bO7!_?w5o=@#4?BaOsJ%~h3WYftAQ?UIm2J4E_- z4idv|jKwtViIH0BuB$Hx3D}E$lK*O{v#vaw2gb2KrsY6POG`WNI+{aEH#8h1q#dN~ zMR}X9hjY=6;I`93do&kq0+aC?oH`8}pU6c$xpwn{u<#z}n2E=i`D|iH7!`JamJdW?+d-wrYfBQeX%x?q$ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectMigration.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectMigration.class deleted file mode 100644 index 0196156992cfd3a6a8016336387bee35136935ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9676 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMetadataStateManager.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMetadataStateManager.class deleted file mode 100644 index 1669beae04314d9708be8f191182958dd972e751..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11139 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 C%)iwD diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMaker2AssemblyOperator.class deleted file mode 100644 index d226d6aa71bf40767909dd3e2d2cd1bab17719bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14025 zcmeHO+jkpB8UMz0vbJ!OCcQUl*oL;q!IdBh5GvKhapT0zI!0EhCx;e|eO4!rY+aQJ5L(u{7EotTh^$kOi2Z@$}n^Iax? z|IZ&k0)Q9b*BVR^c-`Y>u|X}Tc!RcS(Q=EP&#lHStLQcvr@qUJrrq*<#?uGX^H`%| z?-Vc7t!=tuaqjXJy3P3Mh3L&{G*^R30uKbpHg#&n)yfTK`UDOds~0a`SR?R=vBpf- zF)iDozU4ZGTdOf%!VzW5vHW=g*Yn0Eug!I((ERI$wjxyH24&O!zqmy1Upl3KRNcVYYr~s z+HF?VO}Ej+)dY=tle-n0HN5Bb-1J7B=~ZUhl;fZ#HMePv=_f6>5Q(u6i?I-iF?|q= z@uXgLnWsChuQ#Y~)^#5-+07gd5bdx$_ z*$UHRM)%jqNQgtwd2gh3PfC3)`JRQ`O%~D?XTlH`zpLXS&pT+@QHHgA%N`2v-oRd` zR3PqQ#FL(xgCzdHGIB8MoMEiw=>ARFmq$ywWSTi!y;cO&Cm4^Fl&@yF)) zf3#gYeAs^SU$MRJm*B%;zVAF z!oqdtmxJI53w~_DsfzFO@gBbo`ngl?u1>wk%Vjon&x7}JS3s{wx^&;wX^@=crX{_O zI$k6Lqs|er_sDYs4?kd5XP6e2wRdMqZhFzi(y{Emx?|q?0qX^2^<5aViZvE)RoMWj zPKoU1;2{YJBf{NWcqEpFT7IZOBQ3jkgNGG6HexvQyjLlAFwyh|C_waW_Ra8-gf}AP z%b1K>rseBi3%h05U~)X4w?wH$58Gt5vVmQ!V0mV>1kQLMr5v}L24OGg*<6_MM9 zqjc(s)=>zY8H7$lRDFVm-T(!x(B^;uc!@P_cSqFbP-xxjmJP8p@lwK7w~Dd1P;#Uyv?153;)5yp41p_yg*S>v z$7=yRu4#lT6FA$0%g6*1$)Oibh(sf(3_qM5}$0)oeB%fsaZ9~=i>RHxK4$SCYeu+1Es#)1Am7=7Bb~TWkuJ2wd&&HARHl4KOHD zJ<-3nHze)L1Rm|tbs%s`5}wf|jf|vE4?Q@e#A6+6cXn;@gbv@Pu|I(q#;pN7ak}c<3fHT66hupkv#GD|7TbGf884#npa#r54ZcR;=GX~z)=hQ` z@9E@R@zNU7`5n>oK!?@)r3PQe1ga~8)ZldjMI&x|Ls6mauR9x23z{1PqVP3DnHm(xo85%S&H^?5G(TWydt;*`|@Q;8#z{b|r5@R;;CS>P??PkI~T?VuBrUj+e|2H(aj>%wj{c$>g|m||-1 z4uRwSF2-x{J>;e{iq+sfJS94xg&hhFet?9>)q+^|!kvq&^cwt#!2KPmxCTGL!y)J- zXz)`cPo(1-{Ji7Vf9SY0_$3NF^&H8uiYC2cc^=k=H^eP9cnXj?{4WY6CCPQyiiIzx5A!~A6 zK?%S)_)3EGe1bI97wL==sRZQ&>4gL-H?fc`czhx z+QJ2e+-pj-i*V@^p|zE0%kXl-@#RlI;|EGqV@%W!6{r9!a3#_6>X3T=tpaHhuEHw` z*K10yQ|nP_<|8HQI@<08Y($>&8f*$%Mo;-F{=1I;{8#w<9Io~nd;`7-Z$bsCumyFv j0X8_$1P(s5;U?UI@4$EAUHCq{4?lz-!w2v)_{Dz#gTn`; diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMakerAssemblyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMakerAssemblyOperator.class deleted file mode 100644 index 0152056a505d11f6d4be0e79ea62bdb6852c18ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10206 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperator.class deleted file mode 100644 index c77aa2a62b96e787b63584553af2c8dfa7a78781..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13102 zcmeHN*>fC68UI?5JhrUFj$}K*PQv(zBN;^k%we*MVp)-GMUzNqWgCkSGrQZ8#-5#7 zdS>M#+*iVV6K)81AlwgBK^1wTsG_K%^2RgApFr_O@$0#EX128}8Oa!zUbO0-?q7d* zfBkj;@!!As9T7cDztpIM(YzmoDVHDY-3zh;wI3x6|F_b^y`8%nn-^eF{bJz zE*$Q2Z``)H;}?u9=lQl_d46G3QWz{AFT&{Ps&FH?1ZAhk%YyqM4CLfNtVS`_=Src4 zYZbW-A-e*iFbuQA?YILY?u4)xti{L8T7#lK147Jp1|vn?@;E;E!nJ2y0kyG7sBXk^ zEPs?yq2D;mg@2_06?$%6lz9wUtk-G~k|-GCq20tE!gUG*XBl;lyA`g{eIT--)(Ih8 zv6XbTTRYG!Z-M?Dn zVGfIvN?kZXho>Vw*DXgT@krs3yz2|D2=Z*pS>nQyiFTFyOK!!}<8#6gI*=rL{R4yg zSP605EJsHlSBzxOU4z+X5vhB=%g2e%8;o(z$voc#9mSxZSDrAd+{5vKSMukWk^G@A zhn#E5!`fhskt1_-bhN?LItj^(&Uv?%lp0*ElbB4~j+GLqy1y6{4{j;bT8YQ*ZCUqd zwB7JbF=$PLrH8kf5Sva0e*M60fMslBS;Zo4lb8ji+mtlb%=SUL5XGW?SIGlc|a< z@>MO*LpBrSD0*nXH+r?zxJ@_RO9y&rFCApGyT7>tE=#F949nq9)T<~^&q=AtQn_0; z?X!^-qs~r$$wJxqNn_*6{U{rcTz6G?Qu4B|oYr7iYM&AAvQ^=zXCLm5YTkwTcYb~V z_4HJsdaPy@w$dP@{jDp=C?LyfczWt-*F%l_m_o`5xi@z)x=Y0OATqa^HKO8z!Fx5FZbM?DnlNe-4Q?qa!O~$n(f>aK93o6rg(QwF*cGmtj=Q&&^*~MD(P% znp+a?Wob?zQb{|mOGI>c1M15Cxtp9q3M(S3SyMS=6;*QmlXZC~1Gb*t_*HP#lSvRF z$;hjm!=<`q|k_2vCggAtor!l7z$%D}!)TFSzI1&94OKRC(_> zV+tH9abb#h+uLs>yCOsj{$WX{n>t5~Nyq2%?o$pKQ8-V-%fnk#tU8KNcY@Jm+fcVH zA))og%;=7qDLgKjkU9eWhti~GSdo|!DTrOTnJc48FkSPls&y^6twZ3hxt?h=dM0n$ zg#am?v%oAxTF7Vy{NvagFtVxBPP21&oQoMe}`r4=`W}!aPpg{9mC2v<_?}6};UcKwaZe+h zHJuGii!(>9gG$?kdpK{0#ZmfHNr7oi|kaRWmHa-@6a^5f-`J#0N3bR z*bGyBjoyg@0lsEm#%c6!M%zS5BGSrj`kfv zdk5M(Q|&v^?xj9_>!n?^JNVs0cLihbrdQy1FXry0efWD1TCc-uo%rqkE!}&*_m#h< z{VxS$58>|?j3H2QKmPUv|98`2dH^kn(w{=;LeJU|7!A-7CBmx|H2hvcLnl2*Ln#C) zwU7oC!plm8VS056p`#_jUlj;Muc6nj7J+pr5spF!DqSeJV44!)_4EcGB&wnYf^B`=+ql?by`OlX-)XleMrLa&|AE0NC7*;Ui>Cndr; zddsR2{-H!TPxA>kZ%w#qsiV$+Dv_R~x2=|zt}RN0r|3cop`~`awkr|dPG$ zQ6O|u36^$S6iEzv9R4HsfHHpLy`nW;Q%ckd@dR~2iQ1ah871l>EkSoG8e5~CQKDJk zv4bu~yk8<4?Oya$!M}TaFV*lXun+$N{U=B#kLq-puF})=E_x5Wk3K*jqG#wM^fCGb leTqIqpQA6(bM$5UDt(>4Nzc=F=zH`7dVzinN&JL<_8+FXA3Fd5 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconciler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconciler.class deleted file mode 100644 index 783e9a117f7d4d82b01c6c460db5ba86a884a52c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13816 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 YtcfjU%UBCr!CKiW*3OP&YuWmL10w6VzyJUM diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ManualPodCleaner.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ManualPodCleaner.class deleted file mode 100644 index f7c03552391e395c7a37eaa1974dad1981fc7bf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6577 zcmeHM-E!MR6h3Q06gx@Ngd{DYz!C~L{MZFjD76U`lcWXZXX-RFTrq2T>uf7&JuAu6 zFuVfKz+*52GjPWR55i+G97(oixk@Ex;!MhLleJc7Kb`%~*>87G{`%+F-vQur*w-LO zKzEc;wwSQXk64G5g)BR+64no*EZbZ$SE{mMdXCFg)WIBwTMhHLyu)mdnftO?GdZ)l z(qMwXq{5%N&Klfwuy?vGn|obX3C!x~P46*y+cA2N!Q1E&-!66Mieu{BjqI-I^^k=4 z3mh?76}E6U2;3|VJJ@px`yJ^igZJ?2Ub}4yoaWjgfr*-Iat)RU%tbtHDkaqvTp_bJ z9@q+pn;qVyhP2wk40xh#B^xHUoZGaJKRDvF$qkb!G-@;BF>7(UDrBiUo09C(QR+r6 z>gYvol{O`Js4ZP;G1oYvE@JX0ZKQV)6LX{F=SInQwKUonLO+Gomdd3#^dV~~Vceny zv;EIDIPFdJ^p@QTXTbd5Qe1eJI$XI=(!2~Z(Q}1)PKHT(mGEimO3J8v+~$RR#vz4# z&BXOs9Tw4zk>FE|Lzzr58j#F1%Sb*`EE5GZWz0Pbb-H~4R?~_ z8Wj%p>?VIGY~C!<9o(6G-3o@8$5hxI`Iu9N3Ud@k7!FH{E17sZN$69sibTbMUjx zZlz5$^Rj%-Cz^>3U7)_FWCm9bT5;Pwl%{8K+*E~?GUhbvek8ijHD$&`(wLUqNIa%1 zLje}y!M{dUwm=4{TEf; zXSA|WnS!?n{GH*lc~+S`rfkY`JR&e}#R?SxTi243CF1Y;GhPp{_%0#S=g49v(Huya z6dfFCEoP&7(eO(_7;W_8j@`r`SXm*koibDM0p@xSZy;=C zLd=U6woI`dlh!Bd&>1EVR=b*5ymL9`gP#>0gTQK1Y=;w|c9PLZ;a(@?r;8TuF-3Ar zIy;h5r0?3eS=ECY>6Y-fq79e2sPI_{22WBCr_m3v1LG+$C`Jq#M5m-=HIjt4ISKz4a;4 zU^iAB4;MUvnH}LcxF;Q8^~ixYfWQk_pr3>lcoF{sEPw`6L7Rs{&`!fl(9Xi8pq+!u z*iPced9)_*5x1>L2)&gIBtifauro_YB&j6}$?sVe2EjK7inV ze^dmDbI8Fej?BTEeP4pF1ioBP@a6jiUjW{Qclt=hK2oml(^>-3kBLa{!TWur5Bf+E zKcxhupA(U8z=wULkNQY{#6q4vPC)uI0VxMJ1BO0Y1Y5o8J diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/MetricsAndLoggingUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/MetricsAndLoggingUtils.class deleted file mode 100644 index d20c442f11f2a74d2bae9fd12c43227d7ff37164..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4261 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 Y3-{nYl%Ncs!x!)fD)1P-1PwO-0xrE^dH?_b diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtils.class deleted file mode 100644 index eef1498448c7cb813196402c859768110073b9f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11074 zcmeHNTX!2*75q1}R8PIZ4}JAc+09VIb`U0Z zn zGq-_8cUO9Mt+Z#%-;I!WDnf3FDB0FUXO{oEbP)VMEF9!QyIgFSffuQ*3$x9T%JQgg*1GpUA7H>?Jx}(IXe9Kt(4#VFPt*1tVPvVRVe?9_^wW@aJPO^tIj>SNsdc0Q zo&B=JY!vYw1Aazw51TbFW;OQMRgX&9z>mA4<$bi~$5%yrp(%pIOLjE!46C47yeiyC zB!St$ak<;x5YZZ^IS0crCv>@gjYnSkz4zmRWXp>gmYjVY?9hbfftNf=ORXS`#L5PD zvtbOwQ`NUjbZSnX=4#Gpu~VDuKV&GcdaZz`H6+9B-H6l+;v%mg>nf@?oJSRTn#BmI$<-W)Z5%)m>LZd+MfMdq_*g! zMV%aBiza~j=vJF4h}505B%|mm;r(pl$^D88gF0_4-%4iCgv@@`y#{oQ0?xn^@9KJ; zhT(2FT#hrG9*xW4+NOv<%DQ#q#dT+xQ5LozWcbH^h3znTO{9$#z{BcmDDN6r6@~}h ze1y>8QdQ3I^cY5zfSCoWjGfpo3re&#O1^#OGpp;(8ZU&7&cHOnq^OL&Umw+5~mmPcdIvC57?$;ljpJ>);wS5p6Bg*=V|zXd+w^&v zx5=H#wsxU}iwyI6A}@Of*)+W|knAsUbI0(r|3Ta8D{@Pedv-^UX3@aP4~{^heBaPGN>o zD@>05G^nupG#$Pne1^xXjx<%FAXV%lnqXYkn?NF?%No`ekJHPd%moroaSl#irwyJ& z^cIMqd>qkjW}0dmTlA8Op!|JrFVigX4yBr`M5nN=IrP2mECh*2Us4&>i8@7Ed^GjL z)iCtqxgZ_G5WPy($?B{uZ+($rPOrDYAc@K?(s(OR9BGu(fS=)H{}fkS-8I`?S;o;B zyt10j!RP6HABu#2TIgLEW^cb(XfaGQxCM{W-Dtya;U>N7lb7%o+7!f+-zG^QcV&R7* z5G5B2Kc)~I$}SduLNZEu-@?y`z;Fv@;TL3=w1>9vtD*O<@?=RT=#m%5bp5tQ7s4?f z2l1mfzZf3HK^&q_57B1}CHh;YZ)fN!qyLpZqVmGA!@tLUf2MB}xS#$W%AOp=G5UNs zUxf$oAbl$nmE*MP;cV@RjM8bMlyb@`J))pAlTn(;@bAUR0{>WnKUm=3r@%ii;ce2a z&;L|`Pig1;KcK+-1-^t2N%$ue_zx@auSobw34dCF|A+$rx`h82rV9C|3;e)-A6MYt zEby=4Nqn-vpDFOEe{=mmrNIBLz?X0q=Xw#4`fXshrxm!rNw^y75^fMV=M}hr7PvB= z#it8-XA5};`d(1r|0Us{!<>@u{3wnclW>=?V2pcA!Y$%*A+J-&JJ5GY!M7^mui&bZ zufo3UY=JA`Ggy&u1HY*BT$FIDSd(xAIoB0(4)#$A&*QTaZop54>lFOTcmdZ7`@C4# zXMk7f`KpBf96m4c9mx9yg}iS_xG#Y#aT^NUZwlN5nzS<}An+#rKZ8fGi7niKj{qG+ iNN@|=cp0zYYxoAfg>U1#xQ*BG1N;bY;HUUGe)%8Ypsrv5 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconnectingWatcher.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconnectingWatcher.class deleted file mode 100644 index 1cc752146b8d65d2a7035040bed2b1893c1fc352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5571 zcmeHLTT>%N6h6&uNEVhA7X;T!FWv&{Ca$i!OR}si%S{KO5V3shOq$TkOn0hhf{V}o z6@P{FTNnpxMtQ2Y$4@ssw=RW6refs?N=a0Vtz$5tFf*}HBUpobl z30Zi?PFO*xf*)w%eJcv8!8Hq%E;w$}54dh`FyH51)jcijaYsqXoj}O?S1fRjxVB(~ zz>QFr%VfP!u0F&635?n0&CT^a0<(6=KqzUedY$VcGHLFsrgnHaR!rcoy;?)+qjli_s_F*3* zBI`!JY-uMj?sFGCQ<}h(ZL=zO_u~yDoZu&123t(lT#f`2_7kzDq~G*HPv<+9C3_Xa zr(_WgFzQFYF>xed*`dq0GgcB(1SuHxbWf$#d#coxJ2Jr{y` zE@T~=yCY)E7+F&_Zo$hK>9(A8t(6{!S4ifMFQrKx_k`D|qr8T2!^ENutuSFcf0<@8 zl_O4T+;N#kB21rSR_AmL^64tENVQc{LdZU(|l6uHIx z9Uib63s}PcG*Fb$;IzTBnHau$P$favU|6!5KA^6L$_TFpLDU5gJp{HPt_NWRcs+>1 z_tAr9+iSSO5drm^cw}JhOH7)k!DJd8JGn(FeA<*Xekdfb<>?NdWTs|AHusbYd7_Rv zWmsK!c6Ca)dLIaC9rbaQot@E0lbz(*XV2Eyap@?L+=(}4SJ!<>%K?-kJ zO0K!e$E3jYIgdpcj&XR8knacQ<9QW5LUILn;XEPLSxDeo#}SM7^xR^6eIAGV1b$EP z5>p_~Wq0U(04B~2oG6!vb0%{i5Lo|vr_H4}h0j>^`{7V#Lm2p+OXya@i!OnCrOI*_ z!mM;)a@39&TV>Y5s+nzRns$NXC7hNBoHuFb=+puncHHUXbh6+R9Fs&CV!;!%x!uoL z@RY!0S12vmAaFCOzAV_nNQPmt;8TQ%xMnS|aXu9<&iWM#cDqJhQMZB9o}H*$t03C@ za2p5=B)7cdHA_%w~rse7Es?B7Dxm0=$8%H@kM;!WDtH z;T`0QWanTJ_YD6M{&`XH;OgO)pEt3oBQL)#zVag0$z9aQUG=t~pU(XANmtWgT>EgD!ci6)@}OfZ;D zRV%KW)s4n33ddlgW5SpLTVqhP$io8?q5iZ;tVQj*y~&4COZS+;_|l!%B(q{dEWlX? zGkt|mtu=NEX4u^AZEZ0&Y7fIen5ZKachcyfV@*S06h8<`#jO?wAqvGUfjV5Yc@u-1 z(o}jzR}PJ?^o;Hg92$Ky2o1)8HZF*`6Rp6JPTcR1Sx0petrbse#V@ro+zj1y%BW+k z3rKW_H>?!*1HrYQwt>N+p(EsorGLLeA}OqikitF37VSma2>IJU9Mfrhujvr?*Yu9DQKlb> z!i@Qc*EvA;AJ_hz@3i^pXeEzpikH(-zApXu&N^?Sy_+#ZP5Q643{bY`a;X`{S-BME z@lSq5`CO7;-wz7ix1~2c;aZZaHt%YuTSQuBP^zaiKa+kfivtw)gD0)EFetCl0c=;4uh_%| zxW=G<3hSda5!Jmi7lWx67`s&yI|zUZR#aj0zcVmNPk=(Nol09qBSk0?Zkpci5z>#8 zK12D<{JD=X`;~fQaGsu%=|5-S0=<{JC|H1t)EkFODe5v@q1NkSa1|C|3a+Q)SAPI# CP31TM diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodEventHandler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodEventHandler.class deleted file mode 100644 index a14e1748c9ba19ead0b77f624118d5b9c3a28e14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5684 zcmeHL-)|d55T13@*gjIyrVYPZ;F^{;EyyP!9uO&&+E5g$mj>db0^Zhp6MLJxU9-1m zHT+{pAi)DK2#J3QF?V*bO|HGOg+WMu$X#}C_S@NSW_Lf&Z-4yo699Y)A5@{jK*UCP z5tqt)#{1lp+Ka7`(Rb3*Jv7{EZ7tdTm{sw!V-gv8GguB$J=W^Ltz;#-;+w(`wYI?^ylEl)}5yembP_(Rj4yq9XasG z7;S3s3cGasP#KJM*vG&XI_k-gTd9@XGrApO6o2A6^@A?D0g8|tGU{=0%sc3ANZlAR z)i`CUF=T4gamv(&8)%GOrL7xrE4r>FOnlxW8pbh+ghm>RM(S!~x)}z3%BZJ}b!q4k zZyPB-b_G}Iv~6@x7rL-qu=L+&NF;^P5z@g@B1MNgZDIM+jl5tmQD`M(C^Na^>rN;49G+o_Q}=lr!xn}lZgk$^ zJ`Orz`!JDVQ0T|RkbV3%kp?3Yn*}S*hQ%*5>T@Gg-coU7kdqobqnpP4CWX5<)W-#u z6B@bXn30s;MUvPe-qF(%Q^G6NDKL5%YH=)8=gS0>qJ(O7Q+eD}0X}c4BWI1+^g z^G}aCLH0k6{+J&f^ZB4s#1-wA`GD`r^!Ls#KSuLm!3@4kf9e$&6-TZV%rwC&1z09N z<$=nDq&(gfQAn97+?}%>5;N?nsdx720dPonc;1QY)Tar3akl+C7Nvqx%4nY|4v7&s zULz^ka?=nt1AHNa4%Fbn3Y>>m8LV&mqf*LX!C9$g)t3sNBvBj9L3))kSo5{u;nU&O zI_zAsT^TdLd6azqUU}MLa9*niLBOE4>C-ARN3W7dvNFP^>dRP?rw>vcl_?=|%<=d7 zXp9VSs|If{xc>4I5mkr?T&u%gz%8x$!eE}iCZkWEkrqln)d!!xN$XNhD@%dTWy;gF ziSUj#c2)rExJiqnIgDsqyFdPa0l7_2nu z$}!tvTBC}qaFao64n;VsyAkcFF;Fu9{84r_G>QMRk$`2+V44N%kVaNP=R;g l-R$kcb$SDA(4Rv*Ft`El(f7O5t`V2FV3VHjQ>y|u{sc%%YK#B? diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodSetEventHandler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController$PodSetEventHandler.class deleted file mode 100644 index 480263c58e3b5e2e6b9abd475d96a4f71400cab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5753 zcmeHL;cpu?6n_p~liWJGm30g@;M$F?gDH_FJ^&q)wldU+>k3Uf!M-^@H}QIBXSOd| z`Gfe%7bGN*;5&a5;`x#)NqgH}A_79nhup=^&p$u^-n0Gk{`~9L-vQtYxLbx2fkUHN zJ*Gm|pVJ<#3spB(i}(joS6!~DRl3fi#8|F}9n=^ex1!^Evk(17g-vd^l(bq!5!W~S z9glll+HERB>?*?ofs5%B5tZ%wZtFQ`mcZhDA%%TF;Jb}r29|8zc}iemONG1)RRYUH z10HLwbOp|nOSccC=0-(59{NnhT@g_$l=Qn=wIUvy&wa1D-{F49SwuC0x|AK!Huu+s zstv@dorqN%h&Aju5o_HK6*s0o&XIGK{`&}t1=A|#c(xP>(ZNoeBVW6b=PHSLg#7;_B)$9+ zE22DS&VgsI_Ps<(im6M6cD_|U_3d$&d(}P8lw=|jX}S}rc02PNo??hs4QPu;O&(!# zqp}Y7QPMH&qeMhut{r1T_V|lLXdYv-nX}?_n0Y0rN40Rex#UQ5irL_qylK>KOmcSz zDRK^SEKM#rW|&RyaLlrq*;bPZQ@|?O&H+7&6gv{K{cXaNynt$UTzcG)A%EGBhf2q} zenbg#=AWE%OzeN0{cC!7L}$Z_9+$XZW<$Os-2a^&dc^g;oEZY){_W*}@;z6GW)f!= zA}r#c;zY$T8%WSrPMw>eWyR4QQij_EE@v&E40i}z7!w99-4Vv%DY}pO zE;_REgd4l9j0GPEyn#hffCVUFL@#2yjIB?ww}fx+H>iBS;{5_ke_*Qw%lLE{Kt!RBo4+m^-lQzqLrxIPuz&lzls s@E%%Fg7@Kr^zFkMz5&+pQBf?MhQ?{7ayQ;Rv8S1xF*9SU z;Q@FDo&*UbxaXk|XV#9Km7VN5YKoA2;q~t9cfL9Eo%uO?{{H9pKLOxt__Pd545T$t zBjG|dp7SAZ2;H#Gh~#I{(0w%AY14@0z&bRO25v1T9eLbnkDx#3xQ%XGD`&KnXzsT~ z(wE{;V7!l!R*{f`JE2t>N(@%hjwDyz#$M++Mvg&M@dRz3N628UHF@v(Rd2qUh1w;c>m2D(5lRQm5{NFpMm6Qqr$ zz!V*?v<33qg}hKnEN006e}<%o-@pl(7t954`e@%DD8(stnW0_ibjU+@+{d7r&C6Q4 z+nu=&U%(`&ws;3+8zm(-de-KCnlyubFc31%^&?}lk3S8B!334d8F6Z6&jby*5neZ+ z92w-44Nm1vr~RgscW;~@=OBF!OX>6|M=oeHNu_s@%p<#_=M|=aSE`!>dLVUlL<#ug z0S@veRJ-TX;m+;3I=cuR+pgyHyGTU zQGD^GmX(%J_-K%H&>Z-q)Yo!!#O2fR(K>D{xt_2LRO?k%o~VYj>U1{iA^$dOt!&#? z1>RwB_x!356@{o4MVSYeG?0uOql(s6?MDW;DHU@f!KNAtD@c!TeYTdCm&ht;?G4cw z5hJ-)>2cfhg(?QGZPuFfww+Fp?}S(JPA2%1WuI1w7%VsG=rG&T*P3h@?lWj#g0c*5 zon6)2U~oOFV;O3hO5bQ*kh8nOTH4zVC<`SODv!{*9c>+iKx3!6=Yz2g7bbkfjpzCsaAHbV%lb#s71#h2X@VF7f zt!aj(I4q5ts-t!Ff^ZqQI%l6Amw)f$KGuY1e?bjJ>B~s5TcNf;ZC*&Q2 Xd+;Ht_AxzI$it85w+Wx5sC)kc**9Cc diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetController.class deleted file mode 100644 index 7f8a4e59eecbe7e82e46afee1f1d4b886adf2aad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10802 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 TU(yTo8~Ppnf&PRj|I&W}jVt~b diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/VersionChangeCreator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/VersionChangeCreator.class deleted file mode 100644 index 129ff54bf5071d52cf3473b0389feb34783f9881..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 891 zcmb7DO>fgc5S?vH9GgH&pg{SMRz0OX*mn|oiRgv!AtglOxY-QJw)U>IyN=raF(i=S z&W}Qj9fwd_A#t%iZ{NEu)_MWRgNyj9tyN=%Mc zcw-Zp7S5yH0Kz%Urs+j8LF<&!gN4v@99S&r0qii?t&*h#C-0`GC_RH_U#3bcf6QRJ zdpKdRGcYp@AY{^0?6pk0jXDCx) ziIfX@Cg#Wwl!{47xjsLI0 zN~g+lV?Ezo=gOh=-Wh9AA5=G`=meDcZ51i7@C4jTGrbSXIU~7+RD@OH~r0 z?%{AHyvHCMsks)V3kLl6L4SB%bnlqx(a025;z^Zg|B9)4@v6}Tuus}oMFMzAqORv- z(0ZesBO_yKlWQ=bm84$+V2c`X3mOy$6dl!Q^c9*PJJDxoeXlsX^ej0*+gy3aqj!Vi$MEDA^ePI1 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperEraser.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperEraser.class deleted file mode 100644 index da930ba542a796fd73af41d8965e4167d73f310c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9084 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperVersionChangeCreator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperVersionChangeCreator.class deleted file mode 100644 index aebaa0c471f088556173ecf0dc24ddcd46c5e4fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8669 zcmeHM>2e!I5bhC4)>0gjICnzG#*kohNE`t|>=+Ue2jg{YY{wx9*J?GACf?mq&CaS~ z{__aD053rmRKZ`0ci{#2LD92^ymD6B6%jeA{KFdWOixcwcTayk(|`W+%WnX16>JR( z1nzpmsyHTdD-X<$Sz)~5Nx_`&S%tT$FeMii%l17<#de43dDN-dTa|m9FH(wh8&r6V zyVaKIHfdE*HBW;*1P%pUZS1Zr*B($yYOs&M%Hu4WwibbX#`4XZH&zK8H&&^|U5nYw zlqi$In@uWa2)rnI`cbwWlt?qy2{+;qIA$!GjZHIJtzvM#>9>(&zbC!rNHvOTO`4K6 ze0z<`xEraCMOs|p^~3;y6G$JZw|7ACZS#7}fWQF*3F1#2JrD^tFSt_`xS1a5)PfF` zX5Eyrz%k*3v26jhwA(~tow;bx>w<4mu_CzS7Pq5~#`DhFytza@&ur3pE*w+t98U_w zT`9P2Q?W`t?hA_&IM@)>Ykf-FHs5lnD+!Q$1g2Z8*`l6Y7`Q%e9Sv|XqD2Gt6C@(RAaJ_B2GEygnakuHfyJqvE)uGJ#;As8BDPSKyA9TyLF#b-asQg% zZrcpqZ+e5ko+__X4KAW`wrz4l2rkB8iX3)syQng5cW7O=xYK5K;J?}}b3 zuD7UOrC{&&h~!#Q~FQnFnw4fMLF z>meAgcKc%roYOS}TJ% ziTN3%DZrmOBL(_1<|NX949cNISBXFdzqKG+cn*n%P{a_Vqf^I%gE@i4r0)5M)`;~k z1|Z+UlvxjRw1&++=sgNA3V7YyrBg-wL&_5AaY?E+`#*$ z0!EdDJIwP`SPmwJTPPKCZDoTqyfZwKT_+JY7oUV3GuS04alOx&^K5D$r;8a3A!x9Rp)xWk46{bin}Y_XU$=axM#Z|qSppLVw@iB@!riEIk8Ck~uextM&a37?pui`)qKIBE zQHs*kv=O?48dzgZ*Hn0i?|R*V*`D{o5Z-3yX2#%s0)ORrXv*bn&jo@KIN1-a(Vhu~ zsk0NP=p$12VN@#0aUgT4I)S%+<6n5SPEhV5^K-3%5&;ce7x4t6%c+E?st`V_3Iyn` z>P%lH`36DFNE*neAcZJixzb%@iBg#UvulK8ne+YNgbLplzCysyqjHWM(QG9C^Q1F}94}o2j$(Gv#==Wvj}TJ{oLTi<$sD@ic9_R7OSqRn$J!KgX2GD2WvqIZl0-xWpZF%5fpbc zFfav5edW>M7FNSTfYM+EB@ZB91FW--C(&Pnbpl6{JyF3_1I(i)k^`aMH24w=V#--G zz`EcI7|b;I3ag-r>{)|vu+Z6?Bx~>;TB5fvtng}3L#U7MjB((P3ve3LQNR>z)S!X8 zPrc4*&_WrN&uj3Yr<5J~C+c7+yt1$3Ro{d2fE&TTy)Xf%L4z?Yvrj+~NXMjAzT1daynF*qKyC!+Rb&=%lS)SiYjI9`C4qVKa&`*JY90Oz7skNVFC z?LL%i5?;aIS8?_wlyfh(rC;H~-HF$JhUwn}o^Rr>q68d$3xCIh|4UGY3VsoI8{WZ{ z-^Kq6@Lrdbq7OM;O5xN>;Z%SR5}ZCv;dD8Llb_1zN`li&3a8l=PCuq_0+@r3ySw|O z%c;=a-L(`>Kc#RgKs6y#nx1Z^aQZuy(?X!@&tVhWN%WXSSb}Bv0@mO*+=07rAHIff L!2}B^G=cpK;RHS1 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/BrokerState.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/BrokerState.class deleted file mode 100644 index cf3a06010f0a68963dff18f2bde0fb1c531a0dcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3706 zcmeHK-)|E~5T4C1+t-kUhyo3?EFlHE6klm+sW6QMk&9fM2H7SOyr9i_aTe}&PkVb- z-9N0AT8X~%|L}^Ky~|;T9N3X6ORadgJMY}gx3k~Oc;;Td{_6z*`~)`(Fhk&8q&+ua zLb}gbpSeQ0k zPxZMTB@_UdqNOvajq3hBLd!#eG!R0pWl&EAp-)>f^Ii|iIm*Z+%kuoZoI4gfN2(Rr1Oy3 zQeyT%Th7e@?dJQI5@cfw*(ktS0?Wf=*0ol;2y0~FkB8C*!|(Gh^;8fFKXHVHTA^n_ zbc;Hr&OWDI?)glkQpmjLtjFoPP}PG#SF=D@4+1?DWPx6%UBx4c=cEBM-aa*m$$twm z!lRg&N>!UmRqJZ?csrziiXc?l*rQO7SzhTLr`ZXQtCDyT8{y|-Vd~__sZo?sGYGj; zO0#K@Hq|$<&k!sx>vJ(cDafFZ@bYNcaK5v~yO^uzW^ zcb+2a(~R&m_adlNTTRK!#+!1sr~0y5$kw?!0TjdXCZ zihu%Y;mo7e&;EpS|KMr{zQDWH1KjBX-WQYK4*GBrSNJgi>v+!)tX_(6DF%xd;{b3eTExaurW;^h96h__LXdRt0xrPVVI(%)mG3!3Yx15PeQVHdz8Kf%0`grYE@UUN}+UQi?zdAkk3NqvMPcmtA{hJ5|dcLjnoz z{3ygYO&j1)i311E_>D(1eoybm&oAEqJjLA%ErAcg>#|nHmWS#{mBy7JdQ*QgrEAEm z=zOWGd5Gj!1y8}vy{2-0kgk;Hrbg+HYD#j;xME4IIHOi9sjUiU)VAcrQIOU}S*xgLGV)A1ZkWUG zGg-VMiC3hr7XP*(@4cJbXlgpwOloD*#xcorj?qaa<4Hq#?^L9Vn{sqCL$liEmwX?yn z?QDE$*oR)vPBPqNOZ_cchTDG_?NlX!{%aEgn`*?`1>A?g8rvS6MUsbO#^@1OTb%Q+ t=pGF6&**<=)WTJcsR!J<&auC^=h(nCMr#;wY~ea?a0c%1=`h~JtzSck2_gUh diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultKafkaAgentClientProvider.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultKafkaAgentClientProvider.class deleted file mode 100644 index 074182ebff3d4d455d8ae3b2c102d8b71d9e064e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1776 zcmcIlTW`}a6h7|8vWBvb0pl_*rsAQMQ1ZeP1*BMP#7Ww!>(s4G6Ay9hljC#wzR%9@Ki_`>z;mcMP$KXlHQbMxRQ>_$Ghb>y zwMNFDrLPlVnAOJTQI=X^#s(u&of$6tm!iY6$i88nL$=-(%5Fpw#~q{lG8D#vc>>Et z+=!{Jzui6%+&Zv8pmmY7r{yEC@JuRcUl5q9H}(n4Z|G1saG5}LT*WJ6v{{5Jr1bTj z%3F#0BBWf$iHw+)TG7Plb|m8TDRs-Oo}i)N5i{tNFn-9og4U$=hA?>}n7koOW5Woh z8V$8bsnV9l%<>+!7*l*o5R2n65fLvZ!plqb&X-|Or;HPAEFEv9oT)r*ThLLX=k>Hl ziJ&uhrZEbHVs-=#=`Z?|swa%h8)R*Sig9dS*q#pQY3zC22xi5}&-Gowwc;|81v!st zD@u1nycuF9X^$Fic@q;$E-g(nlq@o-Fk!|~x^$qpdV|W8W-1gNsj#9Be!+Pz-Q(UK z-OBqIcu}Tujs}5`g>=i?ePImBdkVPJYRYI1nOmMLdxrC5PiH&3;6k+m4lEP6Q4hw# z-ot~dy3Jhp)c_lPo5gKmS`4*JU?tF;Mf=Rid_6SI+n!7bd<-sf8fS>3Nnmw4vjmcQ zFbPvLm_(x4xKL>)wS={-?PjQ(SZu1kOeI3Go}Z9HT8M-jjM!~1!W{x%{^5og?KqpY z|ECA6dat;SU(1~6M>F^+t``UH6IhzW-T{iXN&E>^wq%;3tXe4Q6dnRzt@vERKS&AR z4lLqW#?_O;4&eR(_x(!c8!Y`Qe6HfSfIfhGR&cBoa~H0`bzGr>VHG3Y9D3ct_bA#N c&Ii$MPl;BY60HPlxTgenvCcee3GTszzm5_<_5c6? diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultZooKeeperAdminProvider.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/DefaultZooKeeperAdminProvider.class deleted file mode 100644 index f1802bf22cd8ee33d58327506890b27012522d55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2478 zcmeHJT~8B16una`+b$IlQBg#P`qf6#zW8L-gdirBA_fqHK25jNc3^j=nVmN1A2ZQJ z-~9vr8{?hb*0!Ngkoe|9cV}kL+>bNo-p-F-U%mmrGkEAgg1}y=y<)(GEbg-oD+*N% zjTXTtQB*CinNhmv`R&kf-Cxi=RBi3?;tO79ZQs0CYMpb0uhaq|-)PklHLe{<5}1js z`b;*8o7H{p83!f^Y@NsHXm122o(d_ zn}*-vHR`FLC46RtlC-5&)#pL@gu3aSCZ{#-`Aj3I#k>R7;4~{#p-WMrM^T|mQGcOF zQI^&e52;j!2F!R(YS1P>Y#|eaHj$5lJ%oY{wQx2MahxJ(DQ&3I4eBvz{Z%>bW%v&u z-9V3ZWOxzH`fk5-inIqs3M1QU0?MDDqvN~x)>$jzXl&0=-CK%!G-AzI50!tYOd06 zC$asKZ8y^u6vyj!Q001uVFw{FTTveKcbOJ;-d#+ZrU(gqsGO$*o>*2T0&}CPg248O z(94ysE=sSC=5=%>Ul|rAI&=RVbLhYg0+Ry=PherIEsY3xS$0GykcSo9o1#{WG`N*s zIh0bcNXXAqH09ooF+v`Wa}4-coeV1Pe*q2sqnw3cJn8M|#_&?u%E+E5;OIZlfh7V? zmvRU05||ox=)nD<+eLhY1Tq^U46*y~U>gl#3Gh0Azl(U|N#NUo6h6~9dmOC;xL?8D zo6UTNsqYcyGCn5|1Gr}vpP6Xv!WEdq8P-2s!=2Z0oW$8Y+{BT^FW|dpH-+Qa?yV7a Z7f0Alz-`=_;RH8ycoAox?V(&)lbp?C} zKf)6dNbnB-gc#e2(m?l)DA#AM^^cNPR6Lsie|UQR+S|Cxs@P8oKzv9$jvz@VeIR1h-vJxmBGG- z_Dx67(GsO0N}FOfSOlSL%9m7aVPrxWYa;cGBbmaswNLjEUYQ%gtoZ3}VMB1OxC~@k z>Jr^dvMSL!wwG#^=%ZNiL<37TWkpMvQg&mxL>oc0F2b6R0ZIF&L<61JOJ$30u7;sX zE-j5>>^Ibs!VqJQZA!EDDio=VXsmp(EfwaljdyUJwCP^!GF?qF&#Wj@iAplyJ&!VX3Da&aO>m4&mgE?t9yMdky2OpK`Yn%xl#fPqArHs$kb`*w3k9#=?wO}* zG7jcEB>!m~Hic<0>~Ne-p2p$0$&5_)-NPx{mJxv$2O3eM6^^57VW>U{yeoKv^{sko z39G;6BY^#-Y`KCTrH6#Y+KgW=}tvZa`f4YKzBFG5`My22Qe$MQdqe+JGIa_2Y3 z{UG(DCHKFy76G@Oepx({NzYsvE$#I6<2jdCAB$@*J-o?eD(xh^Xb}!1vrU20;k|KBAvnY1S0p4a=6cs&J97jGz4h^ XE~FS2;THbSqR&eh^%b}VH=y_f1uIdp diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/HttpClientUtils.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/HttpClientUtils.class deleted file mode 100644 index 0cbcbfd613ce0a9ab7a4e9203bb12ef8d5edac37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2114 zcmeHIOK;RL5FT$I*$qp#EiKOiro6Ts5)Pc2r3Wf15Gh6Kwh~8g*4=eU;>dPN;lPo< zgai`Y`B8{Tva3X5s}`vjBoxW<Mr zwHw_br+prTOd%*?!8-WfSxPK=#jrG3dYjisRxGr^D=cfE4XLa*M& z*+@GTo1Q<4Yp2`wHt-u8EXH-XO30@(RJs4^u2#wFtvXq^XG7Tp?A`ng+Y*^rvr2B=|g24=CfaP$Oc3I6SGP=C8V$TiBJRksxA-v{uQ%#TW6(y7imTN->o=R#M%^zk z>{wf0`gdp%;-}Uc8_nU>F-ExuD}EDnOdyAoj1F8=TDcoYQL2_V8698mXr~fc)m@dU ztytdF+8`7~q)1i!J2iUIN?-i~qca~yuL&y>iIxm)o9b;_v%YU`7yBlSC1RoNTX{=#5b^Sotb%26jzgo}2#1E>72jp<}LVTX#hL&Zz2d|QUTPL;Hc zb-olH3Ex+~CHbJjuL{Yue*^`0h70a?+cGFtlXk2k<#^gb*O3#hvYiNX<9*|m%3P(q zqg(Q!(y~?ItMIZfySFXgoMXzHp&o2mRbfvYbCBG21fwQHzzc(ld z=mgD8(k#t0I#R0byQ$B+;JrOvL!tFfvL$U(z(9;E~H{=Vh?tdpn)=*e7QO z_0uYSfBoGy8qG%W51@IYcR?;I-~XRST$8=ym8VNXcjcfFldCFC;gcpjp3)qyLw}#; z=@?DW0iZlkjtaoV3=V*Q$lyufgBd&pJe|RZfDdQz49(Dwz_>Y)W0sB}$4@{$<59ei z<9`WCa(D+X=*0b*Q_qOM0?N@Zc=|Yk!ZUbI_Pzr;OXq+Xc+cZGVDNE$hSCUzTO%1R p(61Rizk%Unw%5s40(-^^!qd%b_M;GZb-o9Udy#wpU_?rL# diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClient.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClient.class deleted file mode 100644 index bf205ba2e5eef656622372370adbd3f577a0b0da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8699 zcmeHNTXWk)6h7;u@ug{+gf`FuMJ+c6TAMawL+sI5OdYw zrJCNw{_)AuUA0~*s;#D0(26a!*wk8$g0@LuvD)vbiDPy;h(5ROIv&>@{!q7iGzI4f zEadlZ=C_%hj=HdT&iI4-0=fH<=M3R2kh zAZ{{~1>rKvbeMA}F5BoO^S$DE$9dG~G2Hx-lZgtZ5kQ5zimvd(F3qGRU&*A`E#320 zha>!241G9wPYxP{_ZYr^88m3fNsMhU+{Q5W1APpzY$Q_26N+d(E*_GkViu`!t#K z|I%fikr(vs8nZdZau>CSiqNLT1A}&jLVbqZa(jVcOsVM(NT2C}BZuPa!2SPjjYmjLeT>h7`=0AGm}^j9oJf1hKwTv$D@E8Pyc5O} z1Zaomp~Llq=Vd@LX3xM?cxx7}z}o~aW=|G)L_z0#6-ED6&)%j?)3HV)>T0f`TMu<+ ziuTdXX})WE1hytxF2oYm?Wd|tiGj}#%U`UQWtYPRuoS#Urhb>GNR3QBVV4<8M2s0o z|4D8cXGu#dsZ)*SS5oBElng5DVlwzsjVAHYL*Pu?Em1suxRkA8_+D8)830poi;y2B zB81ciiqDm!Rb1E&Mk7!4p4fpH@H>=;^c#V%qO#oI%2^@$l@xqTrsgK)E~i4YUzLvE zI`IgpJ$foc#ewStl`$TT;wG%9cwkyPJ}>n@rU=l9Z^npja8s@l*ciPj#j&G|d*E?u z(?8kXFohDnI9x#W4-%8`IpX@7F$s6^3y>cK3qzgked)i4lxDDx4Ghx%vXGMs@K{Od9#A?07wkin;C@$Ur8 z;{CZ$`#iQ6VDZWG7qEQ+E+TdjmJlbdFTzXy^^)ICAmU}8>lJtvuQT}W6?hGQ6>QzY zQJleR=4ZJ2Xz}$Q;LTsLm4Gb%3MAmuW&EA>|IWZW@GiCl!}SouG~OGJAptia7h(`S z1q}I!G2D+B1HesqKg5uD!tg-^gBig<;6wN*lHqm)!?%$PpTM0+hLs40?;{uz_-`G; W-fK|9>pc3vXHbB3C_)L!Q27gaa9sWX diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClientProvider.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAgentClientProvider.class deleted file mode 100644 index a559b7346c021290293aaf29f51f341b8bce03bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 969 zcmb_bO>fjN5FMAY*@mTC7Fxc9Wc9S=klfjVges5_0V=vw;^=jzTeprK+1^#lA438O z?))gkB+V+_!le=yJM;81^WMz(*Y9sX0N^=1j$nns*gKgPLYeeL%tfkf>Vs3o7nRx) zoe0*YQqO!q*8&c`ojHl=TXA$MUQW@3J+0{6cXqCFbP=pF*r*d~VW#Pa$qCB9pt~!z zGAg`aaAUZ0$Y6EP<`}^mgMQ0?<(ze0xW(AnCsWnZbIiH4MX9t1${JoeJJDG9XFOgT zA0y9EYT<}f3VAA~$hVbE8Xw8RN7DFcfrXE4o?GVM&=K5cu)ZuXf`^1H zi)7Gyr@W`8jH%te!+@5Y9vZ+3HS;EPD2^z4+Mw}w=zbo=U!nK2=4{Yeae%mYYNUEZ U1Grm%->c6}ctm%HGH$_xKOluKZ~y=R diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailability.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailability.class deleted file mode 100644 index d3260fbc383b0f7156f1f43fd982349d9eb86508..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9575 zcmeHNTXWk)6h0f$Dt0ev(>8^+fCv{)aEoqgcBx#}LQe=7UY%6O$D>*d$ z5*~QqM=-+-%)kS0yzx_b;gR92WJ|KWQ*GKbrA#I>vAsI`?b&nAp4;k=e}4WI04@PF zV2HqyFPu`-W?t#8y=j*iFZqFB&2L$Wx2UiKE=rEu_5&)C0YQD<77i_4v+MWl=}nut zc9pp-*fL<4z>yHiwY^4ZrFxe-0fGJ2%9Shgs|3caRqAlhL25f-+_QM2K}DIsknIpK ztm#^ldHD0N=pjSUzKKY4utt4Hu$IK}35-|^?Vv3vKFO`IhG)wk1kQDaE7mM`UE~I- zE7m%1F=sBBU!KB0y&7EBR1Rp?)@!`kFc0>iVshSEDmU^Ln4ybxTBzzK5n;tfwq z$lath)8Wk)N=Ghgwgj)bwCP_o^SSj6YSyUZ+5(AMwsX&JP;-LuVn_PLuJnr?=_dnS z=}(w7PJPqkf!VYJXTuB-liqLP7Souh-=frSQLDg~h#aMLz}trpGaG^gZq zv##y?l>rYrm4P2R$PAiZ9x{j{rROBI$w>?9iS8r& z%sdY1E!nLM3(z{Lv)rpQRYXc3=iOXuo3hg4KO&m<0 zF^fC4d$SV)I)lT(2E(qbTq;)oA?1^LiEc zDj|REuHv4gU~^iFXP@)!sZ(#&T}*ZfocxBj-P&}$j-AwWbDO~F!lH$&ln2|#leY<6 zh@Msk-4?cMj+9s5VFg9WZmIjfLDu{X6GaB%8N1(j`gvMgCp=Bfw>2>ChtYFIm3J3 zK(?DB4~R>T7g9I7D3&OV!9;y2{Xh|wr3@qDij3+CiX?8!JpLkqj67cMKsW8hytN^C zyA`@6e`c$j%^pv4jqxfkO2=CLQyYecHmcuHl5CV54fGf<0BMK>` z<&^ABxsVjo41w8fMQ7%bXj7q{!)pp@U@2D5#y=`@7fPNbD_00CWV51^_aXyp;X4lt zOjexZ1J@+s^|}Gq27K*?`;i6^^%VY>2uKB|;S7EPJP$7*T7>yxj5H)^LL^gx zbV-Rc0WZf$uf#|RPiGZKGfJe_pb#TX#z@04Pv;a!ca%tPz?(5rF-A&uS5hE-r$l-i z-ieXkjggYwomU`zuS9wuF2qP5#7GHGA1aW3P$HF~5+hxTkrJL%NIxo&hG7amijgkI zNC{8V3Z8yfBF(~Fj5Hr3g*F%3(}Du&PX*Ete2n@Yf<>s|=NYunt6;%0T!&Ryhnw&j N+=egUEBG3!{{pSpD3bsH diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerConfigurationDiff.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerConfigurationDiff.class deleted file mode 100644 index 0f2b59861af17f2ce1caac685019293abcc64f39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9421 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 Sa}M=*2#=r)pWssl9{dG1Bh@JY diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiff$LoggingLevelResolver.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiff$LoggingLevelResolver.class deleted file mode 100644 index 0f9afc13bafb15b00b7eace59adfb6dfe280dc05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6070 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 DrtCQ$ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$FatalProblem.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$FatalProblem.class deleted file mode 100644 index 411c73ba97418a58c99971d839277d3b858ebb26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5027 zcmeHL&2JM&6n|?1wwDw_D4#8`L>z#Fmjj0iN+pOAh%iZHyRJBnXJ71r*_qYMtV#Nh zAyKKl^G8*EyK%@`7 zriS6p;0a3gz;&Dm$(+zCNDjr?M}gn$jWCFiOJ)d^F#eVeF<2A2HLJdiZ)jg*^_n`fGj3x{@^{mL6n0b^m@M>Cl)|3T{a|OWOqEJbdK$$- zt&>br(&({>N`-Hxis#pt&ujmpyS9|W@|9Rg$4a35Qb%jYW;d&^t2Vu3O2D~;=78z) z5nY%hMjQLcQ@Wsb(ToM3bs84kc!Zvn1^nhZ?fldj3f>E5N3U2?qG%;go|LrWf}jjg zqTOW2bdXuCW*J;`46W8!*fRI^wJ4KXZ8M!nw~c*{NrgQ!XPgfW_+c4N!x?Hsw1vX$ zG^T9SW7OR6V709|lYM4HHl9o_xsk9Q^xOYOKjpCp_h)oW3O$tG$mn;OI(Zw#@8cR6lnM2&u4Wges zXnu-X9d1nZiw<{J9d3DWF)KsDyo>b7Mk0G9tfeEpM+Y}~y|GP4#0za5JOB?)QF{xZ zM!zV4^sLk9A4PsIY-Y71B5+K&*l8L4=ZqiM%nCYfgxi)8N+F~ nNbl6(N4S*H!DagR#OT2lxCU1tpmBqAyAD6YO}I^?8eI7gII*?1 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$ForceableProblem.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$ForceableProblem.class deleted file mode 100644 index d7956754d7adcb7b5db91f1112171cfbd252b952..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5368 zcmeHL-EZ4A5I?#}ZL8UurR~1D4>jwyqy?-!>|t280bP)+M%^T^y===HP0==6i4;i6 zP4TS(EfAUR#C+D{e6W!v={Lst?(XK zVTHhYCN!dQ5FGZNab^kB`VM%YUJxKB1g?K0q_E!+xU z0yodU?`f@c4c;K@gCC`%6ODN2GZiNyqE;yBCu0`oYu~GPhujZ2i>O9WLfLaV;Qppi zjfts^si}>LsplP2Q#bukapOy6{g_%d^exKdrwN*rmx<17IA=B-)y8}p#ymxwC~bWn zraq(6>FaTSYT*S4O7GL27VNA4J#ymb5`(TS-HWFit-QrS|20oRN9#jAI+9JfGPDbSG$4=2fbfw<#WY)W~X zOR4Ne=7`75kV`A2*+41Fa?w@y8Q(9g;6H9R{1g0=Kueb3(_xsQhj_#qb~VrW^?)P|G7%u*kMb zwA*VP;@L)H)Z3}ST>|&6uGCHPuTFB@yW z!JB_!tAc1iG{O5SyoL9*?A?P6xP>hz;dV}f(=fk;J2?rC)qD~NybbRl(|7St$MijX zPAzi0$I{-vY|*tFGb~z#5AdG~dJ#`BK8FX`s(}A5 DcsKl9 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$RestartContext.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$RestartContext.class deleted file mode 100644 index 780828ebd3e1bdc642c83f76cd4774e9e87e0344..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6069 zcmeHLTXWk)6g~=R<+y2XZK1SKlu#hyVsme4(m>)SZK#_BJGjsXX4cZ$-bT`z)yk9d z$C!Z`c;`nkd@IY1GjS_t;s-ht&seKneS6N?vu7{o`{&<3{vx8g^uVSui)xW_ivbg1 z@hR)DqL9T%D-rxAin7fW(^3^(KaMn4hYgBHGFC1xK4gu3R*}BX)y)czG*h}HL(LDg zP2(2LBqDtlHj6v;r`**R*=;2Q5pjzq%DdgyWxQ8KGh{keXrJx1uas+2c+0E!Zr7Q+ zztd=#UhCagv`)beqq4$TB*O^$%Bc})3ow^m8HUg-WVoS}R8`Z#BI|pLCPU7>DD8o! zCl*~yo6xBtnt(JUhWQ+lYfG=HV|O2_>Pqf&h0y|dPZ-mlluzx-^**67oDZvwY>Z>J ztFJ7ZO%bLF*{BqzQoDmWs`tXLu~czTYH>5_?bB=g;ZPoib$&&JLa)N}i{)zEZu^3( z<)xZMR}bqe&!>Df`7~aV9=GWoi>43bE1BFJ&090gA49~2^gG;hTp6^5pZL*1;MIK| zM0cG0#9oU#9(R4F0BR$kSd%*oLKf24FZ5!+kjDODgOP1wf5Gu2kDO3yCt%ubIT|wg zK^w8wFB2hAFsrLzOf8&DL)T6bw58Gx_hQFoq0v|8PH%)qAduc*btT-}|9fQW=OOGo zLy9vmy)@=ul?dr@r4NRf%aP)wYG$cCgACqIN8^`t-_M$a1Qv2VQk)h6A4*`Xg?|Q2 zZw*Jz)MQ@H-1DL<$E)uibL+%yDtgRRh?{jZU>P`CI?U0}+B`o|;m8eK;fv%_X)exO zjiyU}qKd>T9JF2c8!!}TS9&{X_LgB>?FEO@iB<0T(Jl|RJRWMHpJiyR4&3Pab#CL1 zU*U}mIS=DHSJ*XqFOA#iK>u!B_eIpooS0t1k)b3_I5SW~&C8k>h_Hkt2SzH{5niT^ zn{k*VuNm66kaTB9;!rjY1xgZs#7=|^HN&){D<%V+IA{czs@p=sJj7ebc5cVq-%83qAQDKa}pL4s;fKg2~{y&79rn`1ME_J z4D5qNb7ko=zs8g>^|WzZw*=^`pH9!N4CLYx8qDX+uvPtBm_@HGF4c1Mu|@MQCr!Ya zfNjCacdR>jv`gS5_%YErExV2Y2e-I%+&vauuf#Yj0=^Y?L?qyiHN$Qs=PI0$FYh1` zQrIG4e!iM;E}O!*aHfxSOlTGGbX%}Ym3$UOJhJJwMfXq5#dTc?mN5-RjIc{=!X7&f zW1H@xk}eLLzCA>z45UqK7Ug;ejZGzs#?30RY2yez+H=+9BN0Wo1nl9m0Vm|Pu}B}t zNYgxFwm{onpcy(x=TWm!8>1ZR6O_lh`8JufU8Jd`K8Z zQeLGuQJ%y98eNC%u7=PMU~l~gCF{Rx diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$UnforceableProblem.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/KafkaRoller$UnforceableProblem.class deleted file mode 100644 index 577fc897312eb51d7b93d6d72c3a92474cb05280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5045 zcmeHL&u`l{6n@H*+SalqP1m(+yHyQ#Sa+~`=wVp50b7tPLEI#;ofIv4p{Zw^sYD7S zy+6-ox_iCXhx;5WKM3?k$)(*#Nxf5iqEtP0f}d)GYmt~vJZ zeB#u*)gV%60;z0}Fw2L5C7F1Xk`G0h6u+j6U(=b|yqbm+J4KQzZ3B$5fHUdz^)NW~ z@B)OS_gPO1{=@$sIgWD$J7-8Si_!U*lxNEp@rsjE>h3B%CC2(=P6q z5^x@%DPTH$NEfCUqxB=?8C_F5s7HcNIt`0qJVj5c0)AtSc7CQcC2y0N;Zv5D7+NWk zR~1@uK~M!Kv2MI$+Q^KOlN>GvhE{7LOj-C2lql0$Z8KfTw)G>9X@xy9Wt4505=q+>#RYTFi_=Q-j+c{5~b8 zD0Y*`qPre6&N5houP<;%Cp)bM_dU4bT9Pnll+HXQbDs)h=y>naAx;^n@6d6vsf>k3 z;K3(Ecmd4OkCI8_8vT1rvu?)!3+m5T{MWGfPmcMVo(|)%OY~gK|NF2E*Jik4KDMXvTLw`8}!1GKIvE%b5%+xv`t`Gy1g)voj=A5U!jd!_RyixNrleTCYj;b zhH06)Z#uT-EG#g0P@(>j>_l!dt7)T?b2m+}!xo97x78 zhvp`R$43?F)vCixfmwS2D4Rzd+w*nXpV6%{>!M8x?Z$AvE4b^wwd}a%Vt;}8#$vy3 z7MWA_`-`4JSF}F*!O^kdX)V`9TNFxMxo6KFj9PN?Ss^FP2xyzNBb5e+&+Uv7h6jTg z8vT&QxG z)W*uT!L=78mqsr`8ed;h9)J|uq6sq!-$A~`tuYk7bhV}f znjN}jImbmaI4r|Z1(q@kott-^CFaIt$yG|cqT|l0QPfauTPb9PCfX`oJ~0pTx7g?j zW|ZMr6gpR%G8S3BY_WW$aSC=~8VuAuu&tbfCGgn^IFjueei~)hg&JJ1dyC_G2}HNA zZXH^^2=3YgKu+sW<7HQIsp!DuK9PS?ScC z336%d4kX%HWB)A)jS?g9<0>71JFaeqqps_?U35^{wlHn;P1;&!`IO-lOQt0pM5^RE z^A;<5dsE5o+#*ZmnPKTJh~Sr(^aYmMZ94s70MK6v0Q$pSsM^4>c>u6Gm3NqzvK>EF z)UmUsd|9f~!awy3NO%XQ|2zYe;}z(C1y# zxb_)O8Opf@K2KAcr=`?T=btSaB0}62*0Qa1j=Ruo$kQZpciJAggnqx-A_y{^J=#jg z4|^>EmVMJYO&CTEHG8U9m(${@7jiuN#lw&9h^D-wx@+Tz=1I&T=#xVj-Y5(A3MVG=Z*U zVq{(**}W20jh--A ziRS>D%%RP6NgAfH9uyM}A+wlXo!UTthqh{_%_ho46y^1VV)@xi7zNtugIW+^(e~0oHw8*Q-((F z;MrK=&tn-+g^r~A)<2mTB1Sw9I(bw#eS}#Dn4yX=(DA!!&}&fP`bT?);D8xN`gM@@fm%t7KYvX)!Y>t7&wZl7!0 zg|HrDDN_iC%evKq3s|_dY$A24P@$^&v$Lm?ot~hwQ&}N6wn{axkC#EPY*4Vx0Z~+K z+LX@3zMhk>zv7Qq@xpS^`X>|Dsjy0Q&_qSBUC7}ygW1Oi;LE34m6DrPomv|#I+#@5 zp?Td_x4Bj+bS#~josIe1Q>Py=@U!9FxMPMF7(Nak1E&I~0FS58Qs4$+oUDHZ>f6m0 zeZ}xlRk)tP*zkOPHV87*;Q8Jr_T?Bsd>7;=?19*|0;qX@D7QBjZv@v321oa5kp~&v zSAiYM<**ydu;VT@x9B>@xzilXje@)nov@OjNEKQL9r3yg&UM6A5rIO^(=$?RN8hAZ z3-1Wn(xSvT+ZPp$5iG5^JP`Z1DY#oP!d<08H>JZ~hudIiH;P*u0vT)311&%yYaTa9 z`2B}yq&5sR97D!PTl1{IT)yeJ;`#{oP9ye$1*$mSxKf=e&B$PjjDnZ31C=BV_}na_ z%bZcd(PSQBOpLLZ9h^!_@A9L;&y>XfnZ6m7-mB22Og6Ghg}QtvI2Q6~w=ZVJK`SPf z)Uv1mxVRUB7u7^vmul`-AdEx!0D>SCbyt4g1NjkIkb9(8f&7!9^f z1Y)r!l|HY~OuGgQLoRNE;`+yy+6I-rq|j`;2Aj4EtLE3cx>2RCVAB%EHi3wSj$dj~>6eH<>Sdf%`V~gT7NXK`FxyJbQKjGEt#TGs=?{RdO`)pvM@U@c zXI1($uHEsItxA7|omFFkz-y@VH>^mtHQLT0w{g?sSC4YYUVF5Qzzc3bo{N7QXruV0 zQWsjg@wC<_O55Lz9H2dTcF+}c zrFdQyKCh-1i0{|X3&rzVdQpV87xaTM{2?Kc>u4X^1CC!z`_b!aNQuuj`2Y>y+&gj~ zjXs384!R!yZv+}adKvuRBYr38Fx`N+1ZgxLAx%U`9rzX?WhF=tOOQI~Mw$fne)QzL z@Db}HJT66;S_8sU5(KzvnvP~O6Y(-$LWIsqy<`xtvlzd?yNe_ zmm-*JK)6_naEz8>GPYWr&lM7^4zkHm2%Tidpf42ST1=|tj2PFM2h88 z`TxLrLW;Fa$E8?}=lG-)>ja&YVl|%Qzob~V(aWV+e7C5pmz|eOv0g#1lw$E+s6JL! ziuEeGU5eFEUY$oJSY7mLdJQ~m#iLl^KJZ$h^_SsGW6ULi$z_|M*U{_2Rj`k|LGG1z>@d+#=J!Yu-b!zaA#lFxuiCv*gtyoD zl@@(>=lxQwchEay8c@Y*tWA$evED`RmSQ!Q(m$nG@1Z+mSa-FyW{EBdmO}5N_XBGV zlIAhT2k_jFzovUsLbkIc=!5hjpar`0;RvbWIwrPD_~J+(iI6@TAvM(V#90!gPWl+; z(?K7nPvE&57IZh}`6e-#$8D$OP`_RkQR&{lCb#-_3bXEQRUynWx z0C&OP2<*{d#pPzXVOUQ2ve7om7Aw0Rw;ETiGHX(9c#M}#yXAV6#{^DY*5W2DF9&}v z2CUUqvuRtD6WFW4At}%{ob~d>+GT2bNOGykspqp>%yE&VR}~uL6%7h5N4QRgY7np~@@j^PLTnf5i3NBwy7tJi6AhtD)YKZ_H%Q znzg=YG*#{~eKtwJ{|g+eu$&Ls!ePjm~!1z03?tYLA^_@c2%c`SK8m*mB`Yam^r#3M+{%y6r|9+;nT z4eri0g5N6;?jw=h2`M+24^xz%%OyJMm^2LI(E#I$X{KV^EaVceSYoQ%I8)Ie{w$Vh z%|N#jItXE)e6xr;24h5cG(b_B=>n_MCC2P{8nd~k5%vqjhiEK4aIH(Mu6Pp-j_By1 zgwIVj;5IJePJf8;%_U}A=2ooF5&c411NJ!HWc72F%Uewk9qddC_mOf4PUtv9uV(B$ zg1!AweD92|DkR85UqJVP-ap|Y3;MiD^xaLZW!ZJyHRvN%c}0DuvqAEYN`94d)aMMR zjJi#@cp0HHpS6vo0uyMy&K4eJn1Occ72>+cT7ss5y87@eJN(;m$Ss7?VT&5JMVm#d2 zp25AjHqO#rYSnDZ-4G@{soXpG(G&4REZF%*cf;VcKIgP8&Kz-@$NC=EtGybrXQ9S% z-*9){x#ZH>4Qg)UR?ufUiO9MCjOAF~Sq&aIt*=tEpMxGj~;)g2{+`dS8iR^VDBuR6$1C-){Wce#O-%I+@}@(dC5UrF}qFc zC6hIpC{OsCQj@cqO&ji=rJ(~W8?;oXrY)>eY8vJy9^TR^i%kY@aFPX|jg!HrL`)E} z#TVwOQk_w^1$lT?$cCFNR*X{0*-5t{3FYWG--5s*KLweoX`ANY?Hv=#>KI4IGB`V516l0i?Ujc| z#4s}Wln`D9=TlKKh(KjY7V`;McU)y9s+C7=g?-0W_oIh-w2tG98QlMs?UCtkWUwLF zAb#|6N7Yu=d@4f`skzF(|fDxEW)l25~d`^aXt(KR=Surr=qrqXFVK8;o;FiDx;$CmV!Ytol z5yIsjX~v4CJ=`Y_c1ADWNO5CAfY`Ys$C)HfrjZ3M$HH}VsKIW$L^|y zvCp!2r^sab|MaRUVP-syDe-Sy*6W@;9VVbdKU3*Q$fsuAF@4jWVo%AWqwu(T024fk zGH7nMU08=xNmH#A?dXZJqb8N|s z+MwQKM?GO$j_uk^D0zhpcq^qPt}+j2pX^ggnhB5cK5zFZ_ei3n+fh>D10Us_6)oz4 z@7X1I*97GU$}<>CVsZ&ko)>`-g(ALz^9u4`g@KItiI}&0^gv5aB`P=B?qvEDmE;l? zJzfHRB78eG3EvWdj1Ub)?7H1BU0(UWb-QqU8B6-C2A#(u0@uQ4)U-%K%hWo)q7Lhw zfoCiU*w;4f7Cyg*s`4}Pyd~aZCwe`ZWQLr8C@@I5@CY=p8lkK3fB-}Ol*%0fufv)l z*${s55kN(c^^SBBXyFiez}4zWh83d^X>fxQBOQm9h|K8|njF0wD@lNyY7Hu)`|#$}N$p_d`>*-(5) z@;N^rP9ySZ1ilzfBcl1dUlw|Il$#Lvss=a5)YR7jfv=;fJL*yhd=saZ8Ui8kZCnMR zXuPeyi&drl3RwtzAFJQ`L`Mkx5I2Bwc@y}tAjGw}1b&KpE9G%O;9=B9G{pM+0!^IA zz7Ti>ZJB(d5coA#6{Tk)2t0;H=_qR^@LQ}T>RBvA;0e?)<-J7U_qZ9->fi|c5zU-> zyAb#@o(@?@MBuNuxN)VA;CI$>(uG`J3n$DaiS*a!RZUjYbQFW~_g zlJEu?mT&|PN;nFKBrL#T3CCbu!Xivacm$40cq1H>@HpHg;R$#ej&?Kt-vcEa=cIz4 zLj36p{tU#Qso+AtTNL~>;4KotX!Z``&;Jkz{gO^J<5BEs80J?;Wa6!V0uq5Ft zU>V_Fv_%zG@b?m8x8o`Zs}DT}tM?s#`T{vU$Z!h?tj z35Fs;tkd=+07|GS5=OQyLFizjrvAFtquJcDZAp7z1N-a&3!X&yAgQaPXiF zSKunV0p0{}fw#ds;9c+@cprQKJ_H|ukHIJ4Q}7x19DD)31Yd!#!8hPr@E!Ob`~ZFg bKY^dY&*7KwD|i%s1CPV+;1BR8_{+Zmfgc5S>j!oVcMWq2a51tjeYB!M>A%giw(Rfg%!$%5AeArQ6zGYrTmIe+&sE zxbveBW5>aXk^_~vc(u>ZGjC?z_}A}mKLFq2k1b9L91jR8lz1e)>-B8hd9d=PB7q7M~MoBRXXO0(Zdj<^a*zx zgEQm-%1{_0B|=_^5%L|Sy`l}pZOEK{>A|^{7{Lru%9+|A;y9G3^o?o4m?~~%4u5|G~cK+B?An|3~7x4 z?I!&l04mhjYfz)RL%00`b-zRXwC#R{=Fgn7NzaS}#J!Ot+3vUDCShB2uhQ9}Shw?c Qci<77E}5bkk|wNeBQPQqXK8B72v5DCIxh-^Wk#D&X>ld_E|a-l}MV|nb=%rZOc zvUvd>fXCngQUz6T;=+M5H%{Dn0*c<1>~-u#JE@Y4tGH-1Q$1h*_iXpCfB*0k0L;Uu z1(+bv4YgbEF(K<)Y=_l_s)t64-Z!GI0Xt+)fG!IpzU0#2n)Dq`Nx1xNX z>&v*`PWG+-mH4=&q~W`!0FwmHB|Lm4yY+jWE$$iuX9ML8NJ0Wr?Y0O_gFtarbR{#9 z<^)7?IM*JFr1uZlH=4+IYEDRDngq^Ns_O(MTgu}Fc#^<$D*7F*m3Cm7l)w92#VYJPv(1MK4g=P`tXqI$F5bsmo-{w!`VZ zqDLtQYWy!LcepmY7MfepC0>h+@bdsqE#V4xm2`zKk}PPeZkOu}WvEe=RahLGH= z(Ysg_<0MS3`Fm8z9V~v7VY+NSicl)r%VAHs5XIFoN3C@wureLX;eYo)4sn}xxF6;a zEkx2y%HVLusA>*S{1)Vptm0!OyE#N_et4hv7CkPFFnc+~R*0jL?55Ui&jM_TZEUlZ z!LyrX|Hp~3|0Hrw)U1|O-mNr;pi5N>qX}JY9w&%n-O(X{T*VUx-HB z)=anY8)iA`b+}$**r^bhX)Blc>r9JyKRBE;n*y6MF`mxrc#nwv*VQgJSc>;M!Y_o` zTvqbVE`AB%JAYGpxLe`O+glJi#P-ptRQFrP?ZMxZXcQf|MBrPC?$08oEl7qJCbR;6 zlX}b8WfS^eN6F9-xy0NN<}=aR`(brQ|y4etB4c z_XsSFa1Mq6G<0V7A%U+($Sxfarsagd`2!Ks(*k^q)3?}&1;8*rgCSag`9~&*{r3zl zbXSBSJ`QU*P{7=9mN9KUQ=tJ0co9dP_`1OpFokOYcN5?wYY|F#au!eCM=FAA=|?Dk zIrG#*IQMfxcOHM^TY$GO;BUE41sCBN+yOib&mmeL^Z5*<7c!6@W+0W|MR;i-%N3Mm z0KiSP!zd0>S~h83zA zvizBe^cK8*NS0Kas~HG?WgtvK9c?lJ@4&mb&fq@+*U-BTe1PjmxHj?JK}%hS8!!i- IB-Gdb0m2W8rT_o{ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller$ZookeeperPodContext.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller$ZookeeperPodContext.class deleted file mode 100644 index 0fecb709f709a5514f78a818dac5780ead45bfd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4582 zcmd^DTW=gS6h2Njdl{CdY*H>Q1vj*?%Vn2JJRk^>AR;2lHm#B+68lnlXPk|b8GEoj zQI@~Kk3j+n-uY38Gcy~d%}yCt+J;DdnHk%kKcAbAedh0fe*Y5yzJUidSRnAkXulUR zA$v#cg!P2#8LLI~i|DDCYi5=1`C(!#*XJFY8yI+EU3kI+>Z>RgA+thB8f!HQd1St#USn{` zX~6xEX#~a0KW1Z2SB2_M{n9=2OLyv*^NusWtkOVnL#47bV%9&T7CHH8jD~-j6FuKe zJ>N}5?Y`Iwxtt=3m9`Y896xMzkyABZN#qIF_S8XhCtT*W#EP(t z@X7*rxv!)zLXqu)z8a6YE>MPAMH#h|n0pP!DPChEWX7yrNKoq~?3lJ5O|xDJax02M z;R{Pmf)j8vON{Hp$8<^a4A<^ZVQ3-)ejp?dy7VC?(R34L)4~ZA@&uD5Ww>1qpJnhG z?sB*zHzm?pyFu=`G_kTY4Zsl0{*y8~p8&m{>stW=`vrG~JBxK8q1jZkzF zbzUl8y~Qq5A`e>dRuitn+XQYFlssuEwA9Bt%uW)GxE?U9RMMhN`7GRLTBPl1XT=^0 zEZJE9CD)W##d%|HF$L!p(guP&ae*m z2pl;`GN*t>>+EF*|E5S?wQ}JSoRxb7np;wGon4c;sX>Rp_8i?tV7c&Tz^4Q%shTzD zKJ!~3w=YWdP#A;100wy5$55*8pdo)y#sUQb*YLkZ1;cd_s`%A{8q~9QWBT^sHAFSB zZvkG<(AQxJzw@3O@CJ^2f&Gj4_Wpp@Ppy^T;LX1>{5$xp;%vatTlj2d-yYnCcd-R< z2j0V;GlmqGGrT{`K$Z&`?!syz!v_Tnw+k35a35D)fDhrLbamt+(1wpu_a3&ZIPwX6 J2A^k`_P_N|>45+M diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRoller.class deleted file mode 100644 index 54a920edd012ce79718efabcd202d6c64e09c312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6041 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 Qt5ATuP=tH130v^h-_8qsoB#j- diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScaler.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScaler.class deleted file mode 100644 index e41519dd62d40a140d096bc6d699ab8066c6d7e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9730 zcmeHNTX)+;5T13@$ad2tq&Iqjs^L%ia#N&@y^XCkE6Ftd z1w8Q!_y;`lzyZ#I7oPY9{0DvkJaCwmY}t;LNU4KQdQKi}NvoM}W@mP1XJ_@tzd!#9 z0Pn*i1rh}A*uuzFb!O!r>UBNGc+PeNt3GBqUZX;HxX2k5*LJ9AH3({RR~R(6#`z|t zNLMiQ3Ka?r5E%7vD!Nt5Ew4YMhC^UbTb`f4b&tSl?H)C_Wv~j<9mXw#pE+W>P_*sP(Ap9Z%N|RFrfUCHcLW<(7pCqhbZLfmI?f zrnP$Gw;{vv$D2#sq%)?8hOh~wwK>=F*zjelz)F_xxPlV69K4v)@|HtoU%LUPk!#F1 zHcBqCD&?-Th`8i7fisUcJ$(x(Y1`X8fni6WYYONjI>#y~aZr<21RUC=TW#&bqQmZJ z-ff;hmcc1zF=v{h12+ zaNP%Hao{L$k-$i6VBHdeizHkkBY&@0a&A@X)Km>#t+9$XP1Ks;>lIqHudC@)u}oEy z8Wmk2QB5~C^%7Ob8P7K6ZMHdYvyFM%YG}^ean+&#QAEi!VKo9wu^ZZMs*A0v}@p!t@`OvWRKk< zU=}sA>LM=bG8%hql`WN7b<9sx9ph%X6JfibBUE{c9oLx%MD%k{{^=z46VeF$ICh+K zWeOMpw2aYNU~U^h77Ghg@wW6f0`Y(lYYazvcSg`2$YM?FMZLBkFtKFqm(DXn=v%#j zrBnUvb}ZY(B+@NY7v^kP7dCb59X(gq1(Qo%e>=LeQ;N_}YcJ?_Ia*#cMNEgtz3z@~ z@DqwdSzQ~KJ%_3O=R5uMTD&pa+lWl3dgaHJuTksqi&{Gl`&RVn3riZFhZlz69K1;2 zRHnNqA`2fQ8YYNKZgriCq700(JjJo_w%Q1kjm80|%&>a2*lV@Mx07Gl!}8EkTh{mp z9LwY&(A_fK0%~&uDzFr7fljrf>@ZrQ&a5j0mgKNp zy1}qWdag_FHUrJ?_;N}bAZG8REr;BisXMeO^ z8hgo3+ZRXFdiPP)V^nXKwO=~-o}Oc*tjP?wIbKtl2R9}>j}pi=??W6EHo23qND|-1 za9KZ1-P=;!?zDn)xFv{6z~iM?ee^$$Z)V?Q8yi%v1wpv-W7Zmh`+Esjdx>moNx-AT ze-7Ae=&R+2OVpBwvq5kf%j8?fX3Z$G($={9VU@=bI~ILR65k&%>mP2ddfyuL7SGeE zzU-5pKniB;1@ChO|A_o#pr^mJ@lH2!)0MXjtj%N6gwbq);p`Gdc}sy$F|u`>yeRNF zfdPr7z?TG)&7r5jI-a5Xdm05y%>5e&7Yb}3gG@{mDC0f`BZUGF@$kO0^sGRIz{$=w zzZ|WAh18uTa0P0(HS#La3gEX912U6T0ORm*XFjh$z2ln<-^-XyFEae1z$z8-yvT-2 zfQsQ)A!*!!9)&@?8v_NB-Zh1-^7$AHdDr7GjMO7|pMX(pe+GZ@{RuefT~EPj?|PW?t~8$KoACHx;mDS+C%jQ>O4eHt!9 z2A>E_z?A^$YJil$cRtc9AxIBGk+P6Oq}PyB%6lEJO}(UaAMK40G$#Ztf&IA_==F98 zQkY)fgdhRD1Mdb%?*&K$flk*$bowC_X$rsfXN@=`@oA0(0Nq9(7S`zYbJK(<)!mow! zpJ?M>g5`k!ZouE_$wwjlSKIgtPz?B2Likrh_^$>0N8l6eMFQ@_8eRdu#-EBa>;ZfR WUw{qow(IE2x diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalerProvider.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalerProvider.class deleted file mode 100644 index 96f55a8d3366385fd5cf003b1275a7c3ae46aa4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1538 zcmcgsO>fgc5S@M1dvh=@tuTT5S4-qR3trK>h<|pt+ zI3a-qcYYLN?Kn!(h88Ns#rBMz=gph1A3wi*1AwRS$blSzZmhW*G9lf4HfF9+Zfvv& z-wRhosF_jP<-sU6sAmq1u^MTP?mMLp5G}6DS%7*+tFiD=JFr4vJ&hMIIdoqS_K_O` z`8E%P6lROSg~n!|z{)e_qXPv3l^OcE)=KB$BFTMtD-)_`4*d7P&S>Iy)9k@?mHEo*% z4;Jp=WKal{UWz!jd(pFd6t5Am=g?kcfSet*RampOW39)TxA+zEyVc@nD1A>c>-L#o nz+x|_p5)wC;fnQLP3@YEbS?e54iD|SZ1FeX7Hq&>piut>7N7Et diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalingException.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/ZookeeperScalingException.class deleted file mode 100644 index 82e16bcc58f390df10b565988dbe7a994fddbc5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 969 zcmcIjO>Yx15PeQVH(3HHDdihvdIAo+7fuAYpjIFSkVsktH^;FOx4ZVrc1p`1Ljnoz z{3ygYO_PH75C;xByYqH-Jnzlhuirj?2Ji?s6Vw=Xypwq;w8{6xfylMZeQ>&buX9@| zCxUgkET%pvw*;K>cIu?c-&(t`6xH>mD6|=G9ZFRNZB2qY!`iH4AY2q+vwu4wZN8eCpi8w7l1pLYi9^K~9E0V8hoefR&12>M zQnV2B&vhvpIM>1%oM+hh#d_i<+C6R5i)lGjZV=bQ(CJy){jP92=5w$fCfYN+?)?{Y zbs5tB%z)cEj&SR@Hk|E%*gP}R8n4O4COp+-YbPg12`-aIe-=E!)gPRDtZ;(s4C_nt zEhJ@VJ=floeFwAu%MPcc)_)74Q`jo{HR z+{^v|ub#abVHmMSXm~ZkU*JFRA9yj$>K=xjpkZ4aarDyFm6i2nR#sM4X8ruf{T~3} z7Hp)Thrnk_+Jy$?ZefS+(E=9*r6q5C$_v6{l4>Cfw&N?!K(+IuQPj>Kw?J;6mf~|<3g*fS{5F+QO>||FakGmv9>QIbM-ovnwtf#h&|Rof?8*C zPKsS7QQ;zikt5y`qqxu(BY~@uc@DR!nP09;p|ykRk!76K964mhbx_S}oSCIhbC>HG z0vB=uN(P>D<)wRdTaS>s&fn_iGV^n!fT3yuhfUXX9|f^n-Vn6g}8jtTFj=OU$e2t`*wopglAC^$n9y~ODbwere?P&+6m+OvMa(anYToMt z{ie%vQ{{4yDkl_kwh4TZo9F_)&~ClC2~-Z-im4R{Y@dr_O~GYsFMh&xebILutV7a} zCopz;R*gwDX7^^&R#z0#^kn=@5`u=(;Ww4I7+o(2PO$Pr~713>BYLU;xG}IFt(eI zR|wzD6}!Zjlc-5xu(t_(c)Gz%Wqh`Kn85XR;~cB}ht2p#RP}#1x7;CMYiPb4sYkQLm0|P3)!j;0elQL#7cwMDenbJ!_>BJb| zs}#N~W}ydqA&GxIkb*Q)Gr_;1Uu@F*n(ZUa_7e05JeT20&<-@)tMF*hA8fV z+UD>@asr-h^`FDP=W)E}a6Cfx3lXxviX$7b3unOoIwtmuXTbh8CiYA4a?2*Kv~1FY z)(!XL)d-vX6chV(c%y~=W(4+I5!k=P#GZob7WS?e_<1gr2~ Hz+3ziq^5wd diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AbstractRebalanceOptions.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AbstractRebalanceOptions.class deleted file mode 100644 index cc3c4600d92d0c6bf1f2809a9fa926f7a966fe7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4486 zcmdT{TT>f16h0ybUqX`rNtz331i9318@reE7E)RuByq+x3{W!dLucgOQ(LfJ?MPZr z=wn~{fBMpycBXyrkLvX7dWj*3Vj9BG2U{!Y=+n8Mqrd+C?GFI>0v_dIh(Xh6uhtPV ztZj&{s7X~bR?E(hvZf-`!YWs?g*i$KYHFPs^>^)8+UfMnf7q!=Sh-TcNPA zMg~{X#rusu$||uLwq|CDFyBSpREEgL%%+SU3++E5tc5mun+$RrM$r{#@Hq+Mqravi z>Crvod%+moB4NB(YYgqO&{ie_EU7MbXu&L_p4Vyl6C)E(g>q%vWhS#vr=t|$ z9R|PryY>vJubB8B_e2;f%bUnwXxl0-xZR4dRP1@*0YpcHLq?S5N$SL7B=zD;ete!} z?)ym=76qs=2nLXKAVCHpVo)aL76uC+a&!uy$z2Eb#Lz|BUU7vHou)uaPG{S$So*nq z46b@}znnK8%YZV%Ol7?QpRxSo0W7iBM((2*2u*<<32#%hkWWihHNAvf-A>5WEFt$7 zwi9x7S3;iVzCyzjFYXBIwYjAm@OebZcjpZh(AA^>R1+tvzRG>2Vj_d=L`qwpqQzDQ zjv%48k_x8kI|q`Ho2!+bz4JltLfY0p-fuUYx~vTw3sot zO0NqmJ6I39(n#uN=aQx_?U&ORz{_QbTF>FG2x5XBt%o7%g+LgC^o03}!B4Nh^*yMc zU~qjuiL;I)4-52yNUWBJ#a+*?o==isOVSvsxogzOn%or7vxDA)B^ZZc7@@Cm$U}iv zi}XE|uAk1a`FjKR%AAlz{x+&TopT_?hAc$+xw>8I?Frs9xh z#)_9jLpVOHkxCgVzS;G2~esj4ZJf!&u?aaf2e*pYs BAzT0e diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AddBrokerOptions$AddBrokerOptionsBuilder.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/AddBrokerOptions$AddBrokerOptionsBuilder.class deleted file mode 100644 index 18bc17f7c2dc6c7cf542eeb9ddb98d1d187a33e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3453 zcmds3TTc@~6#k}^-mD@hqN1`QYVp$b`XWdIMgvKO1dv1@Os3nhjBav!gSbH050@Cm?e+(;wAppEw28kd3llsCC6 zm20e)wO7(rb)mUc+V%W~u|lsKv@oinJ>hz~A&u}GO~pr><4m7d3Os$z_*Ug;Nop&oynTbMG0i3TITRVw{L#I}yb=5$lF_B8opG zV$`W9VVpo&r^cR5^(UetwWH%6cY6vM<9L*T_fiP!oMvQ}5xI+3@AmA>QgAjD7> zPMd>VHe|WOf@77#9s9B_a@m;eU+ntN9Zkk8O#O2-EHs7IvLgOd;5p>cpGOu041sUKd)*zeg;*ZH3?X#_S1_3{Eq=+n(g;wfgIHm!Y>D_7x0|cl9b$$>f%zw&$J< zOL}l~cN4v%jIDIDoVI9S#-_Jeh&!9fZerM}r0inMsPoFt1%c3ad~S>|X^b+ zDr0dP)VEUe&yYYbQZ%M%mOutc`kh6NzWc~>gLW|*b03j^IB?)S4t|dI9ine|3UvA~ zeeo|=+dmHZHZM=gwhLbo&-dYGp);uN1YYUgt!PCu-oy{;Yo(iTj=_iLS(%gM5Mv&xG?$4eGr)7L!UR)u zkGrihE*^<2QOnk#L2Wv#F>8G_7z5ZD#f)@w3t z42hW^MD!sc^_joMJGBQ6%w+g!q+S^%%dMgpeAaxSXK%ZVs z`4#6GEDVNMR|5xbQroF9=D;lmjS@)|_Y-LhRm~1nbOVdPV4S)wl}ng_Ntzv6jX{$> z>QUg*+>@MvHtpOcZAP>E8Kz#$PJe`%ua*8hjpb>ea(#iuc25fy;9|8u2bW0Fw=hPs lo`uUpEKCfsFb-EMJJ;ZPd6sP5pl^{PyiMy#igF2-e*lbWq9XtR diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlApi.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlApi.class deleted file mode 100644 index 646f6340404101c8e917755451f1b43d77dd04fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3967 zcmeHKTTc@~6h5O!O9er+-Y+ZO0Cm^az!oR9@Sj<7J4jutfuZ+nW3c@%&IWgqY{k* z>TVzPWb&rR>el>#lR?%+98)oCP}J)+3jMf z>cwfV8Ldw;a6Yc?!dO>DA8+1~g3FelMFs$8b83HG>n2T=`{ zl~D|}VT2&WYxu*C5|muXV*#B>8XA1~GY`9%gBE=lQCbA~E#`)%MH9Hz3F($izUjuk zH(Sb-qOotD8}-k&sXUH*(I}FF>v)%lMLY#J2^?rw{S@48n+fCM;!L-|mBNW{2}c7p zNB~DP98&kdao7igh*A+sBhIwo{kWcn5jcPrqi8W5Jq3{Y3}dU~;~(Mh*XX%p_-VWV zdOIGin9=kEoW!+L5k8Ih44iFZ3-LLaXyWsTFTlknzJ&NPOg8Zp;%T_j#8;8~waBv# Ocknxn%pAA@w|)Xb7*65< diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlApiImpl.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlApiImpl.class deleted file mode 100644 index b724fb98eb3f3f0527e5b60595a455a8a25e474e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12566 zcmeHN-E-T<5#OV2fnsDUk?o{zJ_2YzZSOEqSmU%N=?t!;531!LulJ{>iMneJ!%OJ<_PRhZ)5^< z#@70JafiUO#*SprVm31ca~;F2*C{U$xV%xRY#-bx-dx=^DhH(-M)9Chx?SAbtsIn# zYg?N)$^=M>z*(G-FHA@5nRY-={TKfccp>b(W|WGXm4nr_N@=fDxpN@LEN!l1zx`7v zVjz$yS5_;#<%9Q&cL*#QT{)Cd$WFbGhV#g4S(qa537lzBE{+Ij#-4mZCZA$8n^stp zx`9C0TgZ;-v9fO$9kXiF8i8|WAQ~G&cpKELQBGjNki11LL^$OMm%uZ|Hf>fouH%*` zrQqXV=2n=)#5Dr1WZUDFj54)26@~bD-F0nhI)(k^Jp!lK+#1#3GJ(bJM2eidJPj|C z^Iz;bQZeint?8EA^q3tAT=%$(tTz3(^~`*wLG>E7Y?C9AXIl5oI@PZ*H`i9WTu140 zZKdme=qO#TPwB4cHJAFj;|jfL3ag3`w3m-5(cf|M9U@g5)KvP)^{Sh zKrnk8VAnH^q!bT4swZu=dK2Bdj-CmfEp{1VQ=^B>p|zZTTRJHW(86x^19U1abUM0;!4tZwUWClN%EY3G zbqt$IMD19243r8_Qxf)MOLILqJd^@Wh)Z`z?L=F+D|1$(3B7vN_hujhK8~ng$HyQl z>AB2u)@+7*TiXc7fKEz3nS3Xso|G456;hJijEVaE{YYg~o}x0Ll9?;XVkFajQ^Oj^ zHkTQzV3>mrTUul@Et4~utY_vQs&hH;JWMV94@~Z0>0tDD(H8TVY*b0QN<@9aDmpdK z#rSjdtVc+B+vFxjyp&J3=g1jl<|nm$St4o2=omT;^~MeLkh{$=x*r{EbBey-m-;8` zAx-A{s4`*jp${SUvMBXFNm6Qi@uPS7Bjwt=9Vrp5`VSmyhx&n?l-2dZp-H2_#%*tk zTjfb6Q<`W7ba-U}UW9KDxR@QTV9LVaqJgp9X3(t4#0Wi|EOok;Y45c?U;E=}(O_8R z{Lq+Q;aA3^SlYapm~;@xWe2Lkh2aU6_Lq&wc_Pq!nbjRE&T^d7Zzt-!GObyn4tp48 z)5106@A;j;5m+8BIW6Wh6#c5KLWXr$lyt`Es2>)Z-yraJg$iw_$H?vMac(aJE+qLx zshP{hkYmG1f1i+Z3X>k{I%f8h(oYsEPDVW;FL)wSr;a??p{oNY2X7>p_pp7Spu6V_ zX?UBEoQj0wK4V0yPAu9G>wU z&!bx5VWcSf1UAbknZSEWUOGvwW2gVehlH4o>t8YkGXmTX&a~tqWg2df)ISt-W)NYF zQas5i!h`N7ImPU93Urp3_EGMbc3i*45K_fLhiyFJOHW!*FxmleLB_QIn#K?-JweJ2 z{V1Tmz%Z^e?iBq-`+%S)c3j>|LrE<<`aeqRFyfC-QwaP{Ne3QXHWO=jyS|x_opf^( zqMcmsW~#|)*d(xV{B9@jo~UIur~&aw=B%~S*M(o^qY9)aJ_+%&pJ ziAuJcInfNxc=2R9)PJZ>;9VsFb+4gC8DXL89^nrUhcHDM^we+8_T6hB@VW}qJ(K*+ zB=obH(uD>d(-n^_8eTNqFde+Xh}RM?XFFj|uTQHqxcjjz8HO>}uVb2(*Je;Y>j?*Y z`AEY7f%WnGiBkDgUI7j7%HCwME_!J&GnNI*@KT}%7GC%42}d|P&!e>Q?if}VV zT91*WCPXsWNI?2i0uq5+@P52DM&jCZ`MaHf`tL;4E!d7xe>gcRSxiLTfpUym`4Xrv zC!+4cUX1!dB5GGV6C^<1Oho+=+=)^56H!mctCfWM=LA%MAHz@Lb^mF+?(#x?wC;C@ rSBU&G0VxF^VxJV4@JoEYgtlLW8XQ6c?tu*sc)&qG3y$Cu`1$_;b*)!E diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlRebalanceResponse.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlRebalanceResponse.class deleted file mode 100644 index 4a4e7787b120cc66fef7964e74afb29c3f323f03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1495 zcmcIkTW`}a6h1CpFIk~uFfJPxw|!uHNhHJ*1zyVbfXYB?nM8$zT-Rzn5<9Y;Y4FF8 zK!SIE6yhXp)q=806PhA9$H!m3bNP<*>-V=G0Pq}IWhfAsSi^&eNfn&1Qx-@aSZ8GP zMFu(+hB<8l9wycavv3$;bz-;(xJjfHTq|dE7<95-XSzEQLl!c{#gVYFR#uduNZ{k8 zMVkg8ur2MOcKb>vW?PAUm zb(%8jKF7kVE?T@A=)pQ{)Sv>_32fzPmFiRPN+k}HXedmdVao|@b~R_=F*7pV&zwa! zk(R(o_tIwbpPSGoaAkLIP=Px*XRC(V#I=MNz^`xMTFYz?Zo(Gs2zqZVF{HRD!|fb~Rt`fE?!xvG pLt!PuqZ|eT`Ht{3ygpx+?-;0=#-XR+@Pbkk= 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RebalanceOptions.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RebalanceOptions.class deleted file mode 100644 index 580dfb22357ac29ce18517c486787cd1e6641fd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1543 zcmcIkTTc@~6h2cfrE3u_B8s;GO#~lyUwjfZ0mP(96(dL@@nt$aDPwnMHfLum`o~N( z(RY88@$6DAHmD@R!_Ll`%Xhx{&NuVp=a+8)@C5Ewp(0=>BON8m*yz3LtH`)0^JJ1w zCUPl~@{S@M=b1-38X(MEP8uUkxyevF>&eB@Yiz4nS&bX1H_m2N7!}YyJN%V4Q&ZXx z=MgYT2dST#tS3P12)NI*bWViUH<_PWCD%iGrO2Ct-3!;pgy%9|-4rlovP0N?jFH79 zMj2gm9jwA6uPF85^L3+jB1aQ2C1C!IEyRfX*pb>LsfkqqE>m*t7?Vdb2%rv^>(GE{ z0ppL2HU6o9nZ?!-+9vC5yUR=4oTFtdzRZ(0(w1TX0gaZ^D&AIPig++M>URzEe%CrX zZ4VDWsNJ%F2VL}Qr`3?vVii9uo+G7u!yH$06L*kUxe2%_MDOpl$ha7_tzDEI)UhHi zSgLeSbx|%D7Y&^xK5|CnM>YsN8lRlGvoyzu$@p2qT8{$tze&;skT z0acjb{|L|2AmH`_M-R&wAovRPw~dRR;nMeV*A;HZc@4lc%y3&T`vF{qS&jr;gX^b8 om^%TX;4^m&p~9&99B!PzVeABi3f$s76}Sy|ioJ{_`CEY6FUC{YdH?_b diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RemoveBrokerOptions$RemoveBrokerOptionsBuilder.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RemoveBrokerOptions$RemoveBrokerOptionsBuilder.class deleted file mode 100644 index 8ca8b3f0b7299078c9fbb19d0667c779fa73d989..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3504 zcmds4-%k@k5S}fC{-BDWD1yp?s718r4}76WqDBKrl?0H)2V=I^v0b^lZFaX6iBG)y z-4;kmKSI~H^iI$+g+;(SoXTJO9=G*D#ukSwsz-^dML4v`yR*vm);oC2G zliNbt+9=`e2wT=saU+%OxD9Pk?Hd$o*-#GJj%o;vj`WR^uDynyY~o!dw@|ItjgY>c ziLu>n2)BYN1xW_Gy^DUQOu)Hg*09W7?mO6q&}kvU!5~!*A!`N$rIOI5$RM*Wsy;Uj zg$#y6<6>#WH&{hgT%z@XMd1sx#Go%fyU8GVPgXDmM;Hu+EK>ZceP1c5(lEsOzC88= z%G@SaEJu2E;qrhTtFC0(MNcnS*~~@_tqM9WSG1|loh@EPYg))cl#W6>9fc?z`-XNp z3O}S{+Nwy@mM@LvapTl1LlJPhj*j_00wtgjq`wdVFZ@Zo);kEVE|sxDZw(_{%i(^2 zp^R3WgKQ>XIcC8!(&CnRRmW^5V*3}n{&Po*5erNI91W{YR7zCvKLwtJ91Q0m10xJZ z^QHZwUnlYOtHnSRhDyT6M-8uxYJ*dqGZ-mJhr63xiC`WXlcpv}dUi^^lfoF$?IOe^ zXGx9ja|W;TvxkXdVy)pD;o*wk6j~5NcLL=IrIHBBmfGJ`F%4%JEO!^xKvUZXx_^WW z244zOYu#HEXgA-w1rC*qH!Tp~-#UkgCk;~!-gYNEyv6=HJ!a5f4*CrS{GdN>s-x_B z*cUwzLA8&?lwo+wGWM*8W!9;^nd!6;^*xI{#1QkQ-2~@gBZm!IZpHUe-E+Cts8cY@ zpxirs?ZhmD$xcgqP45*3PkVh3jGRQp?TGP$7LCqIw zVEPeivn;iNDWE2o{x2{{KtBx7n4(z%(vYOz8OYLekSz1Gi_w_<0J$e4N8iD*PvO4f z^bAe`ojyU&Tx%DM!bzGX;S`LKx6{$CaTxUUakbnyjvWswu<|Ab3gFIYLW{8tHxJqo^Ao~E>3vdl?hG*u! E0f0$(`2YX_ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RemoveBrokerOptions.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/RemoveBrokerOptions.class deleted file mode 100644 index 1aa0962d3e25d64dfc388619ebe514f2e43a2a14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2130 zcmds2-A~j&5TAvE-qk|{L=nFhM1`03#V0|G5KTy`Bzz@47_;q7j+M6C>~1e;;(ujg zqKUryM;WKRoT zE}n!GorvrXh9VYegq0r#PFVUi490^%8oSD%wJW=+u(?JCQ>Ab%*h(#SQLnDkzS~9H zkCsj~msbYoW~$$_+Ko-sK?g1}m@G3z?z{d|t(9)VB?ce%(;_W#4?8?kNhV`aWPoQ{ zg)t`PA$MCvTs#tKsw@wY|J1jN3vS(hWF|ENKk%{O?bdfJg{^q8eV`X5jHyHmOS8bhLJt(fzt04y!ML6^!~=5+bZrLlT2yLOKZ86aScTOL4=o_ zTdP>LUK2AvMZRItYIsE7?xEJQga2vZRD*ZRPV!6^^<=JwaV2~iw71d}^=2%LLFy`; z!ST7)mtT;d!F)}eRb_DC4)vl6Zw}mL&?rzv7kDm>p;Ed>W!}I7Fc_sSOf?k7V4P-$ zRwK})j~W-aH1{PJpiMguNSo2@eujyc(~}=z>T9V#OJi{wsD@vmvEA2#t1wsY&%ia3 p3@nV0tZ!ky#==;Qg;BUs+PMk0inC<&%C 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperator.class deleted file mode 100644 index a6916db473a0c3bf8a3a25ca2e4c5823bd2bb857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11970 zcmeHNTXWk)6h7;^b!s-;k;1e;r-jom=%TzXNH;<$lwD~h~vL}kgdk~1yC zJHLRR!N3DEFfaozyudqufLDG3GYn@XuPnz>w9UA6n(1^JTk_d&kIv=Wvq$^qe?R{U z0GHtN45SE{4%3TG&9I7JXd7D5u#1k%jOLd{(QZ+uxi%~6X4`Qo>)v40vD-|i#k=iQ z$}H+qr#Q2U<22n}w5>(0Nu8Fa(|WZdxYU8lK$^gv0nfO35(4|wrGXSThHa^Kqd{2-CCY|nxYGm*d3A*{_g+c89z09MG^pj4RL>x$W;Ke-XcDVYnph!_ zT{aq)=C&Cna8eAeRbr&m6}wI|@HBz3F4`PpHXDI4a`4|<7PqCjLF zy=u~?Go|FRwRNi0scvcvh0v;ZwFXsA8+M`Nr-JZPq2s6S4dJIk*H5RFx=kI$vR$RA zx%#@|B0Rm6sfYi~4LHggq3S<_aTp=n(qL0zq`xmto`7g!LE zYB+AfAR(F{cG+%Qb){)IUQSLaJmbh$EFn^Y&O)46P{YPIdDRtr=M znSO9usoT>^4YcYSOc;f`xm=qboQ~D)=~xYP6q;>EtEdGrAvz_8o)#w5DV{NuZnZqN37m2t!Iamby>rxmYNYIB8R#K5770xR*uAlvt zXE@?R$yBE%uB9{1eM`^J^6wf}kakmE~rEHH1eT!jxNCOe!Kmi8Vxey2*FE729&L zI*y3PT-Fn)@xnWfCpI)@a3*-nGBMtPQA`jo-Lr-c(UU_+za7jBQYrX|iqIhjMeOnr zj&Uhl#Ukahs96f!VQ;BY>=**KZi($b!F9Xnp7yBI3 zpMh~sU62?n=jN9PS$quKEXA3j5^oTVh@MJA9+1F(1M53xX{NVpLsw5qxJ#rYrtItk zh;Na>=Sb?iUFh0?S)Vi)>S5a44b6p6?ueCcULqNKXtL)blvURxfcT;-wK^6_>WAHu zTVi$IVY_;vR(#R$q*v1W{#wFfm|!j5f>>fz+A{Hggm?a+doaLXXEzs<;nI@8@rbPg z&l>zc0&fv=Tp}?ZbUhy;=?}7H6XLguSJ98aJ0$h3gu!C#-0%{R8~{<$QgybJ!?rj7 zRtX*|>4q2r;<+9nL+;#O4}m>c3==pNK?4&#i!XtrQ8FG+lnI%T2z#lp+x2}V0wZX0 z?@bVa6Hzwp?)RhJ;?sw}yB~oW0$)oQUy5_2JQRzRBak-nbOV6{dDU-hVRM3?cffrR z_N01l3H9d*%x|qeKeZ;)Cc_;$pS@$*@z8v}#;63IunUyvSkco@bV>;1mc65h^9JvZ zof8LI!X2N!&Xsqljll2a%2fZUzuHt!7O7zo@w(4H5yE>l)hX=Z_=h1oDh;~xCE)$O zmCZIayE3qdrx|_IWZ))0`{*?&Gl0h*(_GOE)XgZNO`0?Pm%XdDy#+F1!Q@F6ag z;-*i!8Tg36q27D`S;`E2LSV0V@FN4CVIXa;W(bVl@ZTKs_bN{M6d;A+`BSW9U@z>$ zZ=?7<10#@vEMBD`2T$SWJW8eUGxrOO-X7ooBOLe*ulB$}{JRfF0FFL{fB9&Xg2QkG zKacj@c@`j@hGRGrh8q5og6Htt33xu3>xE!0u9H94$%whiGIJsJDL5TqzZhV5pW{pf zwkm}U@G_hYu=4?SSMP}kY$k=BhF4%RzqB^T1D4=@ScY5h0o;a<;nV*C4*f~K diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractReadyNamespacedResourceOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractReadyNamespacedResourceOperator.class deleted file mode 100644 index a1ad46439c4647823ed5f4281739707cd472a664..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4082 zcmds4TW=dh6h4!>S=)rBq_o`WG=$!DH_9D&WYh=u78s8`%0uFPr6{bs_t8wwtqmYaNf$l_t+ z5I;U1wyH-2N{3Vra9(b%&}PY|+;oZAS8^N& zG!i;Vq9(OTYWdMF6=`-cdcr~xP(4No5N2#R9Y~d=TivhVdb4hyZk@O}cXM*q|__^!xb0_?!PR!$JL*Mo~ zFM@4vJ+{3G+nnRY_$4yFByCe2Ut+X3w(7pb=tyF2pOvxMO6_r9#=Zzes_D-+UWwUD zHnK&H^?57gC)ktp^9uC(=$?K-F)8oO$$8wcW)2kAI~r=;B=JA23t zo{F+!RbwDxRE}Ip5>4pMSqq)a8cTMRp$ywwa22i-xLH};>9<`x>(MyEVa8+FjtT6z z(r4ijQ^KyZmj!byG=Y(O$>YnCk*P)C);t}Q-;C0aFPTdl=O52&d2Y+=wK~YGq;TFt z?`d?*7ZrED5*Ca~X9Mu?Vbx6w5#jbP2+?+JxgxV7yhGs66^5?=wgwPzvN9lWe?fMi zb$9jqBHSiqe+AcEo(TPq^@TwBFu4rv2`e16d~R7%)XBI_;E#5?Di zK*3h412qEIr`5bi@2KKdJ6&q7)N diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractResourceOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractResourceOperator.class deleted file mode 100644 index b81f69ebb986f3fa9a9a5a5bbe1a243b47627d0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7333 zcmeHMTX)+;5S~q(%5l@Cl(dA>Qnf&FXt23cVmEE-q*u8qiIU!cu$I^Hwz6a-Ic<35 z7jWQ}C*FDEa1LY~sxZf59&_^x z71X1Kw-UZv4z(3X5jf&wo7CFOFIOHh!y|BXap~&9nx=2)H_A)PYx+icl>oU(;84l7 zT#s7bIyGBt3{3?{efKwku`T9!PYEd6x_BrMIAEBZSprPE)wZPM&*9tgRlaFaujMcT zqk0KvCL+UcajPn{I%ch+)7B=+Ohz)Rt!C495d5Atq!2}+36X^ZMQ(9#oYz}Q8jtBFQ_pfc7p6!qN|9WcBAtmSin&gToK>qfb5+as)CTp8 zy6Pc3d)mZw=!VB&=R`i{gw?r$7YnTC4Y7wRqSR=`;l>5kpq8+p!qmw9|0M^BQkVh~ z@!StdzZ6KUEhXnCTFc{RKfoagK3l62mQ_7lrK-2xWSQ~n)GafQR;fq(NOpjuQloL# z>!TEj_7U@IZXcPTi1rb>(P*07;GXKXuti|)!D{cc3~V%N&>ONdDtFbERb@49v1(2& zWBU<>!dEl5Rc>wBkC{sG9M|Irnem~SIW(X<)Wha!^@&Qf3yZu~>nXZL9Zs=2XU3(( zgY;Qp7-EB)JgDzG>tA=SN$ubs7MH>kZKlDzx?NSVW802!5u;XjF%xQz-S8WQa7OJ# zGK!^HeO8-Yna84DV~#6a65XZ2T^HNBe~{F0BSi3q9g!{%HklWl)@Kq~tzn7_t9)1V zpzVZy??Ed#ByK{I42n3I^;fxxd3{%Oa#3X#nTbUTcP_!O?hG4HO`{cNCOJI>?EhlY zD!T30uHDa-L>(3)67dsa%S}Pm+$$|^Rz(5aL1|(^X$cD4M`&pFWndakO~4eqO5j*F znVC*%Sl4g28u;y?3y%d8w+(8phvhAtOnG(g5}?DP-@S?l^6=yF^|921HrV^UcoF%# zt`~Hzpsy6>#rH>593-am2D4jU83Qnyow=EYEP*q-Q+8zR1P;e5D1n3787-`Qg*40( zc(OZ+PyF|zXAwwMvAGe@vRb?XCw#zYU8JWF8_b|`@bxKLB?j!G1e}PlUWls}ab_Mv z@-8785+Uhcwa;OSd)G%;szdH!aVfm6iXYFH{pq;)QExF;buq1sI`(4%mn1eVw(YUO z%mV`FB@n`Ge~^Zc2zXMPJY;4-AoGN}r8?exFuZX%m5uok8wjVyvmKKQgdCSJxoa!; zKq3aydQPYZrW0*8&F!f75}40wy_$GI3#bF0{+=QP^xgoXPDJIoKUTMN8ZHy~Sz-@+ z8P=zC45%hUr3ftbjz}2NDEzxe_F-?F?pOtpm4NJ4O2Z<7-=EI_N3QI?hu9QNBy`At zvRXs{F`nWPTieObWD!$vK71oWAUf9#0zXJNKQwMPE|B)ZJ+YvfsIuU0TLyutjyED@ zd|HZ5p6g6UP6qFaei#C0g}b*2d@JE@puBt7eNQAr`txxt@T>k^I37kMvZs2HO#e2M zz-F;DxATfupNn+@ty?5&{UY{3ELP^)6etW%7tIbzbU^{UO`q;nAQV``yXPQK3f#qd z>eqxQWfi!OuY)q7z(dSYvA6=C6G)3E5fueC@FqUwi3(6;o^jfv0B-q2WWC^O3SfZ7 z{CgDzkOOr6C=ieqlrIM#>^d@VH+2S({NnBZ7@WX=2XLg|Xav&ud69vG_&fy@a0urQ z`}31HJ_0ZJ^GD%D{6B;5rr;Rr1QN&LC7ivAs44OGH<-SE^u#Z4@=qL%!fE^~RuL^Xz-E#@pUrAyY@h7k-FXj`l zFC}1qBaOY##=eq(T}r_IUJ`o=^Ea~lS{r+$9h2(`*gr~Q--KIjY%Kx1oPhn46!s`A jqlF`ICp?LtLLJA`c#2m*hjq9I58yNS0=|R_RH61Sc^J?? diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractScalableNamespacedResourceOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractScalableNamespacedResourceOperator.class deleted file mode 100644 index a47ef00b80b04407caddc29adcc28c34d6c8d9bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5006 zcmd^DTW=dh6h4zWS=)r9gf`G{=``FD2wv_)v9Uyf$x0f zm>niO^ILYxOd(BQE7AEun6k?i(^8pEyXR}J1`CS&vZowwKI%2N^0?-{x!piL=IBF* zwOOOhYplclE_1kBkEIV{dj@0(cvIfC&YAmo{GJ5ntb@J1ojQSKtIi$iIif9?7Sgk1 ztHo83z{+;5c5r-X*Q@*ARFA6%$9p@qo%*(2J*W{_vO@Q?nb$H8(Lr7dHRejf6S_>G zux1@`rO%4igT6;9ZNWWVyr{Q+L?Cx4S{~Cq#R=R_lhh7ko_9=I%BRgHu4quFRmBc`F{4JW#*(aR3+-Wm~LKv1uti|c7kcBwfg(TXA zINF1SB-({Rv{$JsxlcW*X@_a&glaU;&$`^v=gnh`3qfiX0@Q^|Zx*2!ovu`xqLn6V zDB)~Uhj{^l2B*pE|Gy+-*QUUE6_TexLZ;YzyxfzyJi-{&k}|3vcX>Yd74!GGW-ilg zg59;&)}wb7@ETVS;Yapa24#v_eIcxs0B&ws5K6L+TQ`r#Wp( z6{d0{P!2O$A&nvT(NYETTXWC#=>UCH;$oX?F#YF`ei z-A8&ZB3A~|x*SNW4|3qnB(gy=lx!qpS!YBBn>S>M>#ssP1s7?@`p7+uOG~EkK z57RT@)jTY~i}R3!8w75yjh+%0E#dK6uY*Ij9n@bihDw~TkK%fa7c=@q_yl}w$}@G+ zamN=8&cMsVh_J)PsD6C{m};I9jd1{qKs|e>Se`cPOq%0|DaU{f{45Y9 zl>r5;kT@p|_<+E|aFaLSBLX*u*P^cx27E$bHtfv?d`95<;MgBA2S#*18cb|tTt9OM z2wcOjIy0~WvoMGMZh-+=yw2j29OUuIbK&!Ocpk62D4oG;{#RJ|dg=Plu=G3LU4xtW zJBJ#9-ZK8qhyU~N61o*Kmg!SdTsbE_{yn3+UhX;C(RRL--gz{Ra%B BWH$f+ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractWatchableNamespacedResourceOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractWatchableNamespacedResourceOperator.class deleted file mode 100644 index 243ca9f0f3808eb20bda6a66ba5b18b8c5ffb7f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5763 zcmeHLU2hvj6uslPal9lXq_pL`(@-Fx!CNSxDr+niw-ty@LCzAy<9K(R3|;S9v*VER z$bUjeAi+Bi{0@Ev;?92APB!skQi4!k?48{^XU^Pv=H8k4?a!Zn0f3L-!x~fw$Vj?o zpNYWyh8-|dgl43q=zk~7aKI%~p)_587%47CFC>q`p>(|wTu@^8kl$^lzth3WT!MfTGJzj%n2rQ4#9!MF=1y~}+gD(T^ zIsbrr)D8Os;WH(|fDUAc{_00t)TlfAoO;~#nM5P>-eb1M>6!=|X;d0nR2peiMlZ6c zG)7Tbqh81(8ib1WbzG=Icz!tGt{R8OP&Bjz8k%)u=D`y7qCW_wqKMLCT`AnV)MbHY z(B(9n{)Oc%UP>iU!k-6P=PlKO58$Ube zH*#VYPaXQE(|Q_gJF~Iv~6JKnhYq4hD&dz^vJWj7?@zn`|-<$2N<9AEWmOXZcv+Qw` z>^PDfnRNN+Y}wh%M6|85u7{_1ZL$p3V3WYogmi1rz=RVYe`;_WA7kg#;5`DhRJS#F zAB(~01}sUl1QxfGBZPycKC0dT0&{o~3AmL(7?_6&)UZ{71*qfyL;PCBf8%E`zFuAY z5uW`OTXXOn{?20$-ES3t7vpCGF2nQKx-#+RDz>U{4PMBxU(B&9_$|SHsQ~*{N$gkP z)g1e^99z#T!M6I8vAC>`;DCU$lq@kVB4jz=U^RYUxAG@ns37g Q*w!1?TksB;@Gji>3q%)Q8UO$Q diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractWatchableStatusedNamespacedResourceOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractWatchableStatusedNamespacedResourceOperator.class deleted file mode 100644 index 6c99d2b33902e756a16f798c2cd423bca138b4ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2937 zcmd5;TW`}y6h70YO=Aj$?sC5k1$K*6#jhw1kszW%!hn>TA|5C9v>mWL(ag94w7+2g z&`OI0@B9J&4dRS1O+qL^g$Q13&-k1(-<czv?hY;Eh(Hn=p~OFW5eF zg>vNTI!?k<2k9sUL&zK4KSU=`lhM7$B z=rK#U9sChl$PU8X7kGNqGGi-|F&~TM^zR+fhQYAV??4Hch zh$cekLDZr)NG(3vrJ{%~M)z4PBC0d23&LcE(;cbuaO+#;JlYhN1}rSJ-NhI*JdHFR zqAt>~L*-7cm7AX^GKVL5ySou=_#3^B(>N4ua5S{R0ooBZW(w3l8c_cL=+Lbd!!{V& zL1(70dq;!aJAhq*{YgOcQa>fMi&{TLXfv}NV2V(WhcXRCEQ+E&S@cHo+5rbvmSF)- z5;(p7_13fEi*lt zfI0kHfJJ=Q^VJeG@V$wDYxs8Fg7bWJ`9C=E9#`{l3ZILp0jRTz&*l8vfj{6+T%8`< lIRkcdJqzbhrm%e;EnGmEIk;HvT!NdpcJQpra22k>_0Kup=ZpXV diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildConfigOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildConfigOperator.class deleted file mode 100644 index 40a14c3d3032e4a4c894f0ac19429d34d1292129..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6947 zcmeHMTXP#V6h2CmZtSE@NhuUsU>l$~Tx>1{N^DY+G~qIC!z5{d4lnXrcGT>yj8>Zo z{SCbE3-}q#zzn=I!yCVc>Cs-Cb-d}SX)*(8Co{HJIr^k?^qr$m+Q0t&?GFI>6uz)v zguvZEIyH}SzjlxA&>9!DKuPZ1=QYt|k}4rUV3at$WN-1Wq@&&(%DEOO@s(lWMo##4i5&7VoGfmos10 zXEzCqE{Qg?phRG54`W$MA;)2YOnh_4*Yj|9Slf1l*W)f#T=;fRik8c~V9qX=Hny1E zW{yiG8uh5NO}osV;i8)OSWSJbCO+;pq&`;ne4Me{f(5oOlrZ&N|Esl6%NmcVEz!0`T8JvMc1H>?(jx;l7`jrsjcnDTEu>_sZ@A6^HFa~D{ zT&Ohnq<0*XNSaSIxzBEg9;*KhJ$C}rP2o^?Ga*9KII4#x@O|_6&KPw9rG5_JG%B;r zK_+X1b>8)<-Z%(2Lk5jzCR6I!2fYsuG^FdXuZvbRiCujj|L|b57W#^N>`Q-#2OI;m zpf!7xL>P~9GcCXMad?rCUkpw%X^#SO5BgqUoblV-@(C0t1kOh3fq8PL*QN?-^lhb? z7Ohwf)Q1x#rzI2d0bn{fgockUk(bfZ7xq|6SoSQB>~ULoY?qhq5{%}(QZaPc2H z8W;)c6!-tH)-wEyc4g$>jYE;-ZiZ&`@eqvI^corY=P8>qH#J!%n@fzC?&;=ZUaAW$ zkLVztkv9E}_=Jm5+`7e4D$i-~IUw(}4Nez!`_beel8DyJLQI0$- z;Exf3jf|qvPMnZNmaIqD*dto*g0N?OX zf8x^!OyQ@t(e~%?b29o}hG$?JpGM(4Jd6D<;O`N54xYzvZG92HQ&inIMtva%^-3=4 zCAi#2eJL09bRYHQ9Mr41s5W|^&UGdib*zv2Y7XjL4l04y;VSwbN8pXV*Q0%;N)FOj sIY_7AP3$uQZzWi7!{_*X8P32vP=oj21Naa=hEJf5uf%S^0xZGu1LGhD$p8QV diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildOperator.class deleted file mode 100644 index f9dcc0a2f6aaa9626629672ab29bd72b4d1d0cf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2280 zcmdT`U2oGc6usWMr48K&gYmTi-uUW3YFbW9o(NJtrz)>4T_H}zU?iCsBvHTX09 z3?z`?9r2qGH*TWRtx`J#0$vi^IzGAQ`uN^_{r>SY06c{U4onfK#X9gJCZu=Bddw5b zi;Wi1JK?Dg*UTvG1z|TfTn`pBk5yL(+&k(vxR%`T*n8F$VRJ9t;y{kTq9qKOYX}E>t;HSI*RxQ+0!d zOkH`PZk;w2kEv9KM$80lYLK2EcTm*N^q9(WlFD)tb@`V+){kC99iS7a|a`;mH1*kJ^Q8buj3Z#&#ASkp~{@kMMV!R@Ec9)q>s9fLWWl08g` z7EL~ebXOen^p+)#KkbNrAv8xC(~$BHrAKDv3T*G*su z2W}FWv5`Blh8DBK#5@k%A~0vC*_Rx+LtuXRARV}eZS+Lm9N0isTg32Va&K}}wvhIF@{F^2B0~Ehl%mO|W3?Oz9pG7-%;XEwiEC(0h zBJNwp@f2Kw%lJ;vSMZ&&CVTs=S4Xg}j$oaJ70b7p@?MAgIG;!68$e+lZo^$D{Q$w) B+vNZN diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperator.class deleted file mode 100644 index d2db38a514ba470a82d6966f0454ff510d9cc821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2681 zcmds3TTc@~6g~rmZEFQYK@pGvZ$*>tix0*k2@*|=D=bQQb_5DWxcntR)7$Lx79k>w_(mi4w<_hJ; zMvLgJa8-+IW|Ve=upJw&`v%Qp)z$%bkJ~=ik{ceon_Z_J74j!SHiT?$_u?HW5SU8P zLnfQFMJ*IGZ<71~fdrcxOiF%uk8gYf*Mg;|}2$HLZZVQY5RwVz(ByL%C}lr|JmUNc{d z;2{l|v^(%QP1FBZJv;XBbMraRha4wr6lK)BY4LI?%fX=oJQ14#K|4M64{#fLGf58& z03EU*+gMsH8hilimXcd6;xTpx?{=+ipe(`upIQ%B$1)V*Vg<%vg1}7G>#NW%N~LTj zDmCc|$+y}O3gR9^;UO^XsepwCOba{j84Ko6!~_EGkIQbIK&dNhc$fs{s;ge^Ia|M7 z(Ui=zHSW6kJ-;d;5I78*=$bb z)q%SNifL{RtP&VYZU6$6mm-c)SN8Byi(wfEjN*e0UrvWXAjV7?d1t_u(%m*+zn<^3=Q5wZy!!wEPvM~jB?2#E={W)Ap|eeQsl$a6 zE6Ib`+z}CzR0-*Lek)c?b`~UyMN4|j*=aSH44GoFGus9&3!g2e8!hN1FqF{xG~9HS z8r#fM1WruxkgI6|mnYnHCe>cueg2JT*5@o#^~rSty|bdpET|9|?2yb!DP$S?N#EzS zP#fa!vZn2cAmTn%T!eNcMZ;%7{KT$SR=1elWS&nYf+Fhe&`oBKb5To0)-sW`RAgr% z6Itts9JiZ-#dau^9Z=bd$gvluKn_1ZR>du38}O|+oPdAy20#B z_fa8e%PZQD+Q(NsvtXeT%dU2%7W4y%gF3{v% zPNOOZR{Z!RwsP2xsC@~YEqRmWur7*lkp?Wrh)c794$Pm+FRsf#{t34p(Pf6UIUZQS z#2aqrfZ9oPfkv2Qj}N*rv*6BC53~J#4ry^Y&z9!)JQgK6`R7-^+zJ&BSV4Fd%5ZW3 z`rs6Sa}#c-G_?Jfl#W4{hitJGV0l`lSPcjayTYUXI+a|{)5Tu3#bW|5-QQOP>jWz8 zB7-47V02>A?HU~#x576=s#+4wUH%bn$~A7FZccP8)ZHwL9K=o6r}2PGsiU8TyFBLT zh8bN@lB$VbsJdBn*UNB`khKE!HQSN%Xu2xS*<;8oj{N)c0f7-ugt}&J(7<06hD-uu z-JY{~$9OYW2~h=Z#^B9y-~Y5zC`)00tR!9UJlFYT#Bgxd@Foo(fw#w%PG%a|rean$ z!>5@Acy{R2_s#Qx7h_KHQiKK93G^GvEVzl?x3QoZEVzw*{oyib!6fEm)6}+wnD#8V zOQ4(?Zoz#5eMxg-fpg#sq5TvI3@q?C##*?F4Oa|fK%fUdSpY}e2`6y0aP|o2dcFD{ z${WMgH!$!KXC)ZKQDXqHLpTm3|Eq8shH=&lXW%UEJBR;Ea2_t;uSSpHZ^o+kwpmBJ zu-aW%D{u)er*_>*?93RhbYZxkFqH6=9=L{M3GCFKF?fLUA+%&1Zon;=fIDyxYF`0e C9fhj^ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ConfigMapOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ConfigMapOperator.class deleted file mode 100644 index 7b80e6ac810509ef219f5383cd8f8f2643186c3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5350 zcmeHLTXWk)6h7;^kuB1u4Q+t5fEs$SX=_0#P%1ZVCzBQirI|_64D@X+Z=G#rNwZpK z0>6qkW?+DKeiXye)p8w^1&Jn*3)Sk z)Cru6NnPp<%=O+Y=12lF_WIMOs~ZFs><#Alp2J;ECHFns9}JkV5Ygoxm&*h$x9n{u zudM(B)sw5@NnS%b5O!&NZ+7_{2^d^Ge4A7aW)U70=tnOeg&-R(q%C~ zL0xf*-i(8Xg6tn!bRE4dc%La)*Z3amCy@{%n*vB&frgvykew;67{ zk*nIBxs4Py&sdYxqX2JWM)U?p0jerqRotW+Nd`R%Ij4F?Z)QtQ_lMqG-E&wF<#dHC z8CS6YP)w=hi$lau$`HjOl|WeQC}>U!B2gzSkyh71hq+nM;2eRAEqh!?C3cSMtT~%| z?Ad6DwcZxR(uu&l?K{-nrh-S`>0n*%@Q}a@`?xAfEDf7UJ%&3Ag=n?y$v7JUHu=D# zQCK0cdH~S1^MhrLU!!npVKJH%wMERbwTzsXHb$Q0L-vig%R`O|KaL8lxR^wJbvw%m zRs${*@^yu>Gn-N3kz)Fu)J_4;HLHp{=~;xpS?=Mz!=vu=pid=wbgQ-R&R`wfu_Yt9 zX$nra+IA8p(82N;XuG+jX`tM{uNrWL)P6g<%`!FS6?aq?aHj|FB09I5VoPPL|0mP@ z%2hPuRL{KW$rMj$bg{_`$tEC3mq$;$ylA4LY>>3Y4yfJLy zB|L;HK;RU1+z2efX_&#cI=*Yrz-JS`?&81E|N5_>e?LF_Go1YcziMzEpEHO7oHdWn z+4x&+5YfF<~-RNJd143A0}PQi6twFWm*eOvGlzZcOaZMX@y!GurYGx!|7gs;Ft`5*iZ DMMB`O diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/CrdOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/CrdOperator.class deleted file mode 100644 index 11d7b578c7cd0d896bd69511b4317ab8b0f744d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6803 zcmeHM>2e!I5bli~ueCUrNx~71!5opmNL+zn2_=qV2P*40WpA7!RTMSa9m|vKp_(1J z5}t%Np$e+tKhFWLLD92^4oiy0iU@!5N7ByrHQm$SbhrNe=hxo>;2YR9;e-J@v2ZH^ zIUM8)+xv1FpRAXprAgv%#A23)jvm>Y#I_c@h33hk)XVxnrmoa@I1oU?np4WGs_ zzA5bTR!C(>FvWi4ea&&IbtE!<9?OOjF@nTSNET{5Ex3(BYhB6Ypgn}cAW%>Yy{nh8H1Uh zoM;{%Fu~Q4rcK;Bb@8|}c@TMIJ$t^dPCvyg+m(n&G4t-wfW??!%-hM3F^9rb&uYG0 zbL#bSr|nUh@vg^DLbo`GhO5LWS%sshG{OZ$MuZZzHLK9TjYL7NX9Dp}wog00?5W84 zY{btAyf>mw=#hZO2?neYg)ymj2~WX+l0)iqkHj7H7ndE$$bKXe-!>I<0u};YhIb07 zH4s813%!{1%t>*$PNMyUD-r(;&aYdAu~s|NS?zSK{+7mDOi~OfeJ%#u(-~}c4eq(Q zKkDja&d}ev=n02u@ZhIqz-(ABBUI%uL6{CrQYFklj*hO~q?mY4%C-?Q1^3tlbzA%~ z%St;e)g};Y#$Cr3Iy9PF*zBmnaiZyINy=~!2#%W6X#qQdSSzerM4J9ppqyP=X^DrC zE0)NvYQZ_UxCE!*6$365N4HvMY#y>ZodBCzM@7YeWjk`Izn4WRTb!2% z9D7U0o_))V&FjTMl~~nfYJdC>^wqFM#iluFKe4&)f&}ioSh5Fm9c?QOEvkMNxv`N? zM*(SntD5jjJDpJSfPEJp@|dGH*Hy!oqysw7vUAL?F2Z{T{H@W(<{TpsqW|O!T0Ma{ zw|fGa&LyNlW58)1V!0bqKgoAIVb_XBh9D!x0K=#CLCH?D2pxU@*(B7u`ZJ`+L%0Yf zWA4H1;&QCCACFr7p*|K!Xk7wYM4E@@#qF!6QZH`b(N&~{AlOzDgrxU3;KSiG9&F~T zeL24}M2t9`zfTi*5y}SqtdYLQ%F9_50XW?qntz}}c9VJXCRcaw*}lRw86q0+SFN!& zJg0Tm>?5AC*X*axHZq8t)rC6EOrm@74qcrle1S9aG%6;1iFd}}jb_4CoCW95mjR^- zYe<+crcpAXX2AKuwY0Z30Vm&!IgFWb-GGxxrmd=WqqSg0G>9e?nb@b!hwx2v)1_ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentConfigOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentConfigOperator.class deleted file mode 100644 index ddf550d6769ee7539d08fea4bb3c7dc262639183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7137 zcmds6U31$+6uq0Kkz>-Pq%DP}1vOA=^I`E#sZD4|8=9abB}p>_FN`d&ooywpXSGff zUU}k~8J_tU%)ku1Gs9o#3~&4jhP#qw$M$w42WOhei*2p%9^E~A@7|-UKmYypcL4Yl zHVhae@NFnu%Xe5{J#=;*i*YNIg8APui#MroBo~(JwL(cncRFNqXtY8nC@cS6@rT#JV)|BJqVOD-Y%_~F87)b(Q%9H$DcSFey z0#j~F2z+K!niGS=(!{(b3+%T3z)gFZz(1qgwBxO72%KdoyhPx551KVcB4O2n-CHKh zgLG*|`r|E0t*&q>7wx!?V-Edr;ct6d?9o9y?4faj{+vslXl!f!l|Qp_P>bVR-LIs@*Ydg|5W1}tHv>JzL6+{3}7Dz{6%0V_B=8H`J{0XBitQ8&|oHGJWq z>VN_FdtO?^`GhieHGW3i!pF)Gt^t8l_$mePX%8`A0zVDB`T$4Oc>XuYeLa)^1*ZPM zt1+0yPh|sWdk#ORqThLV9%k@r9L~c9oOcm_kHHIY3BQ%~i};z&o+I!HG(NDCSyfFiu1 z-Gw(b2(}jCZ73Z;80+|8X%Olf1Oo4(4{40Qr$KwHK|6)fq~hVjHaj1|S9pB|&cMg; X36$|Q-e<4?i*OgdfMxg+R$=`=IJh4w diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentOperator.class deleted file mode 100644 index b28d90988210c80aca47ef47fc39b9530f4d0194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7792 zcmeHM>vG#f6h51}k?rPE0;PopP{XAO7mIQ!r8a3p+O$cPxa4A5I{c93CD~S%G%Gnx z;W>B~W?%+>GDDvN9)#hnC0TMJN9)9al<6N^m!ogb{j&SV-#`Bf0AD~&fgu9-J#K1E zgW1|cW82V}qj^4O&F`7!xRe{d!!^@tc|PUw15Q1s#Z9U`YSk&XsZTxa26ZjxNt4=s zHT+J29D&nqRLih8wQBt#HGKl3uG0u;m}7ec*7X6ga5utrc$vU(h1txXB``Uy*C_XQ z%KDuSyYm)9PRlbj0=apoK@~VfU_9paCg%>%!zelR`-UyVwYF(PHJzr*EW<~>RhK(; zi#ENhYO%1sMb!p1ErTPGYnYFWO{z{YrxdEP6sfWlsxp2Msj?KSa!PGD)KhK8SDS`! zZmB-P(;XL;mxM>9m4w|&g6q6B&2|;zM~qd|HP%mLLA)EggW#54B}PCvJ4EOHPdMSuZC$Q<1=Yy z+EJeY)~6zl0J4f!;;cb47+q#NG)|it#L_B?36Fuj`m}|l;udY6Zc?71u{A7u_U0gn zVwGl~Ewua=&oX<>VOV$ea6#>(WJcK_$Ci2{Yw$an!E@_7#{%zP7^pYt;el?uu6Lr7}uFiS6WRRYSx9(2u$b> zHYc^vh~dMWzr}EFc`&HCB^DtXop5|{drvKcS~oc_iAkssj43$Xpy1OpdUwl#JQdd1 zrfrC-Md02Zf{GpsQchfp&Z4aMYWBLmnk~=bGUr!Yw$GY$(cWerLpvk_jX+V45@k6L zuMzS@7(N2_Zok&_Zjdf0TKg)R{IYj74i zuFV|oYH*xpu!Y=k8-|aXx;CwMSIhEVJ?(w6G@}QZ9mC+(;SegiNdFj6d3cAwpAt5B zwrdKerv|lfFACEdf!PBoFQNT=hXSZ{j30Ks6&=|^V+eD+M~F8lb3{J&yur>K-w2E` zoCUdUSW%GH4rJs+ZA;d9Ea9|>@ZSH)E*bgmD{P*uXYBrBp+O6boAV~#WGW(50u z*r1Jm$Ad)2l%nN6(Qs${vBCTWhga(!<+u}0;QE0ad?{JqZXXh&Q{b>CWM0hLMY$g3 zn>>6*;75sAk(xuKh-7^qC0c8ruq-gqb)AjBizbBju0MgNgPH~A>YmRHv)$*3(PzbI zQV)+ZXd~K{jaIJgJx1w~5c_QW6{w)xv8W2*;muflFW?lojwd@oR#M|XA%fGeAXXA4qk?{xbivtatL05 zSMgu0cOL&EzQpPQ>SPLEms0r3!Rzn_;-#U*QmQFvms8LPOu?Io7V!91hcBVUfUmbx zkd{)BF2ZyNX{Lh|>+RhXq_0zua_~NU(9v5dRnnM0Ed}-46jTD2;G+(IA9wi6?<=XB zf+RfZ(}ZWlTECpa%MU3CC*TUMIs~7GdcO)Acs~iFP{tGGYcL1%a1(C9BHV#xsKQsU F_755X=0^Yk diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/EndpointOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/EndpointOperator.class deleted file mode 100644 index e9a134e77bf15ff1ebedb3105bff1ec76c940f92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2465 zcmdT`T~8B16ukq*Z7W}*_yy{KqD7PLix0*k2_YDb3nYLT9;drw8R*VzW~L4Jzl@0{ z`tFZ1-r06rKAN-`HQ}M#naP>6_uM&i@BaMt^*aE(f@dBK5%^$q=*LV*|9~}_FO+Yr z7V#(HtAuN2mG;AW!&t7n3z{3%&>{B^8&$3)x7_$^GD?(?cC)?9gB*d$l(Wuc&EKpZ z@X!*tvLvLi%LHai!7kVKs1m&Eu&mYvm$tIFOCYzZBJM$fz(kj1O>3p|aFyg1-b)un zy~!gQsyGpKW`&Y8(W+YKv3W_0g`Is)BOcb7Mo_}SLssK-UZ`?gVL4M+ZY%6AWD3h& zh4VC0+)$}3jhPMisYQBzl%T4U^q9`FOJ~_dUH;>jwW1esqO_&R@{v`w2w%{UNf$wt z(@g$lMK;~x_tbON4?RHCD$1xmPI$49InNA=3xu(Kuv=}1_kj)i>eT3cxGt!A6Z5A< z#QU(Wiz6Pj?xedO=k0UJGI_Bq6(J8}qc8&F1g1+tw~%aOjgz&s&`bnE@{LA}m28J$ z?I17}sF2lnnHFx|Ud-8jVF>I6|EOM82ozfN2+s*)C@lu3&&~n1MNKl>&=};}IlxlT zv16q>bY`yvnV(N$mMhE1IkVM}R>b_RYziY#?}{rhX)#5)#US%pB@cHAc{4!S&35!L z+i7)uz#V0S;{N{~znC*IwcBYAeJz~jrZa(A`%K#hfzN--ZYx!6dMvbCoJGeQEanCq zB9Ag(WUpO1-;BFf8rW4HJV3K%l8gs)1jag3cQhV6#IJ+1Df3`~!1!rnc<_WkK8w?X zMFJyfIVCW|+uLHj(}Q)U2kS7*qr2K`^g zL=%1YM;Y%d-E<2iZH>n8vb!@mbLO5qXYSpfzrKD4fEVz@fe8ZdV;y)A6Vf|mUFHep z#YT(hlkilVYi5-8g0K@CuKN?3$Eu?P?j3dNTuW|v>}^G?$!kV)7VY#FI*=nUpU{R( zHocwtArB0J=`|sRStn4g`1@R&j33Y8kT^qIg$D5r*FQT^6h9b)Wt7{QF zqXCmPf;y+E{ELe0+Ot1b&nY{cgP}%IM$N}IFBUS^8y)G3*bG7M_G~@`Hv0C7*@v)= zCw&KVs6~ShA>9_oyn)PkpY0VnYoQC7&aqNeggjg-!4%9ASgiQ{ih?yu$YxS;=6oUf zn@)s9ZI59QA+X@9fQ9=^3p?&j=1fb(1U~rxu5?xj6jXX%7)E8)A3Q?~sEMXzrlT>= z*Jl80e#V#8?7%v|>Zj%&#I0A?k-5Cvkw!#(OLj#pQ22%|If-{rchOH>SIxssLbgXJ z#OaD5)*I9~1f0<~I`V&9`>}kA`K=|*^_8#&T*|0Cxxh*%jfKGHzvaJ;I<`X=m^Uoq zF?LDbNX?P%xOS#NXAL!$yBxSnU?!u=fo1IQnF)JD4%{O!J7@<79w6{kG97qCAfLwT zz$$^Mq|6d1ZHqX@tG$O!B8FukFp2*?02BB%1=IL+aP$;s?R@bYy2|*%jd98LOJ2P)#JSl Sk8wPU%y)po3fzZ>Q27n#L@M6^ diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/IngressOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/IngressOperator.class deleted file mode 100644 index d9a79c063e8d961e57ea8ac0d24cb8b7ade0a60c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5397 zcmeHLTXWk)6h50Kk>Z4=4J{N}=#m1px!Bw(wVN~z4K%0?lcXMCcv(vuXIou7t92&j zoj=1LUhLNHHQ|>NR2+#LB7}Y^|%w|<*v#PzWKJv>_??upw zq@swj!&*|fSE$QE?LmvvJpAX?GAn{XMCO)znotIa54RiUVgVRc5oJ_8=pUE%v#WDuLdVqojRqa`<@iv({BzIWCEt z+>Jt4_#8>m^~W*Cj1oDfNY(Q2!fat52-{<-XJlmN+>^I5szWmp*keX?_aKFzQd*62 zZ)9|=x}*DUz}0T#(X_*&29zswM@B)?G_`cntl0UufbDFD%UCB>_tikevF2W4I;bXw zqFVwRUYLU^I7#4a+3C*^X+Dw}W8M)VztatHhS_E~HV{~FBA5A1CWXGw7AMuNhzWe> zJf2CZPGF{&Cv>4)aRwvS23w*XGA$YemPZU4PL|DjexX}U-N~!k|Nl~b3DM4Pc0(ls zek)W#a+R;!@G2oU3`VW|i81?RFs?DiN0Ngl-CK{=7YLjbAx_XC z^Y3;%rm%|Nma#mkz^7tdALVGl%5b6U6($64%k+BpEwaeHO=eSb#J`=^Ld?(}qh(7lYCrX%8O0p9!4aWpM_$;&~E3 z771K`B+jm{AE5o${}H0$=njv+6U*~7>vZ)Jyb%$U&JPIua$G~lN-I{9 zxk}4IjE5oI%Tt=au`zlOGol@b%@r1Wh{rqW-mu_f0#+811)ma_&2BV;1)t;D&~OX2 z;0x@NgCl|k*w^NVMBjpIXqYdi-P3|)0(Ksf1uF!mlJ8#&R`D=NZ$=Al4xC7(ydyAo zI~_K+aV(AD4Ipp=kH-L}@oFmhYvJ7|xT@Dnzk~h#Lg`nS`xEabU_P@1v^|B_bNCcm z!D(2)-${58&fs%r@p=MYf|v1ED!|sRHj{o<@Cnw*aACfN%od k$G1*EHS?whYj}SSX5j<)2&?%ST!E|5fF-yNH{i>E0p~o<-~a#s diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NetworkPolicyOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NetworkPolicyOperator.class deleted file mode 100644 index 4332618a958ba2ae214893373be00e8f2f817658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3082 zcmdT`TTc@~6h6ak+vSep1yEPKftRkR55^)15>(=Hkya8DqnU0;7}(uuW~T`L4}Xh^ z8h!Ui8P6=cmW5)eff!!4Gt+OrIp;fN(mHb$f!?`i3yaIsPn_9zOVh>Y1p--Ti7GrK$P?(8zT7{E0-YD(=+< z?oFIJAWI30T57w(%xo%)o54CfR1NUUan&?{HDf|tGYuFIMw!{Dz8dUrQo}_Io8)EI zfOVd4vGPu%&{erVYfo@ojz_VBSK#9QtX%n1{~p1Z-q*(=ka2jTH_&sx6W~1BzP-icUm##3K}vt?xgca0}6aKpsFg- z(wF-HlTNCz^69BA-@KDl=w9qpehT@Am#cx|KAQ_RdB{zCd^@UAnl9lphPrBj`YgoP4J#)Zo}4(j|7DdfjHc_v zfNS{V+Z$E`ZeZ-viEO|)f$o$L2HYahpIXvsX}}!+M`>HK-WAE zLu_9~yvswl30CJW*h diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperator.class deleted file mode 100644 index fc5201b92d2c03faa874f6ea170cefb51d5524a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2401 zcmdT`U2oGc6usWMr440YFkozB-uUW3YF>CibeotakPxAh)@>4xZfZJjiCsBvHTXUJ z2PBZ-ogam`P7_*fMePtEcyVm^`1l_C_}+f~_VF_SY{Eka#t7769e5EF(mQ4y<_YD+ zMvLg3@KlRyW|a1VupJw&dlQ<+s;vX=owVy*OKy1VRaJxUrYjuC5tvE%LMEHuZvB`C zhQQ>8kiu*cSStC4T$|I1|MCaJPAIrEmGwgcxg8{Ppg>@{NAgT-rSou!08|WHZSq)4q_r+KwOYt@U@s&n%q&vQ^nauEo8!G$P_JWJkmTrEc3Kk|a!2>iU_rDtWj`$kP#0Yqnyj zu?C16x@H8AH~3$D&KENy9%(J9jn9R3*=&DVOv(a*_rJ?s+jT5vEHM2xYGfwJYVpST z5<7}<99Y2;epb5!t5}__CI@a4$lIR13+%5Baac_FmQvnjc!1+6WWEIy*5D4@ GgVJ~XTBtg`~IDi2p@v%Eomcq<*(snlJA2ZQJ z-+k~W8E`KI&J6P(|d1EPy6Z1yAJ^H5bioKM4+ja??z0-?g48vS4dYI zC89UNl?hkONagxrsts4Y3B|QcmCxP7w8>S>4cG1q89WwRrHK(Tev}3+ZZ^9B4wMK? zX7C}4TkdA_fcu8P=(31~Ss^fA^LDv1M-A`!H^8+}@Ypn#b_tZ$WWXJ$5SZwJJW)!j zGMphL_A<5sg>4>CUq*=tnT>%aN;X3t=?Ao0+1ckb;C{#y8YRp>WGzk?g{*gzt>?+s zyUF$@@?`71WEW{5xu&r+G-Afzrv~BqQG!{05090t+sf8$)b*cUtP{P65~&PDls(o| z!oN>_7TXA#oaX8OtCnrM`GxtMI6DR-Fiv2m=JiBq8>KRCWg<1< ziI{Js5eniCL){@T7~yG#i??oO7>zR&~$@6XF_gFvMtYq+5pPHo9MzRA{LTeM3HqpT%vV1r}!2s#vDjSeL4o)3s5C z%Y^LxfVSrzeK>nO_ddo2c@OUKH-%&{f@9&gvm5=Xu*{_e>F1Yuc9{|Q{JRLe+QciE z`DTMfT;t8mgPcYAip!^81w|D6C0;sk4WB3{i{`)rf$`(Sao{?E>4E||aFf7n!4FFV z2W}H6=b1UML|`P-dIDqXLTgl!9lXIbEC7LFe4YUeVQ&ORv2}2C4`=Os^*xkdO;z8* z*vHIf0$XbXXgi7RSk|w?Ihevx38vvZ`psZ}2rj@Zey#OI{N||Ew}X1A0Cm0qbr|L{ Xy!kHf6}W@raYVif6c*tI+=ALy!_{)X diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperator.class deleted file mode 100644 index 1ffeaf9824015175b3c8224da1947d1f7c08b452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4470 zcmds5?^7E^7=AVdE(x?C_J`7{2d$b^%~^lehN4J;RuAZez>J@q&1DVSCbyZr4MY7y z{MtXm8J*GZ{!xzaU2-IW;9X0`ar))5w>9n}_^8>Jnu*$Ir${Ru4s)zO}Co_1F9*Le7lC~v) z|NG3mpwk;2)6q#T?<<*fz=jXRxucTm45R`*)~Y3gF?e`3Q9d{9efN8p5Q9|4zXb2N z5}L}shdkI4hS#~_V{kW*SzMmM46ZO-DV%N*!cY9HD}AxuX;EWR<@D7KdkN+7=04Xl zeD6(8m;)IwRNe8nKh&w@x=jF;KW$$qy2FwX0(ND?=V4_rIHv&1F3CbUe1w`D4Px0X zuh8o2m5y&@OFZ%qWgy9^)$scr^(y33-i?K-oW&wz*HUyf@rr~b4f~M*{=Z8bgGKF* z;hI`gyKtfG1C%i=b}FDVXOs-z8UmT;8P(2*SNMt8*x z8EWwyc@2p|)EfWtpaz*h&lcY3Xo9Tlkvc z^6*@@g|M*7Fd4PF7S`x~8`hGA^`Yx`H%$yPTQUgfCS9c~L4ZY&IrM*k3>GknDH<)n zLY8K8(QFA`FP-8a-#CaUO5rO?sOk z*6XzH28}a#3vbhJh<=BDW7cqOm(?D@dTRtL!xC;1UzhdPG1KHR)4L;>?u=l{;(Zi) z9^NK9`?eHEFjOOk4DE6OAJ8*{4|_IzgbjLMAn!}~7@ttIzQA4F!!lOz4Zg*Le*jLk Bq3!?x diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PvcOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PvcOperator.class deleted file mode 100644 index 76ba5bdd15440b11e319e09cf51cfa87274b599e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5503 zcmeHL-ESL35TA9Eob84rgtpMMz%_h1eAomEw7rnx1}6<%lgM!+@r2gr#o6{gti8P` z@F(z&#D9VW61?-wEB^{&_CAt0S?65K1uF4!ce^+9+u51fnc4aMub+PffKTDR0R;lh zP&hS@a=-S79?%*OYM~U|`;OOw9urgsqUN|!D495(5G)KL;jr4{sLh1WBnxXh2hMiN zV88@{xfsr+ez&&We#9I}V9MU!*l08fT(O(X34DjUoJt<}cF^rIVG)?!+}PS~*6-Pk zuXpOL`?~~6_70V}xQ~CQR=CgQDuL@2dyffuXxU#L39#mJ=1Xg7kHExQ&|wBVhj__E0M);n5ORWr?bix;pY=iS*p- z1wxvL@(pbZ?%XmR>MIG_%*?j`tWu^%7-C0HgYrPR-VkdKMHibolHAn-o_22yktqX{ zn)2HoE0=bd2ss{AU+x8NyeB^ zo`o|vW_Y?HH}42)&6VR8*$PSG%^}{!O2F@qgJ={{N8xE4I;^KkiX5T))sWO5IV?jd zW1yAC7@W_SvkcSl{4|tcp1|dbeOv$~^2Y_ztj&G46?s^^wJ6p+1m^9)q3#|PT#eJo z3AxWh0xf&|B_dXHrKE&HTjBDRCA&YmDS}vEg+9=!EfwzkA3L)+g)nvwTzU4~&8pt8m?tT=W zXDPlDm_eTigmO}h;rnQhi|83?I7fpl68K?!1{q_TP?G!V9z)%Sy$+S=({AO|HOM-9 zS~W9T!w+zKYspR`61w$||KM^fM>|V1*?A|f2yc)G;_>-Bn1FWU-pe{y zd3)|e+a+!r5cp$U>AK#=+cS0K7WG(&JrLH(@@LlQSvlK(c_RG|pOp=GANxPa$u{5v z-1zB>fdMx$#`dRB13o5Tq*2^}TUZfk&1AqG0#~)al!ykbU@PfV#4rFGQ8U?OQcfH2 z8G%dvb4hJ!z&!%ROn(M^PGB;=NE)!-*DFh^Gy>BPco<^w-NK7~2sePh1#H?CU;!p! z3cnV>fFiyp@lOfL_`Hatn@FYT%D=$$SMxJJ!Q5{+D!>c)oI)B!e+i${@pl<6!xbD& zz>Dw_@?FJmwZb)gE9&d`&QKL^g8H%sbyV2p_>Ga2qUax88+1tU=>% D4c8dI diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ResourceSupport.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ResourceSupport.class deleted file mode 100644 index 8d85878a0f1b6b54c55e9b238855c16dd4885c5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9849 zcmeHNS$Eq+6uuME$ad3(bYU&1WphfgDHK{FH>FLJbWxhpIBCm1mdDOCvgD&BwD2!@ z=1=g%IprL98eD%%U=5C%}|GNJZ0Gx%E1|tMk ze9x+OD0ixN=sK-(x9SHT?|jXxZkKs9aJ{N!hkn4k{sWKsZs=L8x)wH==dghJ)f>HM zOJTR`dVvO`1olfvn>y|4V&e|80s>>^;{5#V4FZSF8_aSYi`$$A+;vR1-DaLaVAneH zg1ZDXb46U>ld&3icrZ<%RPH^STp=(z<2IQFdkF07FEi_Tu2+D4WdHBWj$qSXXHDI5 zJ6&$eW%RD+Hf+}Mr}R>>zRL6_vux@iQI}e4w9WKm+^zIfP>EGg>8YUqAXY)8uYzNG z(`CNyxPjiGfwig!2+!_zQSLN6>boNJT@hSY9(u8ed)^Vs))A#e8y>gL=oWPZ2Mwmj z;yQoQzby=yX_)4iL z<6sWh$h&nU+696Ax;J1kgrn!hl_{ zU2Bay?eYw@ZGlj$PfzMC&+W)?Ei9uykjgNSwwULO^+iPQaNkD&X+%8|D2lKF_1Y|m zp1UoiMSY`wF%0{d-}H{qH-=@Zw?fAfDUaHybWE%*YN0zQ=_cknM{X5c)K@+CD+L{% z_wP9tswA|7oK@8+Ro7P1$>2W9;qj)(%nDM^vmj6)Tf$liePL^Fy};*s7SAD+%!$3X zrSmI-T}Pkhe%=mITk;=Z?G)yWf;X`v(DsGpTVIZjN=S}yDDg)b7R60DXAPw%? zsQS;b(nGwWW;_-3KC;DCl%*Ok)x=d(hiZDUoP}%GcLZZUN5QCC^CKmkH!VZpV>Oy(~6Q*lXdxd&j-1i=i zih`BEE%VU~gm8{?z!GKqqI1*r){vJ~kI|-NJ1OUlNi*8ANL^gwZHEfO6F5>fH`3Hh zv2%@SqW~`wGOaN08CEz*c**hG9pp&pCJ%H-1P-FsdtFl6FsEwusg$Qh?WHl@C$81& zXqDKM(Om(K68LslHj3HG(Z53CA+X1CZ5wBFGc@!WZh(_zGu6l#12>Z?xs#lXzIuA# zo!ar~f!D-+_L~KGoxm>&T1ghmkvPTq&?ptx#&NID?3UOY*b>P^jnSn1z?j!CMg}YQ=rHv{XHPQFTk5*tf63Sr8qSxQjWC~rRUJa7Re!d()On2cv81H3R5f0 zhe@?Pu2g%*%{d+hfd~Bx5!1ffCZX{HY26yd~ws*@(mty8o9MPzlN3jikyxU#^ zyPKk6WwIKO6?W3VrZXs3)f=Cus_M7@-Ksj_B`22dsH(cqW9#>W?-8NAQ-pk{Aa82vt)(eubCvUwQe`Ft%E5_c&LP`Tu3lP_heGDK7%?1-$2-0A zAo8?>26%{LcdAFx;6pss(XaG1xImx~cXt|GM4wBVZ4Kt|Hi;4%TteEoGtl4)9u$ep zqk)Ov#7?cjHC#017aCm0<0skX*8q>Ej0)>$P)Cs1P8#4KW$$3}*5Hqk9Lx*NML*+`Z2PO zKU?~66bL+pM|(!#dDsPGcr^hU6!2606`_RR@5ZZBNHv0=r5|DZ_Qc*FVE@l}Hv$Ln z{}|E$zI_n?kIU;49D>7mN8lNF7O9@YYq7#cq!%)fPG=wi9D$b-q?a?0^bDkPnMlXr zl?3V41W9NilJ2z(q=ihRH=vv#O(sai1nGDN(l?n%C*Z9FsgfY|HD1j?`YjXbB)pR# zy_4f1_ai4M^m%-2eap diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperator.class deleted file mode 100644 index e9f6c10e75aa07b7075e04e3c98a3a023dd7c8f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2503 zcmdT`T~8B16ukq5ZA%42Q54VtzltW^nD}5Uk|5ElD1JhVh5bWL1MY`RBdEdrV^-&MS*S`!WF-|@>4@x3 zq#`R_k;^ntJf>0^8ZqM^QiJsTq=Blk^qA3#&1l6&UHR>wwWAkNLuo^iXq^71^?z-&fCRKlA}nqbQ^1eS;SZ8S|YV>5143LU)Wl2-fxf0AynK0hl4R z?_d_S2>1ZjEpftw_Q|w|lT$gEP1k?6rCwgNWR^S zu(0hjtRnXPVP6RAz`2afw7DkDg}}!@Wx(|swnXNeZ5Htu zJ0%ZNccgz@J=>+TmKw@m4&216!Re$putZ?8*8mROB9KpGao`StiA*{ixQEw+%!J)s z2UZA-CAF47X-mX0p6-3@6frCTfl<8v0F2<*7>wi7!O`~;dBU!N1{G zAb|w${3yh6n$TS;WkVp17soz5{_M~G{GI;z`Q;k`yoARVj1Xug%5y>{B4?lVm?NZ< zXeGjr!jUmoOiSf>K{wG{4FZZMva3Aq9CX`UMO^d5*^&WoW-}}(5tvHx0v2_gW_zD| zn!xyqh=g7xFkf?bxzdLX_w8?l^+51QHH~I5 z)R#P=k<>I~+S{WV;rU^Vtd7FtQP#~-*3GW#f4o?K_acm?(iBnNv$hi6GwQL(?4ZqQ zPXB++?3v3S%IBmWh9prfDWm#B%5SZpZ6|G*6!1S);E!ArsQYs>EOi!uo<(TSMuD%{}HQwb}s(Rm|n zjg+yMsWtm$wXupIb6ed=i;%yGdLj`>Zq4{b>W#?Fc5@Xq%5aO2=Vx%yd`5wkj?*bf zzKBoue7eK4Y^C+@wJ?I3K3e)x>nHH(ZwYCwjRlK&dXt4b!8*qM{Oa>!yK=gQo<%Me zEMSd3N!)@(0u#sY(}KGM%K5Su+{XfKC|mH*#Ia{IX~8mqvDEtrR5wJD;1k?NlTKg} z2#n%i4uBEtjlnp!7LJ}^)Wq$tP<}UKe}?M!G-nc9lLMGLg>5zM+b|6?I4Z#vxQg>; yu|ERW;5vRy_6_{zsAg^-_2v-Ng(0Y;Fqh)ZXSlcF5soJi`3_K6f_v})YQF$7?)O6g diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RouteOperator.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RouteOperator.class deleted file mode 100644 index 962d1f3a86ea88de5f7c855df5e9fdc154647827..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3904 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 diff --git a/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetDiff.class b/cluster-operator/bin/src/main/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetDiff.class deleted file mode 100644 index 7dfa8899060233d30e7d2a30dc83f1f9e01e7f44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6036 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 PE>`390W>a)MmHgqO=5Y`>df};c9@yo>gidC z<<+ZKub#Ym)Y2-cvaGVovtPioAHbXC>*-0dkcJ(*)(hk^v)l9f_x^PE>+bjaKR^Bq z0N0^91O)<>So&qfVpU$JU0UX%94pDg&v{vNn50U`vL7U|VzOK@@7q~>MMO>BTE?zJ zu!q2S+CQLCt9*NHo%xEuaCKqzv(?$9I)S~ldD@vFFjD8Oh^j;~0_Swwwc2*SI%+5_@USDK@=&lz*Ch9^cs`A^k~QXSI^iyvIg^9=gh>k7 z>gRMiK#AhPQze)qFuNi>D{n6B1l;G!ixW(Jm`);GDT$A%(KDHDYTDzmmqZQLS>-FgwO{xZVyOb ze~fkiuy`@B5ad^wE24w+@JUx_rfZiMy$S$09Q zy#B+6pMx_Pk^asPM$ax~`~KHE8+POJl*FY7qi}E(Mqq-#;i;Wv5nTrvtKns0Aqm%* zT-HY|0uwdi(*O@u>Cr1|+@sn&CQz*npxlGSn1c$F)=hK8F?ApU$Cr{w@sQ0$T^@5Z zWmXq4(y|L`-dEGpc4iok6IjnvoEc13Bydcdy2S8`<@122=FCM{&g#-&7)}zn`FLZ} zLQ!8^2<+Et%wZP2o#^?Og^9oc7Ii=7s%;Jg1cs)jv#Qv6^DAd9Y#2^s-LAjcee*Pd zL)y+7kJatw0u5P=RWOF;pR_e=)9abQm=;(NTYWN*=dnZ=(qJnL<63Ms+USu>hoiTt z7klJk`MF3NN8qgfkj8B>34%p|*X9k~(P&x_dM@g#H-X7VNUqX=H}H{Y|4u(bXr+S} z{F=DSWQE4Kl&+_85l$7}cu4zlTZ+3e&UO9GEP({erFc=P-t$>U|H#6-)v?Ze$rP$j ztAh_W8(=y=GH9Dhij_r4;KBp;W}NK~soC1%%66ACx{I-Ek>Uj^YH9Rr5Mtuaai zwnK2<+^UQeffL)bl?clqx?sr~845i*uD@>c(&iP#O#Kn6Y3l?8EmE{wn|`Df~SGMSSkZmP;r_@Ll`~Mn9Q&_Int=pUORl zPu&Z!_aS_a8YwsoNAMqk=aEo=qnXqT_})o7W}#iO(q7C#J7J;KthARLX`fnYo+B-= z&q)Nc+l4n{uRmZKX{+(!R0MUUj5>Yo(oY zq!!Ad*tNc+V~D>>4Bv(n0rv_Gu03y!out+dx2X@6O17aeJTTWN2&(FmR% zELr@LBW=HxcG;13#7cY9k#^Qfd&`k_*-E?ONSn3N-gcyYXr*0sq^($KGmbQBrCoER dty^i=9ci(JR)8D0J__&-+)U3j1$Y diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ClusterOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ClusterOperatorTest.class deleted file mode 100644 index 728a636832e1deab4162d418c516a7cdd8fc833c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8696 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/PlatformFeaturesAvailabilityTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/PlatformFeaturesAvailabilityTest.class deleted file mode 100644 index b86ff9b397da6640f70decb5d6f97980a4858645..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9267 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ShutdownHookTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/ShutdownHookTest.class deleted file mode 100644 index c550f4770a4a711c3e9198dd6d5ccbf7be9c8a0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7037 zcmeHMU2_{X6uojnY%dNep#e(yP(xcBn6Y1YY6?RpO$X07guzZ`c$C+wt#()1(P~ZH zAH&~Z24>)$AH{IBcA9M~+gZW5L)O*tm2~dak@oL@e*Y5yzJafbP$2Li)_&da z*wml00jmpDkBt`Lb5U0j*UTtg_k$!hT-RIu#B|j!@_VJ8wXsDJ)(PB5n*~hv>L;D2 z+&2U^9ttVUw*=OzduIgJ4^@{Jp-f=w()LJerAzQO+5GNQY96a#z`N8}VI%@(gpxGU zsuS=qen7o)yU%Ht`vKEv6fyr9>v6g(RBh~Q?ZVgE*w1;xB%rb70jaObA5#}4)K8su8Ij;(7@(pfwxF=5MC}i`P4skIK z9e7^3HKhs{bvb#J8PlkzIm6u1?lV~pljLgur>`lu=m(4Mm<&L%M#l0MaX>r$5^3vkbP4* zJSi-*k#HokY-BH&RREHWm}(AJQh3bwxsZikLYHxq|p!iS$>_rWPjBQJ!3I)=I|s6pzHL z@+`sUq;S6C?kn6~iTvz|=>l2lwN#>g{#aODypz>5Vmcn@pW;3mGWV`&FIz&C6EAwFNnz2(5Y<;1<63-@CO y?!FWE(_FZpIdFe;;@-)HyX(Le4%{`ki{n^;dvG709**l5c`N@CBmOTU5;Zvh diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/TestUtils.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/TestUtils.class deleted file mode 100644 index 55a0c47cceb0c11a3abe96b3c485b18376dd62a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3190 zcmd^BU2oGc6umCp(spGVh4DF|3(1%RheHXub{)mN6Oxv$M#w#Q5% zO0uE6Dzcx-1Q8`f_Hr7aP>yqXO2C(nXA4Vc>IW!U)RK!t z0}G`~BV`s#RQNP-+q@%OltBmo;5Q3wJ&Z2XIto4fgDA?}P&bj|A(y%AD`)?mk`6~@ z1^(uKC=9OZ9J|KyVo)$uj4qe8?9DVN=J_qJJ_k8!_pkb(1g zn1E>lbH&=xP8=n*67JM9H6-^Ya9Uh78E(D=3N>jl8&?zIxIdZJJHjXMxb_EUMuosa zm+Nu5CGb3kUku~gI4_k9Tqa~W!QnE_%b7`I9EoH?9_aq0jf{1VD$?J)st$o_q6);- zWIzK8aGk)91O*tFoLRR2!bXBOA?vWcqXxwmDHLlMT-5WGQVsVS)PJ@ix-Qd!!v0zt z0j!TEb#!I}lS>JiN|4SgN2PBZ-oj(dO-fY#Z8n#(BpjP-{lXWurJho@XriqQbIm1>tWas#9~XBg#XXj?A=f)9Jr=_O z;Z zM#&Q%(?}(mkjzz1Gp&v!Pt5x?SQ(5sjd>)QMxl&FU!fv&L#W=QCB4&@^d>FoO}Au& z#)=!7DoYb)qYbY=k)B&0bgh+l1yn!&%UD(OI@8uoSrsuN>b_J zMIvKOaw}wGf;B2#K;%i1Nf8N4O^(Ke1DfIxZ=*&?n4{ zF0OBeTUBTptXwYna;MCzne*d>+mVXV2)ad=R@j5{PB(aT2EH5l!kMlTpj7Fw!3JMC zIPZ?<1O5ynz5?z(Z}{=y0VlM78o(}{KTpN$#kKR{Ve#$0CGM_dmWvTy{}`zm7ckZIw{lZQ)oBn*Ks`~MchxJlrKBji3R z2%;kAA#m?$o?4M`%q4^osL!^W#m1QssW>s;WjVh8S%)=xgZ{5SEXAri=^^EM!G-&yp5 zO8BWQA2OM9v#;!aE@cNOY2WpR?G3xec4|X@*-RSkxvxh3W9Le?83@*Z@kK=P;@Br{+8=kKNs=&V+=NA<6QsyOl}}V>ws+GwGd?E7eFtZrsmY2--%;~RBpVQ~s`SYLO{s4gUaHRrc1g>f2 zHx1XOd7G`XrjSi-ln8$mO&N2=j8siONVMUq8F1F+iU-^`LPkw59kvINm20iVHh~#$^ZN=e7xm`}>|d0THY_qXS&;B5)Cf$4 zcTWfWbi_igW9D-Lb+6r8Y2UI~RhT4DO(~ehPka49@Ca9$@xDn`xr#V$YcYL?=zGtJ zNSF%*#%Jel5|~(&U0#6$xW*Zf7#)3AItMu5*a6k#ltp*XL{R+aG2P@hG1%~ekGEk2W!QuT|rvNI&9+!G^$qUD|| z!v7$plE}zgZHPVd@55M#p2n zAQfeiHI58;2(n(w9Ed|X)JV#xxf}D6MBCj)0p z+h-M!U(H==IrLI89+8Dom>m)F8|b(nxSe&T1Vf)(ueEv@q;^~zrMSF=LD9yCYf8qf zpM{G1-E4LyHW_{#^2!WMJH&-fzPv0)WUYho$+6_H5iCWh9hJlw+uC=09;e~-K{Cp0 zc2Opgxg>vxyfi%S52am)fwEarD740;G4<_sibnGvLKk{AGh0WTvC|*6(iWgyHc?kEgfyM!uD}LLg@)@% z6xsMxfMsi+BrJ^b3sMFgGogq3!etg0P?Tc56wwu?*NWG3iWm3X6YeCw)Y4A{=%`FQ z5&DADFk-ZSge~Zz^FJaBrOrngqB_jLtCKJVuMs#jdw*NP_6nvvtUsPRFDJ~J&;+h~JKa&i?!~m`CW+h8x==C-(=NwR^ehH5x+Q$61+vw$Wqq1^ zA{YC-jp}5+3dafgr9?+#W6I8+m+iVOS8{BhRlw8pSI`hRU^r7h1c)Yhw*GOox( z`TVl5h3GM-XqGzZWpM@05~vI;xB}-;F1giL0B^#lx2vH7Ut$&Pgsi{3O&aEm(y1zcm7rW&i*H diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/leaderelection/LeaderElectionManagerMockTest.class deleted file mode 100644 index e0afabe74b8bd6000de2473835904d3e943b55a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8244 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AbstractModelTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AbstractModelTest.class deleted file mode 100644 index 546586a800c8cb2b2bc3c122caa5593befa67ffb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4252 zcmeHKTXP#V6h2Cw_(Et(3WZWGYACH!!27}gLx35RnkL{h89Vh%pE~kdw$*ASkEAt} z2mSy*h#8oHcm5Br3`e_mVox@#OENH>^59*`d-UmCKOO!4=g+?az~>MYVTnN9nlNzO zy5JETvq0#;IwPX*MW9FAFsDrr%Gf$?f=Ktc4C-AJV4>UdvqM~1gaUy}$!f{eAlUCd z;-MpOxxG_wHSRoY-0M6%Xzh1)?=)Hjt~J|3W_Yim#=>Y7apew-9*Z6~TLe}<6H2%* z2wbRcb_f)uyX{CHP zGz}~7CvSJPB(T)_Y=--f>xL|?ZpIgZ!uCWs`&q)glYBR{g zI)lgoGfYY@+p%ywV;|}?Wz;@XSg ztay9g^XWq8!r+xahB|jugsrym_)&w5%=u>Rw`{7GcKjD^I5D`($1 z&*jKAMQ*0x$=PAKdm6)@EC6=olhae`DU$d8iklYibHi1b!+aH}z}hMl;SzyY zs?FopB2A+$-+HVyk<9MJQJ0%ThTQ~#^`;IP7K#ymKKZlYhQboqZl1Y~!tUp)!-B$y z9B_kF8!waH5BtN1>N_F4wo%?va^-L4_#6k!R`QhnaYK=>#Ffxue}=<{|4+D-;q0lnsZ euyJJHJ2=1LwL&f5#osL))o@-y?^WS8y#E*EVQFdr diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AuthenticationUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/AuthenticationUtilsTest.class deleted file mode 100644 index 55e2f490f6d3265a41d947756a83834276512366..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8621 zcmeHM>v9`46h1O(d?7R?kW$))s^RAJVnZp{l+0w(KvSHAY1}XjKNw}L*b2L=Wu*-X z47>wx06%#GW?%;X^D?|ahoiNVY=~@YoJ^(#|Jn6=zw_x_wMWulkAC|D06v8G^N=I( zv5LK_=1Nz$*fy&QSyeg~!MCC+BOWs?n%2u_mX}LRLD8SN0UIbQG_oiciyq z%Y*Ky7t-$GsXs|dzKu67}}i^ z167Q#UD(`#2}ab3(FN$>kZzErAo7JLG*t;EB4$H~@l8BTNZQV=@(dMXOMIP0SLiaPuX%$g%0d(KHgSd$LxeH6m`$~$jOyKpmx{|Q>VsIr(y_)POXCE( z$5iVy$Fo$m#n%6_o6NKlaNUv(%9P@z{qB29I+`iQ<6WUEt}oo0%;rF8EwtR%kwsT3i8 zj!rBDHqN2@tyN%i)p0Ap#(8}AKYoerRFA#0zuRPS+z@o*9frYL1>M{=41?*C+@|?q zHS8}Bvfp(lw>W`@VK}q~%R2c9{Wds--O^}UW^t!J-f6s(YDAp|n~$Oe8E%SZf*TXq zd@qJN-nE#Q4fY^1PRgX~fhuT}t9^Em>8sMai6X=ld`e~l^b06#jzUkvG zirD6>>6Vd+%-;H_pJ;+RNdb3+m!JU8jKLW=OJK5GJJ>*Kn?Gwdn8s_k%wI`@4IbAS z?imr7s7a6c>ns-Lx%20UZV5$Tsdhr!U$X?B)3~BrXTE6MXH2!7P2kdlwuwvOwon2U zm^a%)Y5L;$qcu}Nvjup8kR_MBFGTlo>2P){bz-p?M0$5wHWHt&uz(lfA|b#0ubuoP zEibTiOhL8l=rf^PW}Zn}KJcMC8@$j>JeOsC27@hhv|!L%)_kGnvzarT~#2uyVg zBF>Zv&dyiN`-39IaBC()wfJ?y{58=GyCT+jAUx?yL|iZ&m=qS_f4|B|T{Kdu78bdq zFZU%2@EU=w(@Q-9sWJzJkj`uEN>BxuA#k_1GU=fS+S)HvBLRAz!1?kQwohvTZW8#Z z_ekmaj8i!|fd=T^umOlzta$bleBIV6)U4$AC4Q5Tza6Z!iud+#(aGp;J!7^f?1mZk zm7SxSPSfSsR}v_#$t3ppN5V9Wmo1B^I@V8mB$$V{vH7${KM(I7Is$Eno50wzPzuk5 z>Ua{M;40u*C?3E9oW);fU=*);e7cSQ61r+yE-7-vXyOmK(=)&+sh7YwtV~2%Jzx_+pCrgX<6A`cVH`9*kTJ?5w5{? vtS?hd*ACU@4GY5$DMJpiMW{g4D))v(?#F$(9Na?b9J~eZ;oa2qZFuJ&4;ZE0 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/CertUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/CertUtilsTest.class deleted file mode 100644 index 9dff35273db8e99e670205761740c2566646c361..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9337 zcmeHN&2khs5N`Qze{e9EU`PlcOh}ePb}k&K7?L93R8h73RBQ}6YG<`x!OUn&qj8x$ z1<$~h2cQb7$SsGwMP4M8*37ayUbG$oE`#H_%&uly-?VzZZnawa``=e@0N^@&Ux6tC z*JI^-n#bCE%(j>(q!()?!asy3`&=OJOADKSbwn(oEP!T*QL`!bRV6wSw!(qRs;zm*QNV{Mt|^|*hz&6Um$ zb4Mmo(ITasW+r6QpLmix%wFT>2F0ms9jfrfJj}vT0w)`-Q57poSyoJyYoUd;fV)Z9 z=4zc`;flawOZqI>U`m+w;O30(iI~98t&gg_tq?e;@yo7mW0HtTlktDi6+Xk8w?wzg z6@fFqq0@?x-;TCKEKq|RraG0@)=+`DmKpX+6;6@aqb?P=Vjh*Xj8Wk)ADlD0xN-3i z+R$(}Eh$^q9Xq3ES~4nEw-7Q?P(nBLgUV46pN<6dZ>|Y!NttPp9C^fz(O-eHU%Xg0^HuJMDn> yl?5%aqMi9bv}abdZyeChT6BA1MLX|+MlEQ6S<#jq&@Nig{;{H6!ml_5-~9*kV^C@U diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ClusterCaRenewalTest$MockedClusterCa.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ClusterCaRenewalTest$MockedClusterCa.class deleted file mode 100644 index 7613f8e84807ed1f0c10e0d76797c8bc99973298..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6675 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 Tg7=^fAHYY@fKTyT1#bQW6V(LW diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest$ModelWithoutMetricsAndLogging.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest$ModelWithoutMetricsAndLogging.class deleted file mode 100644 index c8a56dbdcdd0b3317942827879d0c9fffa9d5955..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5073 zcmeHLTW{P%6h2-;HtVJ&4U}>#jH*7QFY6Z`5G_b;6qL~21a;G*zIE1~-JNzkW6g}W z34aU;BzWg%@Iw%1Y-i(uT|1Ye3iV;VzI=1$+~%8e=8wOA`3(TR0n&wz2hWTS1IvsJ zp3^xExC)HbJpPFXDq)&hrGrqU#xfnmDqq(q2w@9RzAyQcqQyb2RMLFy+L6ysL&}n_=w7yfX-z+uPhsTN1 zmLPmW$LOW6NJyodYRt&7LH~bb5r7u9zeVyl+e=DMn-t6zNQzW(X}}hfUI4NiCxVCE z5|bkTA-zbLCQtsjQtlImB$R|mJHIg}}1Pi@mBXF5A;8z%66YDw?hQcsf888kNng z_3Wi3*ML|0+V7o7&sLV#8B_PZMH)P$lNYqXhZ&~bLa5fH9FSId&gh1V~V!G7m3dlpEdTYi_s7O+ z8roOSo0kHmPN~*0IkF`!6cxrf_u#XrK1vhU{AES$yG@#!wx9rcE)>y(c zXx%E`@&KIyno%jPWQjfN2piXSl(2n>Exx3pn5f;L1z$X5MsHlW;)mab{V z0J+37K+orz@8d%(Nn_jrS!%WqT@o{0%=)_g&hEj+K!p^^FW>2lmrHiWjR)hw>ptnZ>w!N~sSeq9+-Y-TksgbqqU^i` zE!veKHda_vV!6M=@tjGAvm*~ycQI@AmY~Kk(}j;bcyMv0J-C@MYyAP$ryg8A#bjN$ z>A{r}si0~@ZVa|+2Uz5wH&^zsrrA-(0s#-+!2>nGe-8t;jMpwceTi>7`0xJ;D^EB4 zpJDZPeCog&UL6JyyN=h@?B0iKu#vrcAFmzw0IuUdz=!zr5rN)>kMZtvd|t-ypTKAE J1>Sey#@{Pk+=>7I diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ConfigMapUtilsTest.class deleted file mode 100644 index 6ae9a15bfbc0a8dd190def2353b39a68de57aee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7653 zcmeHMZF3tn5MHHe{X*J?q%Sn3aI~c)Ky6+Ml)lY4$#oj)I2k)lhYw7V&x)h=?&Ohl zA?1%T12gc6FZ>LC2*c{`;@FdOt;B{YOg`9mx?8PQyQ^m(>HhfZ=U)NfK0L_51c5~* zy|QLXm!H!eTIQmxwB*5$yev9QQY~cJ^CP91EC-^+{PL0rw|IM%cAjYNs}1a#gGmC@ zad)4F?ebdlIrB7u$y#OAB`{Onf7L+UVf!wD)2K#i8tP5zM=TEo0w;r)H@$#B!E|e^ zSC-s7Oc9vE#~}@v>QIjnIJ@?==GLFp-G^@7tu3Mc>FU}KA(M5s#Uu+ohT2b6D~oQm zK_FkP(kAm2KAUYks?^=(XKrot*?N6#b7k4B6S!P$Y*WcvZn(px2m==Cbt!gui%FyB z9uK*GK;Xpu!X{2=2|bX5i)h9Elw2u=%)=!z{pXWVG9~;S)^a=%bhuA77opRUqUp0h z-EoSAjcw+%nCF`@9h}h%+GfsGE=sA_OM6}~rCu+^Ucc(J1XE5Zv=dP6Z95wEu-y*& zxmORyvSeaeGUkbmk0tr*?Ij`G z!wifUNQ4MBHbIL)M-W*FIzIQfc2tD0jPQc!DI*Wz*-7Abe!=0&iNY4!;vr(f7QVrI z8u_|cy5y`Pn432!<8J%%AIkZLfFhH|}g_L0&u?8Q;^hVS%+aF`UfuDhKO)W~L?I7wk zbIaNelM=VKL*{6eZ;3k&AsRy|uH+E+tPR|_+ChT5izg2u_0xguI(6~lF?-oyJ`RXv zcu)aKCSvItD+EY19zyhJuK6a|#iNPk(HIc5onnkXoq@4nR8wUdZ zlRE}fb_lY0_2#WZvu0JU*_O*0^g5wd=cpbX;0uv*MzM1Ir!4>n)s_%4sH`T(_hzfaEHL9frpzp zxYzeBFQFIc=~b>2p2=+BVTywH06&T0N5qpbhrd(U%3*5)^4Ko+wBNw?X*h%L=HM($ z$JaMu2CtLYXBN)k|9NcPLTv=E#b4mUw=-}31arS(YXYv|ztL_+dI$ff5-E5W9BdJ^ z;~Yv|#d{-l4X+2aUC+>VD^uGI3vC}{Xj{zGwqT*{!whY;3~eXiW1QOr+=LQdXYj6! a^ZgWk{TW_w;q^W~FQQk!fUn?dxcfKNX9!FH diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ContainerUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ContainerUtilsTest.class deleted file mode 100644 index fc0eab8c75264ed5a98a9f63bc4eb94fb61a7bf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9116 zcmeHMPj4GV6n~SZiM^yv2$Vou=rpw8fMj1dR0NRHG?5~?ZAjc8j+5PSGG%vXnVpSd zZXCIClxFCT97fyTuJ^(j91mev)u{X_ZysVv2Dqn1`=QqE3^LE~w_viP&fBFRg zK8B@fm>_UJR&GP{ST~-s1J)3-5o;xauS7#eTrn+G!}XI`bJYl>$Nk2t3^fxWS5LI? z;}*`GhDic*>2#lkdyU7tPr0iJOnoFmp+6yTskXF3U~(1bPeYZ!Y#+O(lvEXXiOl`= zBvd?>{sH%>D}zY*ObZ#(NXcEF2l0p0skZhx^|rfFYE)Vf0`ET)c6=uE{ev$QD=8ki?Q=I~b zz=Fnjd-Y^UzlqJt3cQIa!`U{Jwp#~=>)7}0udx;$V0J>_`m=wnD;Z#iLvd^h-?R;` z3+{VcyiH)q46k@z?;y2gmo_#|;SrXWS{yq>n4}PR?@a7k5a~`IeD_RnQ5=fZ#xBzF zJ|1xFiwBsfZ3Nhf-bCp(B@TB8Ts6y?qyAVKp$RzKX|HBom{e||x4qO(T8K@X&Tt#B zTaMj%fGhaxGECv;G(LTR{}TLmeum2D^UjYj^D910z$|_m3?Oz6KWDlqcp2vLiNGs3 zIsva9p|0WgX|~raY}Cs3dI7dKENmNAwi^Z5Zd%w5t!!_VWc%96cB>@YH&!-UlI>e7 x+wGEU-&xrfOR{}$WqZ3M+YeT@J0;nEv$EYS$@Yhp?VXZre_GkzMa!Ik+CO4jdEx*7 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.class deleted file mode 100644 index 4efc27b2e745866424864c01d1b48b7cb447640b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11513 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/DnsNameGeneratorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/DnsNameGeneratorTest.class deleted file mode 100644 index aaa5eaa61539cb00dec4f8217700d2f88f34e4dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3968 zcmeHKZBG<25S||B-K_|U;0wN0R6G=R)%Z!&gdC?K0VLju@slaL6{@@KrtK2(kC|wq z-~AQ-665stkOS6WF2soO!|mPN%sy?OnRcFj{r>SY06c`-WhfDtGdc_`H#T^~Hdr83 zV5}C&dl9IVYi5-W!ZmX4PkApdBmRQ1{aGASX_-+~c37lvH#7wRQPgmdY&=ROF z%`P^Y%d_tZ2l@9M|Gt}^zdvd|ACaU=Te=-iLnhr&tDJ5v zsK-d9*Y*SZRmd{aERK2H%!K6yAk-?#sNGDtSDjDNScJk-lVPDD`B(@#3$fs6UOu%+ zDh$nJ#9s@EjJ-w={$^QhyQ6)&h~?=#7)6sZQ?RjykM+rASkDrE5r)56)EKl|;vKwBvm+rR;dP{dt-hGT0 zgdfgUL|}X;*)Ie(x6IaaX*;J9CM2fa1vPVt+2NuB6NHowHO&XIj|fccC8wChF&Fqk z#8Jp}w3AH&ZLM4EEJpL1D$^l23KrQwD#>r6gA|c(GU% z#^Cj%g~G+a6~LPU-iP{N435B2w906epn|s7WgkQPc$YnhaR?75@i~ld+(QI{-`*!U z^>TRh1DyHN#u>w>Lj^=XkI#WT3NFA!vW|P4T1SA#%W4!p~qiP9$sXELls6cD2DK!Hjl$rM70K zH$5}5*KmPj&N)#WICA6!RiO&*6c^ykCI18mswlqh8A&tRmR6p)!U3sjHPh4Yeed;q zuY0<``OAMk`x6npML#c6!J>sgwkshE!pcKu+o^C-2|~%eC%hthOgf>Em9`rNA(ItP zbeLPI`XLYd%SmSwnngNc(OIqTI{rpwdHo@4hZdDu)zwCAd8uL1^Y!lJdUF;{Hr}0Itu8*OF0~%4tS+}|i`7+&F4h~Hj%1yxzs;raJ?4iiQf%`Mlh7IU z9ghV)r_C&ysPCC=z;Ay80^_%YAB2t{wj4KNB^tNrgc_km#bhWYI&0BLR|q&MSjUX^17Mpk^xyM8ls)v^? zdI4S|P-_8`JHcx7Slgl(>v0J8_rUY>u})L;csr|fAyFFWg4RT=l~p*GD5Rf47Q+oh zBvtH+aZd2?xhw#Zxlb7~r*3echc^+nnX4@X^cIStNLLY|y$n>P6tYBLx6b}^%~yup zZPu~d!s~HF4~e&XQmnho3$EMc(dH(zJFM-hOxsB37GiEsb1|C~;H*e$Y&OZ-tS-Q5 zyCYa&`y#YGCv0!pA#m7Zgf>j$psZ(A!e*6wv%^tif4J8ZGPEJyb=Dkxd`t zofC2bk+;rd(*ft9xGK?h+?FG`Y9|j*gqs}H z(_;OL({LbZ#n(7fMCuPHS@TlN-B59$mGUCjs`4mkCQhnw@=t|Ha?FyDmphz>Y1 z44_&KJZnoo`60Iq2 zb0u=!25U>E%4Ev)SjP|i=%s@?7eu&;)T!>o)*$kv>V=(1Vw7NIL-rV1*Y*;ffljTm zi?kxZ&Gt2Mi`=gD5S#jZ7nLyYx=8vJg`atcC?gJLo&oi5D4Gh5-M z6E_GqGfZR;?O@S?Q6J*ufNV*5u!?#~lA~^G{vz*onZ&GG+GEEr4}@olg^z^X+6n7R z`vX^o>8G zRiFy~pVB=i>6^G8i>2rd`W9Lx`ZhER^j$6cJ&p8w2I>0-q^3qHK*ypV&~@m~;l7OP z4P4*CZ^t7g6MJOB=^H$<=xvNCMpS;klS11Yp9$?#BiejUv|ky~7ILEf)`)g1C)#I5 zv_+teP!;hyfwM;5K+L~9w*S~<~vX+--VC))3fXg|t{_ID%Ny_{(OGNRqj zhc0XjLQHhdI&i8PPt*e*u~Q%Q^r6 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/EntityTopicOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/EntityTopicOperatorTest.class deleted file mode 100644 index 4e5685c490c82c8e8900645e0dd6dc617ff08c05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7653 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaBrokerConfigurationBuilderTest$IsEquivalent.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaBrokerConfigurationBuilderTest$IsEquivalent.class deleted file mode 100644 index 19b35706801f60090009cbc1dfaa6e4d7cd460b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6426 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterMigrationTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterMigrationTest.class deleted file mode 100644 index c774cb898212a02044a416c819c38f64a73566e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6583 zcmeHL-E!MR6h3mA$ad2vq(9J<7STeR6l(KRp!65VQ5qA)_Q;7Dt}=?ecD9kVp4BSQ zz7&_tzzp2;3_Jx7z;Jfuv=)&okx7_bXV30Ad;a+Qm)`*3F|6y5)1Ve` zw=75?%FmrWr%YKn5S;d3(lQ$m?g+-qt``P^@N%DZh*w^7y1Py_`m|1a2%*g1Kmr}k zXfUf-Jjd^q8{5x`D>TTrO}kZV)LR-{vXpe2@BoF%7Gt~N;GqT=TB{Y?T;4M4?X9NW zXxElaTZ5}sYscZFWBPlPGrv!K(d2B8b_hqALcOwXwwjfysllA}dfFDM@AnXJuFCvC zIKF5*UP$tAPJ`+Gi@UzlC&9pRi3WPr+H7r@b{=LmDB{>~rKq!QHmzEHt7;he3u|-y4h%0TT6Ch4b6Zu zk#rqx*<{Q^z?|aUio?!Eupwkt4OScV4ZC4kis$l(RBYg4G%z&!R&}*fe}Xp)2BYkLpz_>6F-gUM)b?+OlM8ICV6kBE4LvRD`mKnd111T!2%ycm!;R0gnw5jEB@!b6XVi2<&FlAtthcJ2F=1 zJ%>{V15mLLkG^9CqWz77vniFyFiP|N2%n-v410t+V5a1fAh4N-QT1T7i@fl);glLO z+Zc--ITK@W#ez-nthv;qQCg63+ALFMw5EjBI+Y-xJ(Vw}P`3zPAqknlaet3{UV;j- zOJZCSoFW(Vtp9>N^}_ue_us+b)C&(j#j<$T@WB_oI*wW(dPSzNo$ocAVs(d3)5i0A{J^E4pvlT zePG7IA^fd*^VkrkJ)RB=n-d0FCYmvDIxV|AxX zdtp?6YWS~8QCK&!LtoH7so`Z6P}H&_-})*gL8YcFY4eA9_)N=9WT|JIo>I~|s?&P{ zPpJlXq+_8w3C=w4&CZpFFEm(wv)8C1SgO-tMNUrJ#JW@v^IqlVG3Smtc*(?pH{<7_ z5{ezh=}W?6bhi&KZVa;6Vj*|Q3YEwDy2>7t%Dk%bro&@d5S6819iC#XHI{7ZfMwF? zr7fQdI#jX5s}S+ZuMSw4oEsg8G6Wr-X>dNCB#wtER|KP9q#c}TXu64|~w9GiA6 sk?sB=*&ZjdeSJu_ZUS2l9^fwK;2~Jp&Y@2}f+z3|EWt9Yz$$$E4{wViUH||9 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterOAuthValidationTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterOAuthValidationTest.class deleted file mode 100644 index 5c78acfa36a8c583c338a7940a32f29b4efc2177..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11181 zcmeHN>uwWQ5S|k*j$K+PmtN>?p-=(^n^JlsY1$AB1RN*WA*kX9TGl7=A?rQv*|XtN z^;ch@&(JUgsk{liOwTYkzKBAEmg&F17CAh>Bts$E7$F%6?;0m zG&dFK_M+{ImaT>K77(TYI~nW?v0U3*uFT!N#~saJbg|lK&dk-D3=Y*oj76?|WUADp zTnW143=TA}PBp5R?o{iGcjg;&i!+z14F<2(nr&P0R@GY-N_rjc>3JnrMT;xsd2Zoq zqguUFpSx5=yjGbI$uyY#k z72rh%dpGp1Dkaq@9AF1--}DssrMt>omLoe|;f9N~x=P-4dB?wCm5K{(Zne1M8bz(H z?X1|#+&U^`xo6DsnlZ~gW0pf>9<^GM`<5rQ)v>kHwlw1K2VJyS90y%gHZCd~^~&j} zkv^i+l}cM1*?ZDM> z>asP9r>wbyRF>_TV;};KL6(Z~lQTuLIH@_AZ=#KTf~QnWJYWgx_}cMcO`+(Wx+zpN zPN|rUdpoIW0(~%eOvV>|g?n5HC$z31H$PKY`e;qc#2hA^FpGp4G=)8fM2h8NAY4qE zDZ=`6UBD1eq+hj_urULciV0RL71uVB3BN>~Xdm^--MWp^*t0Eu&7Xd+ropW`7!0Li zgX5lbge#&#V2~t=mkk5a0UnR4Y(cyQdnWiKE|UrpV!d&e1k_TI!pdgzKF?(gxIP{t zShgTJWx=7OY;e_Xn|H8ecAI$koBA&)E@A<1beBpz3Ipjnf9SZhU(68ZDU_%PfKq}EC<-jVYk)P_9i9GlN)LaCzR=#IvnG_W!b*Zm0oBo zdEXzKcJb%LjJIm~$_92`fpU2Dfy29I0h6aKtfxl6jr8xGTY0FJB;X3v2IJi zPw~ibee0F)(0|W%d~P9>honObJQWL+U>_XX1JA=tI2IhMZH(WVIE3_;$IW#YHUQ)AHpbL|pQfR3N6 znY+k)F*ET*jVhvXU^xnJG4^GKDP)Ekj}noR^1@WQ$y!s`b4a9EvK7UBx@K%960BBY zaMlc6AFCd23EiIYw35D=(qcg}i?ig8?asTl@Nin)2(Y*Ba4au`FECoC%*Zt?y)Zam zsKs{?I`$Z2DuZL=Tq)-6vj7p9PspCl4QtWzKkcLOQNy}tjfp(-=g}yfU^{=?UT-AC zR=mcif<47a38=#^9A{C(F1+`wDo0P6)NLnS56_w$?P=b5b0}}vg{Ka28656A-yWHy zB?BFvb)#^Kv61aP=AOk?kims@BW*mwHkP_}f5peFj!%p6F=>0=4t&hwt-hqs;Jr5_eKMH3V)He67d0?HrqF^vaXfP{$9}D!*a5KIi zaCK7&+N8aeHO68DLjp2wM7vF*jpszWN1{#S zL|Y}%KFx{t4T(0H6YX0P?X#R{-w|j#;B(AUBQUj|wJzfC8~A@8=Go5y* F{{r15Y?uH5 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterPodSetTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterPodSetTest.class deleted file mode 100644 index 7178e86b7e8ae3ae58ab40678e8411ae75bbd22c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7204 zcmeHL-E!MR6h50a@lVq>q<{1e)KDO$)E=NfX-dIyoHj&>jg`7^)!E3KcpFKpS*5zIJ(RLP^%MO8awprR?GU6hr+Cpr^;S7N@&cj-}G54gg z+cy-GCkc%ETekx0vnZr4BT%T@kDQf8y9g5m$~f0|lfdX=ZGN$a5{bcx zHri@7ZFFJGwt1wqeuu9IRK*g3&X~b_iEv8@Z{|Kqj4aj(oJt1!(ZbQOdpzLkK7nJ? zH#!84*D<68xJuykjt>nfg)G9GWa6Jkfn<^JHd)tlg&%T{Dh!?6c?5LHdeN`vC{XiVzzP0>IxQFfl!uDmD{rv;;?5SZrUIYCPzgl zM@5@g$wp1=;eIHjvQT`Du1fCSv0NHxRjbU}cIZg*C`zw-hV(ztA-;|yNq!WiL(k8n z49Uz8A=k5#$Xs)=;@&GII7DEMMA9plmm3!+4nr)MqQ_JQSl31=S!pR@QA=%wtXyhQ zNj;BwPRtd{kX`UYkGou1QH*symX}yA%h<(w-%4ut=^GZ0tT^bhH6CD1xP~+MOk+{8U><;t{N?A0}MPvdz09h^#mi`%*4T|d4;t_t1X`Yu$2X+V<8XVIlya*v! znT@%JtxJaJi!{_ydd3B)8n^ba&jR+>5?&-7=Rre_O9n2zZ zLx$70M8gyf<&w5KWnwVjjj6ih%8*;eE=!9YoJnnl+3IqSCk@vAb|q1}-VM^u4IUoOD`pWM(Ys!J4C7^Y{M{K=GXvZ=Mq!2OBF@p zVU4fHNS$D-?kIZ5NxYLzdAD%;#MkMP;oQp+&3Qv*+gpY!aBUne!W1$`)B7nNO`n{$ z@y=O}{Z%Gc^g*P#AmLK4(?6K{gU3~mM+6?)FNW$u8mFu<-U<1IOjSD$6!+NzGF1^r zGisXaFx!t>PuYWkpDDsk0`}p&j;3`67ahK_1TGnC@O+nIgUMa_N8m!rBpyI$*;zeP z$IDyz{5k7xyEAF;-BWaUbTgsRJ|xh}HhwQamIKC;1s|`BR_u8Wb0t$~pz&+(@Vpd$ zy;+1$2wcmwguoT;WE#e-P(9o`Jw2CHHG8Fy+1s_aC9tm9A~2;#&Haksb`rJ6T=kF$ zbuf-L_c`*O*VBa>eyFwv#Ej>Su*ZDlTD|_gN#Lqp-Nrw>!jX@|h{TesE!>|Ell<@5~Y9aVr{spdlJNd?sVEty~-@^Z6W@Z$wPhTzSIr;-H-NO3YwRS_I^&ZA5zh7 z?c@Enkv~(>KFx{tcPiSQd}t#lQqexkiFQ5}?QTxAo2h6sInicQ(eC9$`z96b^PFfh w743dbwC_^UzQ~F8eG1w!_!7^c5vcutCe7me*Z4Pq=Vl!m@BkKI5tg9&A4{NBIsgCw diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.class deleted file mode 100644 index bc68670df0809706b9aa837c587770277463c945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18364 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterWithKRaftTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterWithKRaftTest.class deleted file mode 100644 index 54ef21efb9926a1e2a7e5197d05333d3a4335f2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7133 zcmeHLTXP#V6h3m(ICj%Eq&M0?*aql@wl5#C>(m`)n8_$>#Zj|f8Lc)n z49~pr!aMK$17?6}-+AJ9@FO}L$#!E;HnrJ?P6zU0S=vvZj*gCwr0zdizhTTo3x zf~ejj>Qw551=}GoQ>?91$r`r5$))gH%vV(@HhF_d?2{_zN_MT9%i9E|i`&E2(0sp% zfWvv=2a5WtPQ8##z+nQDt*t9QZLy$DU53?s@m_7&c2+di1WXY~BcMB70tc6Ji%U5I z$&S@Xd9-rBjBv+Zv>m&wN1iHHzVVrK*cy|}cNv1Fs+CG{C0{8oJC$M)=Z^h43}tj+ zRR|A3Ck^+?PUxWyvbZU8>SqIUBk>%NcV`(AoxX4sFAmpnp*Yz_-yb9@BM4JB7w zdk+p3_eNrU$${Gk?2Dhx2&?%2f%IQ}BbLHa!lIViYO{2zAF8j`_b?WNh(77mt~cZe zbpHr7b4%U}kg;_Lk-^M|+{3H;5a`|+R@JWze7N{3?@`{W;Zp|hv7=dWhvB83yTqYOD>q-a>7kqZLeG%xre)HS9e5SZuw<@Ui{ z6=6cZ%i|{9fn76Xi~;OuaXHd1e}Oyf`SwW~X5r0An1Q!YH@dJ>;L%#g(IWR*Ic%*m zxvW#ER)T~}y?Qsbb{ogkIu8ge757Z*LIvlz)-ZH*2RXk{Q&fck!$D@85R*WQ6;QMa zINFrcDuvm7_;tLfkMkQ7aD~9xXDcx%#1Ocm2k9L^y^IxT*{$HCBHXHxMs?qcUE#k+vte2O4&S#$Sza*c+bEeeeo zIc1?R+Z6n+y&hg8P@yz7n;BzRFLLHJuywlIswl>xtfD}LjdQxusG=pNXoD)+)jLs# z zRSLhPs8pp#WS5i}FG(d>_zf%Z4i!XkQSyUWDk@4LZ_%K%Lbi5DB`JEy)b<+Zfm}y| z92~P?#;^n=YL^n0VF@u*bed?)VQw&1k4Ty~ws4X57R zSaTcA>Z0RXFkADsiJ&bf+GT=AA&u0U;Jd6v1-8l8%d3vJR<1Y}oT}}2>tXm&8v!RO zJd%n;s!4*FPQnQbroz4J5ecd65T9bUQhVU7JMM<2nuHk(3JB;9*Mjkt^3qD#f?N_c zQcgD>))DSHOOET*bMHow&myrtVqr()_ii1;;ALmxI@le}B-95L`^cWozcg2a%wX2fMUo`#kKh zfGC`6yCe8!Ktp-UF67s@sokP}peNVHsn{WHYR@rV>@Iz=xAevCToldH&)F?br5$l) zheY|?wn85IxPz-B+^}NQoA>xBjock zOWln!#2OtT+0iUL^%TDlJA{k&pk*}IU94E}90P|K#)|-{hMj=X^S~Gik?Bi*B(9AEzy>!T%%K==3H8GUmYATz81LVNM*A*4Ya8cZ+D94y@;;tDIDu!#BYO;>2dEj_=iC_fPR3V=he+M>5_C^{!Tu?(z zs)@WOGY15b!X9D_|7Fck)%#RRmj@^>pOk&c?%$tu7xir{eCpD#VkW5mE|9~GWR-L> z_zU?jV*E^CYA>U*|L6?~GgGWZ{Q$bB;R<<|;vM9(fF=5U@U$4ZVY(c0r)XHURhE*q z&9~P8YLDX8njzVrb$R+!WrWbbf}>u#sZ%qcj}&&eeL2)AKRRLQSN7pjX+5f<2rljmK+YLGT?aJSuh>zM~dg%PiMC&f_!> zx?~z#joRq3m=P6p-sLeS7MwRkytT-rh&$RxT8LY1s<7&Kw+c5O=FaI{5(c_%TdWgS$A~)a{&u&(KITMfx_$0lIdlO*U;&=AdH1$@DqM0os2T4t!8@ za6jdSCRaR~d#emz)Tpfmri9CYwjR2%1-J;~FoFLrLJlTPn#WR{XZ$|~Q&@hoFF%d> zm*JGborW_eJqxdx^c4k3oqRCGo*DSn>zpr8K4eZszwD1dD`tp?h6U_aNxiNSP ze?*`*1|Io0)7kMr2#gWcz4DHj>Hq@rZ2SWwL!TBHQ;FY-4Z} a&(aut3d@+z;2m%a?!Z0x92Q^^mi_?_R?x%% diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConfigurationTests.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConfigurationTests.class deleted file mode 100644 index 7bac753a63ba06792dddcd5260e03754c84db92b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7102 zcmeHLZF3tn5MHGrwy(}h1EqzwR1GglN@@e;Ep?$2I)QO<6Q)Ts(@%_YmJ>C1C(lWj z6#fuDff<;g-{C(otWKBYf;IIyaXVqi2cJ);-AB9H7wziLzkmA!0KS5|B^V*_or?Xs z=1SL}vRzgevaWP2!k+ z^;u+=+T?U!p;JUDX$eqb>R0v@a-LUV`AR7=XJ{;A8oN;B*R z!WWvV1Y-alEkf5xe2fKZ-Fj}G3PqEs%{wAO@95wRzOy9IdFmQ{h>>GvkczU%xRV9W zL3)*ZMD&p?Pin&MF&aQQc)ZFQMseh_VqQ_Jje|c=R0t^*>_}GVgE}z7BaWNqi$K_j z?~NZT^Dc`8!(1@Xw(dKJ+0s68o9q&Dy)E06DaB*GBGdFVXSZn~^N@MkiDj7P5aUy{ zSKTygV(@n`H5$=Px(S6+#%d{x1stX&dxhwu?7$4C)kxMeU4~kqcAtl6umQZOC0`Ju zhps#TVvm2GR@Ki0RYjuzB&L7qsp(8OS1J6zHtT;T-JGW2c$7q1gnap#&%36h>T@hF zrG*F5xl6wR(Q=6xD=f`Kr0kKHl{Ai8*VHO6Dr-CsJeaIP38n~KoNFDnau&H^TD{2@ zR>dnxxXI&nQ?U`4Zb_d78(9UHeH_)>LJ?@ThSaEH&w0UCZaG&au;`F7C%3JX8@VqB znv~%(A*%%%Q_IoEwr3@I+Jg~zD~Wa@xffY0HPwpLOHo?E5xA1Mcr)4+N}%s7nPxg| z4A503TKRLSQHE;-o)@rBo~w_QaxwF2x&Q*>M;0P5TgYMOH_C8>kedb6AD(*-+%^o% z@DlqBOiVJ-tDSEo_V>yZ=w*11z+VM+@FWhDOGf`{C5PXkV2I>YY(}~avjp^TH7wTJ z5UA|MxX0_*B%@du#Y-D35N&)U_~B9@l*X+|PbG|YGu6~QL^izOQ_8Y=ZJA&au!HlP zQU;twc2w;m)t-#o*#g319Nb4%Q^mD0{9+L--1>||xfi~+zd%pnM2M)AbPPDlKXfD}qJJIHkiMHrOyLn8sdrq_u3!u5YV%dqd za7?rZPPALcL|b*D)sBg_?nJ8>Ky!J>6DQh71<+hp_|b{>aRIbX9I?=Lpq;~vW%AQ! T2btq@95?V+#!U7F{uciMAsb=K diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.class deleted file mode 100644 index fc4a9338d6d57fb4140028e5521e84dc91d729dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9297 zcmeHMZEqVz5T140_$BEJDSb-|-If9=ZEao(lqLjH$8FO(FW9aT2&vkfH}*Dnx7WSB z(14Km%CA7;BYyx1B=`>hgP(zzJ=^3`U+S}!s-(>a+jqCmK07xvyEC5o^PgXT2Y`=Z zDGezCC0|(u&3#>Xz}8to$bzqxaJ~@*>2bxhR0Ycpe9cwCkqvGa?y}W2R+O&GEqx;p zcB6)q)3Bewk&wY=ZnLno@&JbkWa_0#b$)5FO5j*IoLT3}7t$@1rCbZVDFR2Uw`VJ* zx%;KX`u*j~Qhk1|R3UJ>Tx~JM8zpyLDCs)f)yqn*iw0LXC*2W=z<7Cc(JBh=HgWhM zisx(Q>N>Lno`Hh|a?ZvTt1UEvtjiqkd(6VIBLoiMnCqj2515)&TC6flFUn$zTWfyc z;M{WeDRQ5PfIb(xwFw(-@KqMrdR8@&Y@}QkzQzgJs%W}Q2Z|Gz2p>-O$~=R>k!j%y zJwssM=Qhd=VrqEQ}n zoV;r&tqNR?bB(TvQQtWBziMx2m zJtRDL0xj%*ihqVcsha(y+YOLqrkHJWyBY}1V_t}ANg34}9?xax9nTh)(9{nwgTUZ~ zu~-EbW)ifW7EE5G!l!|Y@lv=LQC4xJ6FZ~mJYB%N!;Bz`GS`HlHgSY9myKo>eI$!Q zP1bS`eaDZPlgnx7c_?Jvrsfe9RQk4fr;KC5op;Cn!-)CYC^L;1jEVc-}v2&-x00+qn56!`8pkr_n&S4E}vbVTos!4~-m_#oI&I(sG zh6N&1Ig=K%>r4rA-+8!Sw*(fiZk2bWDu_j`QBxthsiad>4Xo-_0`wDyV{{R|z-4Dm z=_gDXaMeTQs41s1@D@qkNl@mB&g$cV(P%dSG+B<8=$J|b+8t+ERGGUVGsN<%aYn2O zi$>^jZ7utyNBGwz16K(7@r87@-4l`soY`u@ZXEC0@NGi=dLeB%$bqq&?0sshz3;i= zVZawn_a+1HkyL5V*nOf{cZc+W4dOouDR+~b9Wrh<$30tam`-B`J|LiX*0++S$OO)A z6~(j|WuTV>zg6Xy;walk1jvVHER~7yDFLs%gz=;q=u|2m8_HF~YRFAtQr(FjNozPU>|2`5xT~tLxILAI685dT zPM(Ha*rE>SZ|z*CVIF(5rdpYXy97>cTdqpO!j{%}I{_pxwjg{T`_(n9!uW6wuJ;3hohr-oq{pEKNPt?jQ20$$KZ~3eqV-Th(8|UPaql<1*h

    x0*#3@X zyFMHniT9AHA=xg($~HYD+gGt{9}mg)eJtC|kZeE4vVAffTWU0x?b9LIF2%6zgIV0? ZDY)_9zAxhaB7Vm3jGBX+a2xJG`CruLbIJe! diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildUtilsTest.class deleted file mode 100644 index 3feea9d7c64035b32f901655560b6cd6d6e44084..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2620 zcmeHJT~AXn7=Ak^+m6E_f}*HY)C4X#=f(>oYJy}Y=!S$15-+>6ZWPXGPudMu&mr#s>TBkOe{o z#%d9N5P?d#W>)DSj8bE{4r0~jQSgR!4%oVql85$XDx&s|6_IHoLjm#xrZSp{$!_qr zwT~DA`OUR@mB4guFx9|4WOtRoBr+Mxq}^pv%8O7U;KfHPVUM3c$*pZ{t*uv!P$n=l zm|Kx7<|bhwCou6$NMT=$3OOt-}jE6d1sNf6*p8WOJiok zJ!+AMzfaH)!#wD7-}&5k=K1Hd_UsXHqO_$5@358@;S(A%>9%TddVHY23)y$pd3Gw@ z{j-pbIEh3kEHx=6JthU_q)tOje%edorDZA%O=X*Rgv3a8a0b6w8rfmAPwQAJZU#}5 zNf-Ja@erj~>Sh0kBU7s=qxLA_V}e}ST?Ef?QEy{yq&mbj9+h4fXZx1I@;jBl!!AHX zrZ6rfX9CAE3YEq(jEinqW>YgB^Y1U>O|D}hnG=AsPca;XfwGQRqmoe#|$B01tk7?DQmvK)EiA!M9BlMclxBz&8oLwsLSAF2e+l3fZWLV{d4D z1rhidf~(k85b+pS5$wIsF!gSF`XkJI&DPz-*0BJx&0$;aq2Lzsx!*i8up_V zQUz7)gEZ6Ar@uaZ`t)VbdHo-kuMp8abR|YD8lCVxBN;G1NS@c{^`z-0{lGKr2h5~f zVxAtjUed72e!#q>?G~7oyicE*(??v#VMZ_#*5uJVMr|5x5e!RrW|I@s=OLg`d@41W zOHYjFG}@67ZKs&$o34}0xb9rJG^EkC+{xj|)abd?_|&=V2E)?}x$ubSy*GNmZ!a^|4I@8u?A+%GY&GuryC=FVA#3?e}3W}r5 z(igdW0iA}Q@}|w)a=<@!;G@l;l;Mxqr+n9m)AbnfgFU(fn$BPJ>tPZj zDYV&Y2+1<$7_$+ob}P&PV+AdOn)jH-)8vXOhD$@(LvV+Kbt*S&pH@PrY#a*PgPT9;fW z<$10br$KGYrPB`Y!kTA=gyGsH6H^WwB}$$l{!{rVo4Bg>fO|wL0KuyV}m6{&XTpi7w;eU5mjE;~s?A}dDvuULj&-bQ>G(BYH z8(`BznjZ3ocu4eHWwi}ih?N7=`o9u%z1h{q+Z2)iO8u|fC08z$@cY?6qk9gbOTJ_x z6M>u16TxDMb+l)7Pq!>)<;rHjR*|iZi19GmX{-wwzoUZ=(vgj{pYB1Fqqi~Q#lsq# zGp57F%l0($@;V|FJT&GSx;3SHCND=H+k&ErI88e928I3*U)j!s6?G9P1f~$fn=Cs4 zf?;XI@O%>*4D)b=2&O=R&P>HpeB?uMI<8Uo%AprTUNC&4$c(wh-a310f@0hrot3~! zMxSODdc0O5NzVXXZ7-VOq>m0KXwQ{|R3bEe4sKfs7 zZOzE8Sr(+CXc>Z{m{g1?4oJp?^)T1b>yb=YJH++a$|q(t49JN{DB5h`-;N_RIN~8@ zDN0q|HePpvIXv{sc-YV6A-FxYUlHjmSXd3!+Adz3bqhHb@QBwB+`3{ndh^&qrM+}8!iXMNV_`O974M} zW_S$Y-s|gIDFax z8W|l+lCV54k6;`M;a3Yer zLZ^`+_uWwhyfs>$9QMBka-HB3Sxl)^6>O2ZWfrRF9zMEpS1MZ-x|s__Ev1s7rEXk- z6-sR85+^*QQ?kr6U2F?G`Il(psH+fLeVXS*vSrH(rwuj}@>hQznb7DOq2pEZ$K2|| zjrzE{DZ>1`A^2qvI|%FudKCE)A!0^H#$}>z@?Ec zslj3uGzti9s!C>Eq>8YuZQ{+)p-5H03Z1-sYTiaBB;3am{DU~;F#?e?!$8Dpf#Jg~ zyt`JUu8unq`hj}AwK8>>hA|3zPn4LG$H`+ODYTf!yyDuTk?^UdjdFr-Gu$_a4Fmgm z-koDkwD=@KlWYceAnejBN{v`15_M2Y?7e%r+7i}jpKky*t^c2Q39 z@Y-7OKC7)NSA;%kTO<@E+KJ^5<+&ztfF3iQ0*n=&!J={;tF%!-Be5w&mnhuBxQWG` zppsUM&eeK}aW^V!B(^f-7{j?9L5kS5!x3Os>+X5`_;_m9KpJ-fj3xASwC8Ij?Q?H8 zXOS-yH`k7wSX0MMevQ4Zwska^JfI>y#_zqAi=?=655?%KINCxUE_X5dT38G_jM3MT z5Db@JjGhI3rA%pzzJ(*Tw*MGChs~+>OQcbZp08BY=eT3^J>(quH7!QpM-Ecx^aEUS z8Zx3WdI|OL*%-Zy>*}%@@EE;{F@)zpj4tCo6~2peHby_GOU36zP8_3%7DpbxQhe$r z^n?uccG^wrXg%I`Q;gzxc2PTZpmqb^TWBN7oi*jnC~w7IrG6XUx7XC~KzUb9{WW;M zwx+xr?|W+GuS5BUn(~b(cT*3rFq-xx~Kn`sy& zjgEoPLL-sXD4vb9l!W%Qghq6NPJ&q>w15`sBO^R3C8X&T^tlf$TPU+e(sL403yslu zl{8T$E!jw>)5}s)T7h&~LTaNdy``$tv?Ke`|X+_%arL-wU z+8?B}Gm5moOKERaqiK7jw6mbK(*5xLHmstz{rjs@J0Ru0<3Hvem2%&yIQkP(+Brp9 zK}vgr9}@&F6DOOTHMe`b+D;=^P5ag-CE9CLQlz~qrM+8`_G>B4 zQ>6V(O7qodZM&qjK#_JxN-HbU&Pr+XinI$-+66_LeC;hL(q542wx~$^rIhx7BJFol z+JlO;KT2s2snOQ8NNE=pXCPD=Zr zBJHA-_8~>uqf*+#inJ%Bv_}+aFG^{TD$-=P0gXPaNc*c)w~wgN*6)_mKB`EQ|DyPq zA}uG??c<6xM@svIB29i~eNvJ3l2o@(Dbju`rF~kF_9rRrF-6)xrL@ne(PD#A+9gF= zR!aMO$57&v%MhQR)Xs}u8$sauWNrCW3J*O#WJ8uJ8>G#5I| z=dFgjCVc5S+*NbFToWzsj}sWV&HM>pi4|t4SvlF^)@l$s1gg#CE((pNgl-De>4}X> z)!|0Kp-fNqsgvvWX*n6HS>|w@n`+-pW|5xT$X(%??vJMAvjdK%p2+s>ydYemE)m!^ zc4mpd_DR%z8Ab@~?&-JT`_iw#DB1tv4cF&^wAXlxTGH`^&6JQX^?bQ(b0;`Yt3!(& zPFvivwa%%>tX0_Ns4Eq9n6f$)6-)W&9 zvu$oKghFw{I8;f>sJi3v>d>^~*}@Wv1|dcU^fNAcj?lsgLA#!Q>-0{?%rU;bD zW9a-sI~=-xqFEg>_w|`*j6ax+u51i7&9Tp|i~WMTT`Y0{fcMV)hdAg}#n&ZdV-< z5NI|xuF{IN&;7dE*3gM`uLz4p)%nm>!r{|cR1E~qVM3SFqGBLUVOKM)*6|8FPskrR zN{8vE`sCPymj+!b*_6eW(p#@Vb#Hil^&xoASCr;853S zk~5Z6{j36KNU8kTm`}1T`gpoRZy$vo+8l3^WUEPA*t?8sLou4kSyDPSFcW=T`hVEg z)|g3RF88;E&F4tg&t$686{r*V?FloX*!3nm>OO_MhMDC*D?}gu=Fi{=oJ{ZE%xIZY z@MxRQ;MtDwY@Uh+4@8Po?fZegRJ|RK^V0*b-;?2GX0d)xhIUww)61HpgLmoZKOkU^ zJkmA48@_$B!`*p~m0LV8kMB>r0k=Y*Cm{mmqda_ut#P+UjCFY5-Dn&<`I62&_aqJw zYa@Y1;t83+DLoMbq7hikVgb?i(f&nLg1J=z$_vvI+@omEr~5eXMW>lxI&JkUc?H00LKCUpn!iSsls8{0Xy;AJ}5&aYKP*s8n;iy?Qq;a z9k;vUc6Z$FiQ0om-itI;Fw)N9C`6C*1048x-@$L;nV;~g1V`|5XVkL;p2hFOT`4#U z&*2rS0|_OdvD9&FAEccy&}NOalR0Ro475*;v=?&F#tgJoBkjc;w3iIDFO0O8bI@uA z+LuP!D>-Pd8ff1bX|ETgeP^VdD@gmrNPD9o?N=l1&4RQ)jkLFl(a0_%?d^iJ(?;4m z1!)(JwDSdN9~o)m1!B8Iq9E-n a18o~z#<)^~$$N2T3a_W5m{WoVy#F`;gRH#( diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.class deleted file mode 100644 index 11978de03150a3cdd6c97e34244b41828d682619..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8334 zcmeHMYkM0<6+SB`Sy^$D+G!Hnl&}dDoQowc0ZN<}jIA_I))yp4rG*m4tC6(P?vB`t zV~0ECQto#O`~rRfJP$k%eCIdtfiL_B_yD{!vyxYMeL-B>g7ZAl>YO?A&N*k!8ST9O z{a=6mTOxXfer{61pt&e?Dlw1Z%6+!MDz2zRap?LF-HPb(ki{abI9?LPJgoSl$-T-Q z*6OnAW>19Btzn``M+|yY&GuN(uB@!z=T2M@5KG-YpN*5OmohQTBAB8XxZ#0};pyhz6l zIwHL{$V}ZV(g}mcT0$6940+FU9Tpj6ERG@QF@uh}K5Jv*V+Nh{w`P=d-D4W#c!x7D z?ksSRZAtr0ET~m$uFpjhOXYbeeGZ45XntuK{ub$+L8VkRL)O@LS)CgGO-9xnIE;6SWhOT?zRIKCm|AYMe1(s%t}V1b3gm6ocU0Q zKH7xBu46M1JBIA^t1{~j^r!7Qvh4AO@DiVI+vw@GXy1-RfV|m@f#(JsiniXB64n|F zpXF(BtfU2$+7;<4(%ETCq{B)fZQm>js^+RdF@+P{kIao5&=XUB0My z?cD}VV%PdB=5Hs>izMigJ2Hl>0|SIqki& zIwCGwO~E585V7U6*y&iPcncBZRLJ7s;3>}G~*K6Q@^VC)F^<}iz)ove8U6Er@8c*+qOY+K{ zW1thc!9theZ5_!xNK$Zn+!ZR_lY_wMJLWz}^6DV3x}s@C>P{Jp0P9a{N3UA?dC77k zD+!vsh3jO~YKc(Y6{IuP4xRx?d7}rAUa9xVUA5QYKDZa}VCFe@_J8jJL%02XpkEKR z2Wo}`8D;4RNp;=D?^3jD2DaNVJ8xHW-Evvey_P7A|1+umkF?)w?!bZe?7wSNqC2!Y zLAU55ps%JgOq_OORx&XsZJch)iNDUnHF;c1YEwAOYoy0_syq^RT#!Wb_P@-?O8Uy_ zaHqTSAmCw*w|K|{$st+O_ONQ!zQrQ^*03gv8JsQB3kF@-n;HT$gb3O^23Msh9Z

      Ut&1RsBNwTf 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ConnectorsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ConnectorsTest.class deleted file mode 100644 index 2e3fe30301d598fb875aad63b1643ce2ffd4a152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11758 zcmeI2-Etc>6o8LR8apO!`cG*o-IM|@v~~%hFr+Pn{4kx`O&gmQE|py+QM=ytNZOL} zH^XCa#Vx}NFat9%!zJAC2s{AKP&nFku-#R%wi2ea^^NVdjy@gfXpf|G^xK0Ue+Gcd z@O~b01eT<5D~d@~xkK;K3J)t%3EupSSHcz(RE47A`jJ#jRGOj3{K_@DdY9I?5TU5i zyG%^Yg+ahv6qF6by<{$hQPrFg8+f)STxujvl z9Ths%QTJP{ICiz!^0~{EBO`RC=yA}=iAeiOC-IA=vksR|6nNYJp@H@*3AhVc98273hE6FbI;i{y5%)dao0JFY?s}@3xnvcoqeFaTgk;(3 zUxgZN8M;{<+vUr;m z#@3tnjNu#_``=}`fB!ptv#mA=8B?*#@g)oAQ~3f9*Y@Gs-oGbGx$lg3EG2KbNLyAL zRJ)xYDF!_dJX$Bz$ICwy=>)`jj$PSjq9<?4J*mlI>8&lRWjOgqyPMwm z60<7-SORfAI5~+ls90mFeXhZ*K%F+(tZZl4+kY3}3>i5!+%&Y)_}%HYVIJV&Wa2PZ zuz5>m$LYt%Dpt@wSG7F{-pwh%s|4n^_Zso-m(24Lfk}Os>7Z|OwO+%FHE;Q>9%tb2 zoOZNVW-0LR*TW{BFOT&W+@O(Ubv)i-(aGK-&7F-@hPY#-cybWtn#%8?MFCI z*LLBJFqupbU7$*Oq#F$*g*{&<@S$Br&1kokKnGW$;mbsY=>b)^;Zu(G7_?g56|^~c zwIv#l)BJ!+#;s`!`Ens}#r-&6OrV&|-$kw?A!ky%r_P*jpgrR&TsmO#@U0MxYV5&` zbc7etE)h78!sG$(t99LxOR~5G#%o+koG%Sb^Glcnywrv_^>T0=_P{7U<>RLUJ{RFx z{Cybz8;8C4xeuSFQJUa)@h6!0uv^Oki(?;5qC2i42 sd()EU8fnv(w6Be{w=8Mj8fh0TX@3}KId~g=cMjfx_hMh3gBiH|54B{L{{R30 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerClusterTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMakerClusterTest.class deleted file mode 100644 index 18e1ad33e1b2e2eb64e0f6b53d8dda7e4cbb0352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12916 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaPoolTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaPoolTest.class deleted file mode 100644 index f2068f892e923899d9a725c15c2e2cf384433854..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8954 zcmeHM+j1L45bZIJWeYnA4hc>I$zTZBkVsqtgj`EFN?|NZE=h5Ur_^XQk|x>RQO(Yp zghyWa3aa=As-OyZ=2!R!ik^|;NbxGWSs5o4^s?78r+Y3teYX3re}4TP0ItD}3``NY z7APmLd7$(6*bd7JnGduQ-uEIeyIe6XRo-#KKy#J%WRtu34c5BPwxo3H*eCuOYYJzCvJOP5OamzTReT$Y)`Wz`XbHg3ml2 zbeY2m9IJg@s1|SDEta?MZdEJW>o<#40;fy04pY2Y^ml}kzQ=vNrR0uia)qq(Yo*(@ zda-)fn4g8i1hPol_n*L_jl!*s0)b4)b^;q5soW_eyjr|ftQO10+oPq*cRp8D-r|b; z4oA@RR;5xxY_C-rN5OO-U(8$;zR=eRyt1;ojkq;@m4TB8eca=sQc}&rX|j0nwy$^~ z-5uVfj`X_1Wm-s|c9m?n+zT$#>|DLWX_Gsy=_18(xX;?0E(@9KPfG65q~!XY%GpU- zrcKEM>Pt;MrkxJe$ip9WaV`dVaH?}=s&mG@Ts&*fAK`VS(iGt>)==ZEQw>fZ zb?C)H_6IA0pA)2bSw=~!c3fBNvJbUz4<4AnyO#vA?sZ+^2u*_!0|@SPxX-K5!9YTL z(P3qkihzcGledJA+fxhQ;57?fJ&4ZHO$6`XhOqnS!#Jae(!}9GP?au5=e<$0w?ucC5)2gp#!!sSBVoOjYh)@%}!2`9_I)|-VO5N)gBVyJ68YFzNU{*Rx3(~!+)`fSEo zEW=+>+=!&y(Tu?KxbDcNQH$l!b*%u8+LMijG>eYzt~s+llkT`9X69MHh{x`VV5NcU zo-;opevI;Upu4HsALs%YaMn*VG5gp))nM(T{pa2PiTyMiL*zFUsL)#WV0G^E{ELc`>Pm2mRo8+63C?{|L##61+7J$Kect z<12eJX(sPO^oYNcfjBm@>6lvSpp{vsERe!P&pj)SfXh~ zCn{z0qMx`Me4edY=q+JI@~(`mBihzPGw_+I5}OKl2EIV0YcI`OHNDNimjn(EE0heN zAU-*=zL0@yL-q0A4De@C+A(y@`HNVa@Rwt6JnM=9BUjAZ*bCEL#tY*X+FuGcB}6t3fW9#{B9_#7_5 HWw`n;i+M}P diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaSpecCheckerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaSpecCheckerTest.class deleted file mode 100644 index 8c409483b93905f03956619889d7c88acccf82b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10045 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaVersionTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/KafkaVersionTest.class deleted file mode 100644 index 4f8adf4c41d3854fc6869cddd5319d377f6d95e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12043 zcmeHNTXWk)6h51V`qK15+VozkCQw{RY%b-}rVVu+hnhG|Cw9WXOJ`$mZMCu_q*Z!h z_+8Av47~F<_zAr6(BZ5lJ8O4S$+j9o$U~f2`|Nivd-mw;r~TvQFTVl6ZCFmg7=b&k zQ_FGY^4w#(MRU59bGf6pUg$Z?W)9_+ldBn?%bAmFS#@UQmg%D>bb~prZkbh_mw<5s zC)$$@YBqAKn~zzI6S%aTUs}#T+$gS9N~`xP4>$7V(&EFlVr6xGtxzN|S>B#gL6v4> zp1{$9WxAZ2e1jSuOG1i3=7~@^x8-YebG^g4Eo$iX>~q>O2wdq?d4F}WxRhTnSG#JH zFhO9p7os20L^mH%&)@;-Odo3X+YW3+!aYtP`+8jdv;*u0$kTnui|Y@{r9!@1lz}G+ z%)K7C?%9T3qqv9x?%`Xysq+N_hceeT2#gm{aRSZ|IKCb7qT^Uj63&sStLvu2T+7&E zb**N#Y~7$7*H*I~YtvvY_okLkRhvw!vzkF26tZdU32iWKTDP)6vSd5Sk`0n2+fJ5g zt!^<_GcB&QD6cg&jyUX@jR_*-UF_f9=&B-4%fEDwHh^rs!gVK9D3uD zfyH5}2N5%MD-xW?bt5)G%V~sR{TD5)bDO18rIy$>I@eqe zD;=gjRvyQzVa3z@8kV`H>8|FPSPpa(^Ysz_5|jp6I;*WnNe zPIb~iJfC(H_p@LCL*f(l%TkN+rd8Jr=DO7;H8Z-&6&WW=rZ82L)eFbcDft_Pn>|_@ zxHR|>A5M`d|ADpCb(zDfO~-obW(o!lZ{7D=o6K3V9IWxhXEkPv$H&5~hWlr3LHqHi z!JJZ}DZGA>+v#DK>h)?Dwqhta$7Zu&7sds1YeHxrtT8BTOO5r zN5=eggK>FRxIX00XBu2F1-`gAn zPIYg9NNsEqJ|XZ|yj_K~@Ozgf!&^kAwdh~r5v^AeJ|pnwZU&;C6dRh9>IZs#Ge_WL z3$HEdw!tL#37i+Vdhq5>@dpo&qW(Rqm6Zp6Y;F*8G~U>R^nyJH0NlBIjprh8MiDPR zShondw9CPgqbZEo+f3PZ@Pa%mTThwe2k$FFX8u3H8~OlE;B1h8K?v{ZjbE+^n9^Z*{XE0*Wf*pe=IxT*eq)V^yd7`sla+E>Qr6Yw>G!#?YkfKt!R zR=-0aFtMV$f;y_=tsEDw0N%623$^2L9^Qh(I7;AX43aobOXDLrJ}Qlm;rN6!ejAS9 z+>>w$Kc^7kI-(N%pZ*n2e>ZvdXE^_R8}|}^3N3)z-oeiaUkWaRh9f|GrX_?i{KiL^ zQ6OAaAP{&DZ5V^AI8*3(AOF86rwi4}j1hfSOnx{m&69Fx+ eKzpG;I|K#HxiMJmW?T`+-{4;o^KllI;NCyfeUg&^ diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ListenersUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ListenersUtilsTest.class deleted file mode 100644 index 9645ed4df727d3bd18c286d94df802757ad593f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9554 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 HB9#6Hbm>T= diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/MockSharedEnvironmentProvider.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/MockSharedEnvironmentProvider.class deleted file mode 100644 index 1fb3e0a117578b97e0910a1d716971f87bc285fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4487 zcmds4U2hvj6up}!UE7!@4HQ~hV49X<^RWw*k3vGFstRf(yFpE;#N&89iKp3}v1Vs2 z!XHBd3Eue~{0xLRvuoo-*=CJoSodRq_4BVp^fi6y(~?Ks)I^~b zsSTg;5f7yfQ)^`MqYU*>7;d!*qc}^gFkzzmA`ZJcI@%j>Bl_EFB#l;yQ1)A+N3t)B zPs<*yMxvkE0;U1h&hnpSj zfpwerVSjN;DrxU~bfMLL>e2E;xZ~5y9<5H7Z5yLajaI$dpWi7XQXP*(pG7(u%9vZJ z6&o7ei$#)t#Txbffna?R#V!~&mrYM#stj7shNxx8QcQ*YEY9dH>pnR9$jgjl~qnZt#t9`%KPs&8R+iO_=J&yOUU1}ogiaZ zPfcu1^>>YKd)}@2WoWuzL|^`*s&I= z(NXz(Ix~^@M!L4Qajq)MZ*SdvzkcZ_TKg@xdj(IoieUdLp3TCFuFz|Ea|o{kt-!qc57H8T z`?pBf=neQ#AYG>$KydrMiSev|Z}J9Gz8m-#r2{M{0? hyCrBBsErtx=skKLBhfv4){ut}D4>t%ll){p{~L1ThNl1k diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsResourcesTest$ResourcesCombo.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsResourcesTest$ResourcesCombo.class deleted file mode 100644 index 116ada1307d13815f85fb130a641479393dd043d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7175 zcmeHM-)|!|5S|Tfer$Vf2^0=Ez?1`0=}36s0l`rTs)MVP9?;8G@W6w!>n1*S*Ng2f zmqYwrNFc#Ge-z^L?lx^j(x6k}sI(7W+v}O}cy?wIfAhzmzx+l-A5*76HIELB4tiD? z+k425c~7dIv0BEDWlyC-bE|YOh%#e^?!_t;QE%TpA6OZg17TFA17QYWzd4=ls(7dx zwB*r7E;8cDsQ1P2p$M!;evoDd;`_&Fc$C6j&dPzCcAcAcoe8^(rTQ(W zkBn2LEd%)xA8HwVFvG6@1!ZZ1MY}6Kx&)HkLKz}-k*t4AcsY8_ld>15kqo3|CPT_W z>?AN(79jPoB5icGnKUd*LUAM$IK>fGFy>ig&r)~UJ`$B%0Tttk^P)oV8Ie~w!1@xW zyEu7#qBWnG8AOGXpRog*lgGQ~^LVF7N4MC;{WenBk2&D3Z|CJ4j%rx^#*;lyY&AX5u zb1gZ5uL~~Re(MTJaBxy}e}39F_>yZL3!u^Ru?QXRJlFpUG<9Ftu?p|!IQ0V36X3(a z%~Fe4B-VVI$tZM~)P<1klXHHR@x)3yS+K!VA)9ro1$yo!$2^kZ3Fnhhp3qq3vL-)eok#8)15Tp3t3J48Y*KJM71wX5fPkg>o)159jh*^W-i#<0)=7 zgV6VBjh1RMCknE z3Dcn0J^K8Tj^NSSRFSgGv~{k`bRYty!v@_v_qO;6gJSyyEIEK*;H=Gi$RBr=t3=fc zMtYAtdIr_8Woo0L&9c6O|%x8k5;Fb@vPA+bOSxnt7tx$J$j88*51Or ej`cU_O?n&S8s5KyoYJbB7PnKDI+df*77bq27p*0gGa)&;Tio zzNJG(*0>DDgA$a35{w5W$OmPO3?$RUS|p(+8WDqf*pn1TU{Vhbbzp}&uqF)VYxP^U zJv>RJG6cmBXkYQ@;|ja}7m{NW%&T3hs)7GY0~Zj!38RP0g>$_jd{ck z(HVv<#*RR9Wf6uiDI&4mAzYJ84A=n|=oAO|1kY&}n@Q<_>|n6lCn!azuwGOso=|y) z1FXxjce9hnU8U%et`I7GXu=L;N-hkJGvk&_`m$Z5qdR2we+N_90aKb_BD3+EaII|? zvng#{)U`kioei7~?AzV>fwO`0gW{FqV!_3Niv<@8?mN+aE4%r^t2bvVGE?Q0vMXnR zsza(cMesFa!tJ-tkOqsB-2C}v+u#9JG+{_|`BOHq?6$%&Ercj(>JBp_IoQit?;Oz* zeC)FCGOk#{gwgjh9uF*&nu%+(SvL4t|hEtzNS#5(RI6yu-rvH`9+rWnd;dL>A^}@Ml{|ZXUy@< zx*2ip!FKnQRyo$OW>qeG8*Nq?uvID8++s+W!`yv7qYuZiaL+VMxlj z=18jU+KsFEu2w`xSGv!@Sfof7yOYQjZ=6RYn6V}hulCylwC5R}6(Q&V?`)pBATBQb zXcBnOvG#K^)Bh3R^}sJy6F%dX+}=3B!KFF#E#>((We=9Ngik)IRW)D}GHM|SBp&fV810FFv;Q}5Tc=b_!4dDL_&97Jd zA7SZNyjz21JX#sR-z7XQ<>x+Jh84W>;R;+uscU#%gEw+bx5xSmO>b6cTFo`pa-DC% y+gS2Cp4(b(;D6Z~`@GQcPKAzp6|Fgky|e9DgZFG%)OQnqx3Go|Uf1#bgFgYK8$JL4 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ModelUtilsTest.class deleted file mode 100644 index 2feb1fa75ec462c831ba6f66e45f374d1837d28c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10134 zcmeHN-E$i?5MP;mI3_f0LZMKgYD&Q=jLicxbO>}PX_*F`CR3*Y9_6!=D7lkvbUFih z;IH6cVVHp#c;_GDjbU|m>bvIX$#$9#@XPt*RzIzFSHIQn-JgH|`a1x83Li{EiNKvm zdv(JjQ{Q79Ru`%s87+bXQCA_?%qU&={5UdP*8|n&etpee9~cD3CJ0+E^QH*Siw=#FhgLjFMD5WrOWUlSy+24HIJ0v;ce=vAQV0` zLP;8G)$(}|eM~Deo4cI0x#u&DLLu|^*$$_RLe+Zu)(-Wp_4KVJ`YzJ8;t`d~(100l zmm0+3--oDW8V9XVvsS2C^=ieaU429lDs3o=Z?l#b-fikJX{Ty&dbptTD%mru!-~d| z;%r+<>7614ldz9*S09^Te-9NwI;b~-NHY#Y+>6oIOiLkmq8x3gQIt{hL&z&L8%#6b z=YBI5h8M`L2B9xJVQ3U1S0Zys+zPRWoJqSpSY4tbqOolAZ6T3vw($;rXR&Y6(lxq< z3~TS86lK!#Qx`Y|*;mc-Zh>ZNEG&>{BFoFXut*!jN$4xKz0bC|j*zjfYDsSR*V#Kv z3x=d#nK>`xY~l&H*;Q?HW>rX&<5ZheZ2Zt{c050eJTJ~TX+6izPaS2t)Npz`_>2)> zDmFrc~?k{+;Ob2nCa(yaJQ1SdAuZ8`VDT^?X1>JOxs8}=wG?`QfP^Hyfg z@a+L2E=jjJ>r01EBI6cm>)%PPAMtIjx%7(SxWIy0>T4eGJ#75OG8{k#8(5%VR%*|aP?6v zjR^Rv?1)I97I$s)ENT7Wq!$|LB`=rZRWfX)4^p zapgU1Z!%@YQ>lDUd42-7>^|vLicOAvXUaJ){*v6u+X0sdKU+h9#>o%Dc3*=3dCT|#ajuV1n=6c{cm{2V+p z%ml9O2?7gAGUd7>Jbq6`4_UyYGTb82c(zULyFKnnlR%}ZV(sxSgl$?Z^rLMPotnJ8 zV_O+dKlH~2#AJv0F%Fq~(pE?w@h`)5z_*m}jVQpj35vlKUZ?TbhxjkS&&qF5{&v3d z3(Wq3ze+HNS1SW3dl9d*T`9N(^Y{yO!n-ASxhHiQKaZlll7n_L7wt+0?X_IA*K^Q5 z%0+u4gO;z`n>lC?a?!3ipwS$(Z*tKV9nfy%pzY_P-E=^ECkO4vT(qhK+ENbM&pBu% Pcn`f;g7=@qNFCrGELdU9 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/NetworkPolicyUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/NetworkPolicyUtilsTest.class deleted file mode 100644 index 02514a20dd2a4c4ee3747b62ad0ae5356d95070d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8143 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZookeeperReconcilerKRaftMigrationTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZookeeperReconcilerKRaftMigrationTest.class deleted file mode 100644 index b2c4d9be47116be3e53e52e0fb685dd754599c8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6613 zcmeHLZFdtz6u#2}n=Iw6h#(-Y2wG4Q5mcmrE=yWsHcd>@BKXoX*-YA@o86q<+1UCE z{0sgP&(U-6yFbd~o!z8K+D&&W!ch+&l07r~%$?`X+&gpk`Qy)Dp8>#K_+Ei20@U}c zykNe_KczjI=WgB?9`F3f^KO@URJdN=vIAc*Z`eV7pLLq{R{n|WZZL+p8nax-;x_Y2 zHQE+szJ^1&>om}?0tW~j53SqOS<6?NPnjhMWS8`EpSpqYit!obLFuzMJhE2mSAH3P}3U~1fDdjxHLbwUTcv#(c&RAYgATo%7x-0fzzfDEoP;^xaeY= zOJ}F63p#-dX4R&m?RuRBMn&K;U++3(cG040tXDY z#T0m#z_H;L6+F-NGB8JuKU;Q?q-*zBOS9Zg7rDxP*SenDv{}c$t*P0@I@4OrvZ;q4 z+_()~L+v7WbNxum4I(Yq-??GOAkr>sEtmP4;|i@qg|)5;w8=KR7)YZwF_v>OmUEJ7 zZhtdGJb9<bxX6TBd2XLZQ$rmWZ#Wf$XBb>PlZ&W{MpC zSL0l7Ey;zK1_{q#!88y7du^>TU=;Rc08B^1b!K&H4iq)6_qv8J?LrX!Ec@D!u4|8bG^{H)bw1tIKjXEaKz#JmNB3 z*YHD!Tj83S96uBByCuhBr0S?YI>l&HFS*%_I!wbQ|@XI__j_fb!o+bu##1>~5CwbD}1!Aqwh zOA4u0xfZoo`Xxrc^MF|AJ^{;o;er~9G}-1LZU~&K1&%DUi%yUG90`t`;8NV#4zc+R z+$8W*3dLr7NW#WVinuh9tD=~NQehaEC`g%u7)6%12t3@IrIeKh1NP=f;5rrxB1Wl{ zHTt+(S#xc>iTYF+3!!f^+)<(vY*Wn3SU6-9DbrmZLlZBRqQT0cy$}LRNQ<83Iw)ZcpzVr2Y<|Qfja4g zHwrwIf@-9p8dQNVaj#-)TLnxhd`g8>0hD=9j+S+Ou~dO7ruUB9M*%7M?y9d9Xb?ER zSJkQj2FTIzvrK`nkwq9v3Oqrvd1q89@a>p59^I+99cAwOD1*zw$cMK9-_-nK#DGq^p%W4>=g zdL`$Gyt)%(V|n-Sm)BN`U0O-#L2)QfeSI1&t$!@ zxxL3dOW=Iv@#^NrYN=c*R!f^3C{wO*Pf1Vsf?1*D5`m#*A%$Hba3;6-g23Ras__h* zBQV~^d#tt6!!Sn1>d&Rq#BcB#^;8fFKgOY2M1jL`=_R^G<5Hsq|c? zJ~s8S&4{+w71O@l|5YEmR$)7KUDPoVzz99PHng+Si@;_ zxITy}OJJ@NNh<Qi)yRZMDBXQ=F=y`^E8CFI+2l1h~B!Gk{I>@=R}s382! zc!I#?BeaR6L`t_JE=Hgea_l0I-HPjHPlR)nv)#U;iad&|NEx{0>Sjl(WCTXng)sd$cJ9 zQ!tG!bo7WY0GC=)Gx+`;?Q#OzbRyc76Qa#0qRpKUZ7~t;>Iu>AC8AwB2HJeWx)l@A Y=n2u*63_;aD{ki(;5NPoagT5Q1Q)X$F#rGn diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB$BSB.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB$BSB.class deleted file mode 100644 index 93d9b31bef4db8991e5153573fd3b1820e2e3af6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4905 zcmeHLQBM;=5S|63^sE+96j756;Q?NHFFuKy0Kq^g7;V82pSIVfUAXREcDEJ$VG0^Yd2#cmYpxFhXF@=qR+@*zkaLSSVCz ztQM`0B2)?2%qks5aobp~&o(qSs;wg)ZnFJDw%lPNW;GEDdt609^P82G`IX8_4#o&f zrcz@j8{zBP0go(!@#jJc`;x%>h4Mg@FKsOD5*S-mb)JJff#TU2*0ff70&bGxj~(gE zh&#MaBh^aK1S^!JiB`3kx6CsdpY5?Mo_|{L)PGQPN-6sqS7fvr7lHh8>bY_ z(YoS>N@Zz_*{De^%H&50GSMp&c__I{D7mASuBPGSoT8N|ZRy!hX~d*cTjTW9&_9tK zuIsT@KszOo@Nf6Yt!UA3)j5{pP!YTB5pF^fseOYI0#Ha*F;3yV}3+Lm>`FC?a$ zeSCv+){bp2xLOnl7XmTK_f3pI=y82 zs#|BKnXNJ#v8v?0XuR!KQW+NX_i!81@`iJma|J>#A^$4M>o&9b_Y&g;>X%3O5$>nW z>)>9XY$mT77rNo*G|0rqRLG7xbdg74b^Kc(3-a0ez0B~VEn8VXFR5SJw(*Zn#>ebu zz890(r}m9jWnpYpB_c8y2Gg8$X+ZK7>t)42!tZjuC9;yX$7T75@xi!1;~9SOKSBbS zfLjH)0k;WEFO*$H8>S746USL{&4XeYOQG#{tHyQJ)gT0>$|_>Y3e2>jrJg!z+PLX-G7KZ%DYlxkbR)?o z;i>->GcW`1{71Yntj;zu^rokF>bI+1-D>am`=3Am3IJchXB8+B_|E7k zwA|S6Asez#sL)s~`ag&7jn~fZwF;C8)H39R$!>VN^N>fDKuN>|s;#E9yvy|!0?!Gfad^K;U?Jfw=Gd!h zo+ct{7)@0%}ZP;K`(jd_$XjY27l4q2DeHK7{gP&Ou^ zY>Y#BGB63{8jTe*1NzvXr6MSOU@OIDHUY**j*N-fh z@qJ-?Iopp~MH#inDG#c9E+c2s#vMkFr|@avX5Ss-!csH9k^)aLiRaQF!qS3{>Vf(O z6^0IE%nyXb-SoQpWBL+%`!-{(zcC1 zIt3rI-}1dYS!}g$wrUAu+bR{2!8DkiNss-pJWGc5TE$$_@71_3iVkg$VEMrK$T-rV zU|;+nMFOb7`6YM}UL|n8-f|Ufn2{)>jdR732g@xig|-L%4%cm0gAiD0sfZ7LH;DF?>9H*tYs12CUD`&vRA4cCR>%Fo^=mbF0hTgJf+^u8oVSd<&vCY!AN&Hf2P-Q-!7IOIb6>;z z0?Ih#*YUoTwF7tqRNHG~X{VVwptJT%&` zSZ-|PG3&F6P!(gf=>8xoD&(43r7M2WGnVUdhvr80w9hMd*});Z*=HhPO%Vut(mAtjh_k)W$<~R4Ln40y!a3lVkw_@`!-vD|sN= zhQPVnE(=j0Ul(o3Y)>P?71y^h4Kv-di8Bi!(^goaB*Lk|)E(5;=DJ#&n-hxn>RVN( ze!+HxDSkxY!F-fC6&pedyGfv1nv;%c&puk;#~s~PE$+c30!!mPy`{C%Ie3{Y{c&Hq zhza_5{>6%dGVKkOU(O4cv*6+GW=7P>Y!SIK-fv#Kf&GyLc}0wobrh3VpNmiLGu^knW-wun`Q#Ec_U?%ANuS%ub&1CG+N^7AW9EWV_G73SJA?S^*Do(K8PP96gWi3@l>* z^AqncEHA?nEaO-fWiH?-ffw=Z8lq+KS@;DmK3sX}CwS$zX#Q(>UqBhB>2M(qN; z0dL|Pz*~_eBLrvB0O4{Bf{aCY8;TP)Wd25YCkDa9BD@Es2?S^Bz=ri0grgXQEL_1k s8TbG`#OEq{q6}BzWArA$)+g9^4O^e#^9Eiy9RD1?geq*}TL!NF1pwtC(*OVf diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaAvailabilityTest$KSB.class deleted file mode 100644 index 8c18282a415411e6d83bac17c7e0b1ce21a7393f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7929 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerConfigurationDiffTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerConfigurationDiffTest.class deleted file mode 100644 index 21189143048b2f35ac14a124841c3dee6ed1d0be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10490 zcmeHNO>7%Q6n+yz9J?tEq5r?zKuf}pO=&66q=nQ;z{E*Pl7=54q|JJ4PqVvY&F)4G z7tWlyazz|DfT2gRpeV-mpuImx53*?;}>?Eh_Agi<09;K}f~+4}u0f5)LiR+4Xh% zy5Q?nl(}DLjR-jy_orFCzJi!J=qE571G~20C@rqtqE1L)Xk9X{QV}3Afyb&bQ1U!M zAm{TMU7~dY`RaoDioXs_GM|Ol2s|=2zDl6Kj3YVNPvF4z3^PJ-F$f39@Xt4WxlVV3 z)+~p6E#}5cvs!|$xzr1;ScUvblUgg#}H$7gPi4+^QU^ZUS>N4|a*yJ^fdaZC%N~Sww z^2(J5!Ri)|6!Q1BfCauBInDWa2{X4H+LFOd7u{CSKy5!{akOE~&5A7=G&JRtQBR`Qy3O2ws8J&e>8VXt{8kj=wAA*x>_tja)K7fQAB41>U9gD> zDz{!)G~H5#*+m;Y-GrWkO$lMgr@M;;|K`pc2yAo|Vp;W1bG-C zaA>T$UG-3oXF^s*4pcFzSctqeDpq6^MPQ_gQG&agL{-U;{b7>@1U{_Z&+-q}Y!0)n zaEPXS1A&X0^=l-mrkExM;W+6ZGpOsNn7ViaBbRMNgmVV%bg);^_g-eQv%Zx+x~7|g zRY{W+)x>1>G85w*=s%E|5IBNC|1=F4R(I9*Cgo`Y$H%HNo|_oo?Q*c@yv!QD9YzA3 z=eQ!A+~J3=>G%f0BIFAL=VWBK2GOR8#U^>gUcwZ&0k#7oWgF#42=+O@m6~^|wt?Da0j)_FM13jQ2mrVE5=j$$ry!l-jpYM^jT(d@N3`4i>QcFQw1H4SZQ3=~m@nX~)Y3D$YXQc@_lHrm#a0z*)fe z2k`xeKKy$W2Jrs~MZ1_0?Ncq&u+ zuVzI1NsD$RBib)ow26#pziH7XGot;jMZ202?GG*5wTx(gYSCWHhDQ3eXs>5P+pk5N n%7}JUi*`LD+BpqcAC%);a~hWMa~SXS8F&LKFbDIn2yg!l%(g2- diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiffTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaBrokerLoggingConfigurationDiffTest.class deleted file mode 100644 index 6dc3a17a8d43967265f16f9b7013afbeb6e41a44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14168 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 LTTq7EP=V@y>4f5p diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaRollerTest$TestingKafkaRoller.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaRollerTest$TestingKafkaRoller.class deleted file mode 100644 index 5fdbdc41f3c2297c6de2bdc724066e8129e1806f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8345 zcmeHMTXWmS89h*BtwhPT;@Hl$3FEj8O-& zZx=ZD>%af-CjgJ*Hv%IDUI=`v9I7BJUz3}%Y0@jORKm-yP^ zJNofTDLIt|u#?lrq{CI5^V|))5u`vK&H|bDxV}1Gmwb=cR%}E=h1=&JuPaA2WT-fF z^OCL^xU)N$TGDvIC;J|8jYqC>{U<`Jt@SB(jG3k#g!KHL=%$(q=ModtZA2DLuKV6~ zNDs*Tp^>l;9H88SvQzWm}W>yVjuC%QfGA-Rz%?$UZ zYWB(@JDYocrzA5{_LGQZl;Ivk5%(q=NX^}}1DmCF+I2mqFLxeh{SkAi({6Kr4X#Mv zWtIobwga2e=`g)V=eP|Ce4hJPKPqQ^-}A@uh;jJC6<2S}&ZeptEw9zKod~tqjw?8L ztXP;>ZmMEkS&sB6)RxwD*-*t3wl|w>`m^0le>U0l`yJg)|3tCwsh~)si!B*i&0$H9#jc~DhGY_&U1;Bz zwEvHyw5j}XYZw0fPs@3JBhQ6>k?iecKQ7sENjCJnw2H(!q3!GoCa3aEht+;~hMwiO zFg$$V*wZcj7P_*(g=KGHJH_SfR;b+i6+3KZY+A+8E6QScqpb=PtNPg>k`DObo+E5} z4Zhju3oS^OkK4_Z>G!jPKJq z5(%}FBQ?nSLv!-GUbj_%#mWC5p8 zp29;QnRTp`B2VJU74kDUY}&56*lDekjMdDYW)nP1I;+yRbvx-C)ufn#m-dpl${>Ep zTO8FS*&xNl?$XRQ;)&7)bCJicPhzSvj&B-xa5$YoHp9TA>=VTdKtxbg)@Bm=mzX`8 zGY}wMH$AvC0#6y3nwOz;5~7oY<2Ifvg*ZhvgT%_Z?U0T(a9=6W)paQ~N}ncQ?s$Hu zHP=+u^_1}WMEaTjs187%5H;{{sYg1WH#?Q>tCO)jnRAWRF%j zE!81)$y4!Zdt)P^7~|1IT?~~L(%CCW>1fvsJW$dM=yqR8=4ob}<}*0MB&z1BXV)Ws zc)ZIf8#ta(Hsm!0sC=@vm=sP-<^D_}9i$>uLWzb4}~ ziI{T%=D=9IE&{fJ@$La2z`Pxc1252GjSU?60v>^rgFxVA*4SXh3vj!+Yp}O(S%+VE z;?Y#`2)x3AiMn@4Edhr6p_If<=_T-5*Q!*(34E79h^EIMums*9#i~C#2z-w|B@YGy zZyC6a=_c?FC!`o}f%o_w>*k6S_<*_wpB4muNDMxU2>h7A?Uu8^PpMJos=&`VO}{9V zqpxJ~t}gIPu4cctcaSp87VIEk=`QnWl+hi($jm(F1tE%{CVt*K#Qy^rJ3J5qyc)F`{Yj zzRaukgi`nlXXwAL;p>$89PhN$H~8B{i{v7-N4KNh_F4woC>}!vqo_t`Bm89gWMbp# zObt5jvAtOu-p|x<26H>uJ2DjQx0z^9?focYc`nmuonbrs z{Fe;eQJlwx6z=1hxWm2wTPCiFg&n*fj`mR|+C?npT6tio_kYjCy@Y3o8|V7vOy7s+ z(LXa$m$00&cI9K>{wo9b0Itx(5qulZ@)ua+e}TDR;3}SH|F777iuL>gUcx%+*kG1C v$vSD`8dl)IMH@asY+?(q;yZYqwf=p)jd$@ret;k0C-@nDfnO741Xuq9d*2D! diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaRollerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/KafkaRollerTest.class deleted file mode 100644 index c8f3ece1c83061c16313558a27dd914d60013b10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12871 zcmeHOO>i7n5$@5CM_Mbf>aBLY>#!81 za@iWa*Zpu2p`{8sin_ z>OObJ47=+2%#8=!)}7+m<)xd<@DF0pKFq5loa&@?Sb-=ehskE|p%a|`SFpQht( zvDp%~NaX2c%Pw-egbBS_SP8PKZ`oUf;i;TDthUUv=~>=I^WcT!wx;whE@dl)$x~P( zyG*Y6%rUQ9eo2zFvOdr1S%1C4GK1oNFQ`4bVsE^dCW(U@qB+rw?%;LYl@NvkB{L~G zSY9+C35ts*M2RY?31z`#j&J$vmvpZ*qgR?x=gqR!%vK8}mw!gbdZh{0RMjy=b+ftY z=UFq0%wkP7$CjIjo2%kF%WQJZV3iic-sV*l9G}SpBkBIBDwUK?7IJ}eo9WHG(4uu) z)2lni;8^cd99;>j-zH|ctqY#IHQBA~$qej)gF|o^3@fmAWMj90+5$+am!Bn8bJ$TU`558sl12P(R$}lV<4|ys)hAyVO!yjzpyQK_N57R6W*Bdvs z*RoZV*y?P{jPVK-xUUgc-o~g8{DbloxQ7VmtA@cmZ@Frxrzw_EWlR`pDjGzL={bzh zSSkj#utDAMEWcXiZnYeu#PoT`yzHM~c7X0MBk%q7;?7RdYTh=!7IuZi~)xudd=|gl!0dCtz==6G}Thhn1@V<(9m=qaKS}2VBIW!5ru2JCC zZfH3{;UmhLTx_qmyQ@jkYT>)8v>D&%u707VG`w{>l=Fpaf8Jf4Hnmw=(?h!F;k&|F ze$6rPoMUF{D6V#49key}o19W4CYAbq@yjk~q$T$Sb<@Vg+u8{mZI?^jzk@<5v31_- zuCl2xsMCA=bVBh&k6?poCJub0Q-gt(p@HxE0C$?j)MpEG=G+!K( zDtsROQ7a2o_##$lfq7JT1wRG|)1?Zp;i=rHbW-6f_=2B2s>0W(#1r2gsPGL02+Ic* zUdMVgagk8rTl8H*nD|uq4t^+rrH2Y{qAf+`sKWQKN~|v;RrmqQBG0MtqtwR)!saUc zIQ3OTu&q@1DVigW;wWa(Uo)0RH}nN;je2klP!0SZq7R0lAGYDsFsLwqql5U|0~!3Y z9frj79dIX(?-0*B;bDBf3wGhZyK&?pL{ac(=6A5?iCz1C0|)*f=nmn(+r&&i9LDFN zfC`SlQT%NX?nZF;RTS@Spz6Cy>;QKJ#k9H1xH`=0&y@+3dF?b;1 zrw2nDlh?@yf!AegUK1E;uPbn-O|+LKXc;(*(HBHv^SF64T2lr-B4W6;czY+}!>YMW z?SCQBUV%s2MEkWA?a?;T{wPH|hiJW!Ll5_%g~y|P+PeSWmExZ7823FX?#DXD{f89y zqFp%=<Z%NTEBU(rKMfsH! z_e#gOf0E)}ZFBX1m!i$JiS|z^+I*X6?@Q4Z+C%HfNYSpfiMCIQwuopQMNLmuihI3d z+|yFr8y(}Glj1(nG453oGQ46ckmurE(6eEDY`Kjt=$-U{w%Q*fC(%@T8@zVH`VDc4Umcv zQYk{Bs zlB#*1MO`*l;gWi+_mD&{02jPSFF!)s^d8!Kw*;vds;Eg1tin232R-l{{(S*QeulrF s!p|Z;3opXU@CEo1Ruiwnm*K1Mb@(Q{0pEu2!dvit_#xW-ZTQK50JFmsF8}}l diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRollerTest$MockZooKeeperRoller.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRollerTest$MockZooKeeperRoller.class deleted file mode 100644 index e572838dd3db8c0e36fe063d380e2dc4a70d7aef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5878 zcmd^D?Nb{?7=IR_N3K{}+G-VFR;(I)Nwik22AOGj8KM_(AjQEi&gQa^EtlK4x5t40 zm7ko^8U5}b<@oGfGFjl@E)3OaWhR$n^Lu{#?DMv}&tHH4_6Gob4PQDiM!=7hU)4O) z)hFzLRfViZT8Zw@qAGh_F)dZq58_C3H5^bplCko6^#>`x+Z%nAYaVK_pJ?WB*5+zeg!rs|Grvt>d`Y&s11}Po9&)ZI zCDkNMlN-N04$b<41Ky^-?Dj;!w2&d~DcK5mH~NaYrDliIHunRj5Y%J-KHKATPRL5% zc9ntcDt+4x2L`sAqix9}8cI#OO#2Po{<$!A zhV3gC8!)E(g%%-juk0P)lWV7!;+fE{&3oy202$Vc3S~CX21E}m47p0`I*%N9o502;JCVT6%;x611SXQWcc6?d$<#Lv zypOF$<1Pn2#8#&j^bS-ATs!V-2R=r)@qz>QFkDZp-+}wMavVI})O6tUW6jkxSJ55~ z5k=T1ZQ`v6JvX_ICR~$|1_}gTzz#6M&jeh-ZwKGTU=lyrdj%JtS8?P%q9*X${T-%u zX0H7T*Z)j#H}PqtjPxyhP9^Uy+=iF%KY*9v4oaq+ufVG~V$ierJzyQj_muUu)2w7M zgLMMlK$$Uk6SX&gZ{f%2Nnj4{qUK-V|F=;0ci=skhY#Q*sKO`kDSQSG@Ru=|`v=sz B#rpsN diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRollerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZooKeeperRollerTest.class deleted file mode 100644 index 8b6b36b2283cd1a74f4623e55fcee61758a0bf8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8996 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZookeeperLeaderFinderTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/ZookeeperLeaderFinderTest.class deleted file mode 100644 index 6037e1721828b2d029073da7637c195351eb4b03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8448 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlClientTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/CruiseControlClientTest.class deleted file mode 100644 index 2d51bf224fa73bd13b0c7fc426be7cda2a309a38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11896 zcmeHN&2t+?7JqFL%T^2tHeo}O4TBeUZFZ5^WtRmU0*a(yf&76b8^V5=@u*`>Jetu;z|{N09Ov2w~FGzf!f#esgYWmad}cPkb^#Y`t`5h zSHJhVd%pPL<4*zLd3Y-a69iP-(u$ngym(#hsYRU?ZEoqETY8aosikse6*a@LIkln( z7PXmUX|$+Wj&4(pncQMVvFx_WUaM^A)Z|SB&cQJPr(ASHHFt|^JJ+ek2^?EqYcvVW z)}yWlPHpZk5x5soY_6JoOEnxi1=9qk4W_9^o7p(@RB64oUD|9eZ&z1Km+RFE0rJK@ zC>0@aQuH+%^{DH9k4>Mkb!H&~sS%iqJ#SE}M=b(>t7oT?6{hXQw1T2dUeryUUm|eN z!r~Tcq0Cw|2M;3Skshj+#jGhfLr#6TX$ox{J=#(<*6Heo%5`QcU5o7)v|~S~TIC&f&U|8R4B>WJk%Oqj;(Ab85C;(|KE>bcHiTRrt*=%};NMW$04d zA~FxhtbXEJr)%h%&K29i^ok)J)12jKm}V6(FD@)9x~({7i(b=BjJDUX2mh;%fnE|( z7nBuD%AyCU6x9^r*#qt)%1?U` z(^qtZN;>+d8V^u5RNKB7ORQ13aVY`%&d%;u1n4j;s)<<|9bhQK^{b)bxV2IORp}a5 zXUXRC%v@D5pO2q4rr1(fPat>wKY?ZtQY?dnAUOiXQeE3@ zZa1pswbe>vAl*q|r5|KNiZPq}>#}q*iMl zPQ%$5n1yo$PA?3f?T9mvlXWawSDnrdwVEPPi$frBxU=OaZvWvi-qvjbT80NQvA`JB zjCd?_!lvBm28TfTFpb(d_!ai{$xq8@L>r?A8ivTl+69)?@1mw+zV3 zQ-nM{o)`Dtq{OjjvxKIU0YJWuF!2t`QtM4!yZ>U}*@a@mgPz0VB(8wy|Rg*cpZM?eE z@%+?mu^V<+PEA3XKxMq5+&itrNJQY_ftfKgb(yUi$iW6xTQ>=u^(ZishW@l^Q!F~| zy>PLWTCK|#+Y<@RH*WaEH*P3n*fCzlkh73}n6q;pXCXxeFWdy`zAo-JX9LMPtVaXx z9vXfaGWg_hUlNb=!$XGIyf91@=k$c8g{mcRb#$7l)k`~g)U9ffDg33q6t5n_;|hF^ z=iN?+TA1VT{ZpmrBop-Y#LlPTCF@Jg}=r_O3N9*ITYQJ?`pi^mD)Sr=e4Lj!pn&z#IxJ$Cz#Bp>z-)vj#hS<2e4uShz zZDxkxLanNiRc-L_HBO}z25;Ss>MH}Gwf<8T%~li12( zYXYXQore=)dj{M0#@czf4^AR&9!|mi_^Tl8EX?8e1K9c_q7u>j37oz<`-_j@q0g{2 z0q5~s%pzv|C4SF%RB!huO+xoxwsQZ zI}HnnHW6YhN--XnV7w4w5cpjT;|U)lE?+@{aYZ5@z?1NMlqS%S;L_93A0!AX5(I*p z{gbbuNtA6Ko(|=ErjIvaQxExB3G%B_sk!u+sevt0qPL%Lrconv&PIC8+p{?BV@@{6~uX_Y9EV zl_GCvfc%~m`OOTF-i_@% diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/MockCruiseControl.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/cruisecontrol/MockCruiseControl.class deleted file mode 100644 index 6b8fa783bd574881f4be808e7a45a81cb594577a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7465 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 IY{9+10kh)$dH?_b diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventPublisherTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventPublisherTest.class deleted file mode 100644 index 5e0496accfb79bdfbc04823ccd6d8e815727e0a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9532 zcmeHNTT>f16h3lDdVztT=S(?0d3KdRFsuNg0}VMR~&@GX3uha7=5 zt-Pw?+Ekyi4OSJhs*MuepF~xLTrne6)$=25xEkD0T+2v#yvjFtV086S)Z!}Oh_Zx0 zOqrU!zZkWAp*vhP@n#-I2wdq6;j>`9y3l&cJwu@Qc(zenUYwn)5g4xzo-d;k!TKEn zm*!-En1NYke#8qThVN*z9oH=AO?K3Wdyj#@0EV6tdE{aAn)VmA-`sH?}QYi7h-y+mdS8qwuhN*_!xGQxL4bQTPR%mO@4c73_JJj9S9JYlGgFd(9{$8e+~ z4+A5OgIIZr3QeP+&DTVL?syHK;5CbUla#K|28L1l1f?hotpARI6Og6iaxd_un4cO+ z88urWcNEG9c^O08=Qs~uV;F4q`u?OYgJI@;fnh&G+y=!iHyzogUFkh5&-qO2ySqW| zrP$QQJUe|l5Pt4uvo#qyjhHeN?$!5CyNXo^mT;gk7 z@xaSMJv_cSA=$lPhB0IP8{DwN5?n;G?N8zcQc>Un+bdNnX7@gr#fKwHV*LnRj%_~l zVmU#e+5BDtA}~W!Y&gA#>wPxsWa4(* z-?h`ybciEPII~)FWixl3>ibs$-1XU9n70>t09Pmdl4rNeaCbs8){&(7ujJt?h&&&SAubP zV-&{VO#)ZTdn<0X_BB?=6yBAwOQ>;9(Lc@8yvkc@UWgw^XUArtz0@FJkNVB8lk9uCJ29~=;Ys>Jt z4pR)jODbJ}j|lvIgwEyVC36I>+j%bpe8;El_99nHoM{;pph9xL9L`+NvcmW6>`3hcrjy(zfm;Qk9@5f*J6<+@fTRC_Oe=Qmy z>ID9d#!_$%-o_TdJBW~j>v(0QZs7l3G@62TD-~^W2im)-Xz!(<-AP6Jzya;U6tqXF xXj2Yo(Yx15FLlmBugMArIc@3RS)H|d*Og6aEXdqk+u>IMI0SxNZjt)E8B@${tdqZ z2_(4lqY$&(lzNWoLxe zs-DvQ*0HOWs6d&)e12psbU)hZ?xXY!=AJ68{Bs8V)%N*Ew)Sw3LAhmmSb-XY#w4C~ zYmKeK6*m9jwa)GvkFdw3Nm3OHuZ-rYHQg8!_k;(v&H#B2Wh^X#QXvmSANjH};h4+t zgv)Tu<-~BpWq8cxGVd95TpQ05;pKpPa*c;6k@Kr-q9)9e7G@ELe{|4s)GA4h^_)Ds z6J4w1V=jfxPVXW=xpsjpSURr?8UH}eP;~`T6)c_lUMec2sF2hDxrz!YD&*oTguZ_L z;ThiD{{_z2{;aDOkm;Y+{}?ZM>)};`v+|t-hhD`6aNJ1#)=~X^dM5qgEXE6DCUsmG zOS{7~rLNk&5mu8L;-(zTz2SoUqZEVMPqpN9TmV(LT8GPUjltq-JFBNC7gcsi$

      zxT%pw?vX*ELK120wGx!Mgue2*cgT@S#VdrVA p=j#BjLo>H6&{%>Sut+n&O?m=CFj#`yw7y4AnRa*JKCMcy^aCUM3|;^L diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventsMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/events/KubernetesRestartEventsMockTest.class deleted file mode 100644 index 1ec0fe1fa50a69bede5950a5f03ebe1ed4235fe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11101 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractCustomResourceOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractCustomResourceOperatorIT.class deleted file mode 100644 index eb8d334eb72190f13f8b6e8668ae2ca386861f3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9334 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 XYJCU3!S-qNzpp@pWw-|o&|&>=&Svvz diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNamespacedResourceOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNamespacedResourceOperatorTest.class deleted file mode 100644 index b29fe6e67918f79630b6c16c80108514f6435501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10948 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractNonNamespacedResourceOperatorTest.class deleted file mode 100644 index ac49017c14c9f1f6fc50bbee336dd4d92b64d358..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11649 zcmeHN&2t+?7JuzH(ML=I4utTTAxl6`jKuec<#^XooF&EB4w4ctyRg~zsAUZv&8TL2 zjKhg4Zk#y7iNAuar3&u+1Jqvjx_`jlDPH%?Xj*ve=?K}iRrq47XI}sM_3Q5Ue(&}C z`18NM2Y_qPEx;6kLEu|8&H`ThnC{S;?bQPA+x<`Nnm1rR<(^-&oG{?bPapU!@Iv2W zwe4_|`7XomwdGChM=ieQxofn~f&sNyrx^>b$53q?rvTFg9+rbS)ZMDBZ+^@yPT-;D zN^AX2v$1k-ZFzNtz^s|dv`{5?tByhq&kZ?M}r>qS!cuZx0%1P%d8ORgc_KmPf+sIqV3vziNJ}<++70G4X?urFiYTUs>zD) zdwvlfCFj1pO12mrsj|*BA3tAOgSH~VK(%$Y5 zJf9ng(xsceZM|(+)D;?RG9#J(vE<=eDc&p^me-e*$3z41|60!TxALZNWFqpgh1_=X zG}0D4GS!a~Y$vcJI<)m2ujkoaRWTz|AOlmFnl7KBi52ZK1WDeJx69Vu;&P0 zXJ~4+>|~u=)kZo4?XWODVOw}k)mebv$iV|U{UG6l;Kpx zuwyDerf$@|pXJ?ulOoF04+CCJ;&e}+qLQ*2nMe~~m&{Rej*g=57UN0$J8-4i<29!q=hAw@aEg4 z43EJ188`!v6L_q$w|XdQdS^|{o7TcUmMz=je2OxoXHn;Fd|u;+)4XQ~1bp+Ti=$YD zJU^-s@~l{?&yHN1#df3KZr9spz1^%Yi3;ha%$5i|)eK#3_t`CX#|~^XnEtm4p$3t>quY}keVoS{UaUnpE0s=;cX;N}w?N?7`G#Z2oEQGugwj?$jGIPB*usAJZP3zp9) zXNgurhKpPGdL_O%*gM3Wsl`T6`Q-!z$Jgw&=crxXPe)OjS{0VS+ZEbDcNPRic!$6j zI{WQtGFJjGa14eGY2}R`b60k;N)!mq8$G=9VYh4Sh;qmOz{Ly z(h@oOUyYgNhli+Or;L+x=#t%$Bc_mwWM3a0Jyy<+zM4uZqV%759-?6D>vkx->~LA- zZ_GWF)yPDe__}0{qQ64Nx$=Rfbj2N{A@*nrXIjxIXQB5aPAU^Wv|O3MJl`j5cp*r?)ly)!H|V8*J5%9N6(9JgTRf0 zHdm!lcj`)s-z>8woq_(A)EYYNm zxn8gy;%7P+M8uI7k|~icL!=QFT=9M(nYLWF;rIz^+Gj(s#nCQrJ-{$chIxz| z+@wx`lfAaLCyUK1=83*WH9Q*IK_c6^AL-q}85eiPOfR$R1;C8xvX-(1_zQtE zqX|_3{z{;jXi|U=aqq}rQGmZ=w)SfdUx0rg#Ax1HfX$Ilsbr#A05qubHCR-TM%`DV zt0BRqgX!l0Kgz<7)=t0^a1u^otAMR3D8dYs;WYj(*mnx9VEd}lp2zk}P#wOn zVf*D@wO@f(hwop*_pien!}gmn4R2w4D#m|vXhUK9$cArc*zlf~4GAnjU9sU}Jb$r9 z!afoHwG8}@CjK8a@c)#7|G6gqbq)MR2L3mi_$y=Lf2WCmb4>i7H1YpDCjS34@!uT} zpPbgje{W3unkK$ECVo>Be|1d!9ZmeTG4a3F#9tp1|DT%px5vc)j~4z3cwc(uX6!v% Wz_2}wG3pL%zz6U*_z3O+1?v~1iYCMW diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractReadyResourceOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/AbstractReadyResourceOperatorTest.class deleted file mode 100644 index f8486a900d400c3e5134e10b29aa537b9b9faf41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12268 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/BuildOperatorTest.class deleted file mode 100644 index cf950611dbbc92e658c8d9dd0d01619050021c04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5309 zcmds5-*ekU5Z+6Z$~I|J5?TVGa1EigAz1tqB z5IxO1;T`Hqzb8DVg$!s<$+pM+@Gh-Y_q&{Sxa%>6pdNFN*%7C!LN*gmnyDwv#FN2| z)RX4GlU3T0Jfwlt)Mwi5QjPTdw1>tI)1z$7NVaBVb@PcI7F#d;o>ZD5%OPtk;ohMx z3nB~JoTl#o|B)wL>C+<5r8+tjqQC5MI+lpk$MmHrG3E;ow27w(x?G7UpsbBq!dwhC z*In76TgmzX^LdEL#5)g@Y#&bU4O|3!U2&*)Jb|R^=Be@35n-}UcWyRa#hK>mI%dK& z4(kVz&+BxAt`P_O{QBcd_n52th}rA(zBuJc6+rjUjS)mn=%|*I(a6no6KPxq zmnvR>-Nn>XqQi?|*`ODovsx5@OInag?gC1aS_POV2oG*CZJ~&{oTNJ*3&SF+iDaM5 zrINarG1J7RWWr5?EoowzcV`b2(+({M~ar1cUVeu2R6({nh({&)|n|7tJ5u)AhT+Q%kO zV5#01%6d~-G0&=d;wWIcuMlx_9I-Jb?TFaBc zL_O^?tw@BM1b+HwMabAtka-he2~<)62(09l#`ujwpI;?peR@6{8w>m>)x`{vxtz1s ziC^Nr?1)1#_?)T0>jZxLZ;M!7Z>&Lk=FH+_5w+86W@lQOqvHzm9Z%rvY4y^Q-;rZw zElKhCC;H53#eauhc?;emFlRil;5LCv8D}hbH@%havEUAY%h{G^!Cjm)MhcV#8^~;$ zg#~y-Gjt?lilYS|X3litmjVmdeG!H@Sw?j$gd2c|J9xwdVBxS}_zhQBFW^pu$G*&Mc|T(;-n z`9ijp9Jb|Lw(IaBdi4_8F#|N$#(~E-a#*kDvc5dTx>msYN)GF4F6%9*pW*q;Uph8& u*ly*ry;g#4J%?>OhwTD1je>TfqVTD--Nf}9e5AkhZY`L-un}=d6lXF diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperatorIT.class deleted file mode 100644 index d1660a039ffda78a8638c21242330da9c6ab1a1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5900 zcmeHLTW=dh6h4!>@g=4yftE`tOhb!oFgBNh5OyN9QIR4xiIf;49>=?5d)oDkH9Kns z{sF%T2_$&u35ho({tDvE+KVIas=F>}D?who-qClyJ?G51&HVb;k3R#z4t!dKH3Dv+ z-In2jX+309))J}}7%j%%iI$ph&5Y75*AD~3^Yspc(wKoGDE1%yN z(i3ucG?(A+7NJ1kYQ*m|Icy#EA9B|aSnmia%r1dTwR(?0VNZFy2xS7B3+w}}l`g>s z+4%h{X+P{wxkp_!o(P{Ap(LGX)%W>0_?%YC-4UlAcYUT2G-2)|Hso|$sOH?LW^7b* zZq#BSHmbQWYMXkB2UIFU$IQ4RYLK3vPEh%?^ytB+^ zlu`5TgjdQv>z@c6*aS=l=vlB$Nh?MlS0U&aOAN(b#YE=PM2RNkh-+apjrB2onTuJ- z%}9Cl-u(Sg$wM~g0VX>4j^{;bQFc0C{!^aze1Wu$qzWlZjtER6X6qzHc6XaB2+##F zCa6UY>0$}kQ_}EL(?~HkZLMA@FYB1$&7?Xj3t0OygksAwU@I$ggc+lS$1`|y?QaIh z|H`k)jfk@#!%I=%W?)wIWX?TKs+^(5Nf=EH`B3*m;d@+XfbFny%m?{U`6!cS<&!(X zp-ZMUise!|FM$D~eQuOIV3XQRxIt&nIu!v8rN;+CV(}a(9hK9}8eAz~Y#oldXC~PH z-qtNQs*KQ2M)NrfRGD7WpgVAH`kJ`Bfr)aWvt^a*S^%4L3! zX<^^ziv=?h0Riqjg9A;QKq)>+5UAJcPOg@PV&xMtl+1)0&G`omz3?($Fr!>tt;`$5AYn$cUI+ zj?3U!_D%*o>AIB#p5qLa)c(2kdIB3mZjQ7V3dwu|*D;`z>S4&dNywk)7c$9DWbEI? z=n!3uJjKyr76}K+69d6Ltl3K^Bmz4%XSw;L6|B^?dand;6Zqr<Fi)i~w3W;#L*F z5_=L|seK`AgS(ZKkCS}A8(lLI`0czJU9Jke-+cy6sOl`PAh0K0o-#kg3&D2@+{vY6 z5gIrgBz;$eCKjjUx~<|x_yF%Fmpe!iKEf6s_st^QMa*){5U3uAzz*VFyxs`l7T`rD z-mC(SGpIbQ<8Kk)?&2!JXXPg-eX~{h0jj^?+Zt@*uf+lLbE&5e_CRtxgVZE8kdIR1-zQ?oOOkum7%J$Y1vhAd@QS@QDZUwY@=D+O} i-Fhi(m*95fxjSkp$A1H}TDp$_ diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleBindingOperatorTest.class deleted file mode 100644 index 33a78dd499645b706b0a29fff4b83f689271dc08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6795 zcmeHMZEqVz5S~qwo?}8&Qu+dgvP~(qTi52LKwG;mNqAAkB|%Au#K-mB#@Xh4YwfM0 zz|Y}NAW;dv!#92qV)pEd9p9EaH=#vPMY{8?W}cmWc4l^F^V^?4{{jFHV99|g0z6V) zP4h_C9?x1e_IfR@LXPUSmA=r14EVAL zeG#_T2l`tG?!YvGv+)c83){8z)?@Bz0;d}y6uL>^RH?j8V0uOR+<{pF^F!G$l#;3d zuaLRTZ$mS6u+M$!$xc@UObZ#(u9B^QccS~WIJ>pWsn5NDDHQ55Z;!P(T@Tp?$)R#P>q13d)w6{w&!t;YJ8b1n;999j7RbzGanJ4R8FFIYRG)0sh z)>6W|OFb4E3tF5e%YP|3WNDu(eUQabyfHm3f-FI)+Q$*m-*-9v`&ghI3@3{Aqs#J8 z$1WwpU9N=jDb_+qWghw)*SpfEOM~w<8LqJokI<#LzcC2F(GY8VeHe@@fk5C&+6>E( zD$nq?{?+6#TYBSH+#9jW4A&EeR^*)gmPdvX$(D;Z== zHQ^>q>@)~0xYA?6HdDfU4+f|8u80V<-RII$)vtOm)!B-t-D8$&v+r1H+rEK9sVfX7m+~AmrP?3H&JMK(M?>WUVux4csbgwL?a^v z#;wZ`KWci0@MI_LNSyr}PJRNHo>pEHST4Eo0aj1%ZrROM3!szCZi;rubWfq%{&;M_ zM%olNofqqtF;fN9-6VxKEE4r5{uST~nYw*)o|lWJ3=f;od((Vm;HMQ{mP~P1lrOtr z=JMi>cMFvWoGX<_(s*1aVHn&Rf7xej|7A9^T24)^%7Ks3 zans|*0tY@t^2d)P2ksF#bF^-90P|iU2^j|-5SWSU2?rh?xnYlU6y}Ll5t-h@q=^Ww z0^Z8wKMDXG{51oo@#)~#9ULY2E61CC^-yO<@Lr4f|WA7!~I^Jl# zj;`>-kf;RT5x;~VftYn-;frZcHDMK7mpq=fS^b(n7= z7;zde|0#0C(wr-OR)C{IIH|^YuA)5-wea$Q1$_Mr$lWu|efKM&CmC^2Eh(e=;f&X+ zCx)L09hhQyJeiVUQ$EIwW|lFXq5x2&9;=P}I;sZYPq-4M9M}kJj5$~;Tu-D+?<~iM z(m!NV9$+T##O3YjwX@bu|$I<7&icf!pDX)afa~u}hryL*uR|*qk#~GW$ zM3i|sn19Gt!F^1`nlt|w(i6_ZLFnbB#tQgZC_I;|9LI?eiWwYZkKt!YZd#Os;hi$8@FJHYU_zIK>us$gt5QuwzSyc_&N>GhV(d>4^vkd~5%gjdX`V zCGKDeG#gF3kb0w8^;nF3rbC7C>!NmDJ1tcmJ5l3n19QT4?D!DtuHkx}9)_?x2z@Q4 zeBYmoKp=B>OkW%I@JL+Ej?1xAf$N0)R-oIDEppPK5Jx#a(nRFI6D$=+o=20A2=v@e zI0Bc)TpuYh7C!T^;xIoGabZ5ZM#%S@%ZG&ToXuGsfQ5m@4!%SP#SG5%q+D#!fpo>G z;4W@Zs^2DHHSDySuc^cOpm|b(HwgT?xh+jkp0iyE`Zt9{1v`#zL+%N4MqE!!5f|3} zFuEZi@Mu$qL?LC{A8uC1>-Or;C(8Q8IrBoiwt1Vt%|h{%p@j*R;HM02%&Ei+BZOsm z5ATf9vRj5*cm&3$Oc`z?CcXCr>IWh)9nBE`$_8))@PY}ix&Y643>PlpXBkJg@h!n; z?GaSI-l_cn^`CLH1>5*(Fb01WKkEw=JPSKGD#3H`JX&7E?_2N!yogVOehHtCdwn^> z>u#pkU3dlk{k^wWGrZl%^!EA_db^eBjUtEHv6XPu3;y;pV(Vvky8v%S%-viv_!fMK S<15Hv6W)P$!GibUgFgTeE7SV` diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ClusterRoleOperatorTest.class deleted file mode 100644 index d46cf7c21046521f0dc4959619963870e27667df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6501 zcmeHLZEqVz5S~qwp6!IDO(`w3lx=9K-5Q&h0;P6c((s~+OM;RR2?-(A=S{NB`PSN7 zM}hyq??F%j-{C(YX3xHO?OeEXni2t3B-?v=?%A2yXJ%*j_dkFB6#(wTf&&u-z6q6A z)jZVI$848Xg{+2JiT3xRDmz>;EmhU?yP@W4@IdiUc9qAgJKZK%0ms*?i#^b)^!ZBv z#dTzLV3NSuh}vhtR&}NMn0uPQ>ADDnZV)(CENu{&T$C;DK%T(t0Q-qjQsrQpO#k#{ zVCM99d5e0o-4Q<1LI$*>WYg#E@E$GX*S9%sanEN8K^^Apuq{sKg{<`bsl@(N`u+?a z#QszU{>;;sw<|(jjv49} zsL`l+iZjjQfA;7xwZh_tiEf#W&QatRFPRwaQ%09+(}w z=ElXhZvU&+z`q<^B@^e4PhFWJlA@w96>7PjLTn+QcQOYr3akwdE07nR57+UeLg0L{ zWYyuQeL+>s66X|naqI?Fr=d! zh65iGI5XV2IDi!^7mMA2`vj()o}TO?CrLt47F@y|X_1&AFd%=l8#V`4s@}!9xQk z2z(t#tD$(H8c*0RYY4v)C@I|UM8ofL$&@b}meUIqm+1}31HUIN-q`7Nxb!$a-e~*Y zrr26x-PQhM>xgN_aJi zS%Q~H`Ohysy`!_sZEE>$S2#=w-=kgWcO32pcWHTgeVbF8TMm;b)MeHV+v0Rl`1QUu z_1Kzv-M~_*Q-$z+uZzkL!lUcz+I4lUb^Tv&7HKcst}hiu zlug!=!n#8(=4lN&oW|y#e92ud)n1ptNzN3H|B8UI1cJ(j_E(LLqF19#d7*4{eQSry%BU$dx+3cK?r z*#|GI!DF&I?jbqw1%uaiSP(jH6&49*6_(}Ob>d( zvAG-vrY1uD$rPXl4p+X1tgI3#RHM;vm5PA&JezL{4`ZC zr{PBrCo?a7M9#cJu!T$cgp|$oa zVJ4%pnO^Ft*)-!`*-HOtF5#yH3xxbNzR=`*;c)+-KnD2yNdy+76~3CRBWosbzET}% zNFj5;)V#U>ZbpjfjJZzWkMU*9b7w9DW@P`pF7gk}@Wid8g2JM?N#N9T!K#wzw9a zc77%_`MR7;&-m3$A9RK%fCPRT7yHT|kb2jQ&O1<%>E+?W-GKKAEavZMzz0Z867voC zh`^a-srNA8V@$G9-emyJjkCk_%7A;=UE(%mz{o@@gccr^v5@!P=FZM;kHxBL`JU(J<&hMC`RH375utz`gZ&*Aq> zBn2xk57Y1-X3vLk2kt@(mf#b3@DImyIgbDU diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentConfigOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/DeploymentConfigOperatorTest.class deleted file mode 100644 index b0c7724da5c07d0f3321cc15e42f5afe7303118b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6222 zcmeHM-EJF26h4zCS=$XwNePq`=p>ZZf#9VOAk-$129S{4Mv6luF2}nQdz$^RX2(&& z^Y9KxAi*_U@dmsJ;>@nMcGm0c+H(I;Z@ih&nQzYd=9@WZCV&0=>+b;YCEPb)hJY1F z%Tzp2<|B5(OyQe>lEVE-n0|*#rhI8yPB&0o_B$jG{I0aPdE9Ms>2Vxxe#1MCf97&e z?fTx4XzlezA0V^=vjnb&_zv@0=3es=w-kZ-n(&0$CUB{|en?<;*SEO=MFNX`+i#`x zWdSae%Z(pAJ+X7bZEE>$M>tFg-=iJrHy!Q<_h_kj(B{A4xL-NejJFfb>_V~VPQ<%^eg++QTr`(5GKTxP6fE@&)&6cZko`7mEN z5|Yc2FU%*y%6OaQ{Na|d))TG^dK4DT8R%ge&afFTxa6|rbEE_Xcx3_R;0l4|a=l-6 zM^dlqvV5_QYJS*tvD81%yPUvM-Nzc_kV&E2z0O(H76AcXe+n0hDuI#}R!;|*cL-c7 zuMhYh9?ED^Y>1Y}R9B+K?O}^rJ;88w8wcIk?|MqO{Cn?21Omg`(bac&)4=FT^;j3x z0;~}DGsm4I9+9!!&p4G3SkTuCeXWZ)y_?3^=p=#U72q8L|2$nrMmv;2_oM>}6k?vV zss>~iZ<%^>D69^<2>7o&ESy;QF>W68-B!0p25I>;K5# zWUP-%=zLV}6S!3#I`iu1vm&1O1z0EW^YqwGoU$2WJ@3xN#ssd9y66(vEZ4&2bl00VM_Q;=)Au=DjfaD7ruTG_W(|PTfOGS{>@qx68OU?Y2@I8i6@&yK2D41XiNR(}o$aiAPqF83R5;btZe`7!24V zaOJ$z4Y-H37FrBG4jE7*Fc-?f0DLGNco+@q1p~f5_p%zD$C%3>h#W8|@h3ff|+uv|ixJ>H4kg8$zJ)g<+gJhoQOM|Hg{T`DJ!|m!ib1iXfGsoYE z_iZDn0<#1zgvgfe?5P{Qhs^K^oNaT5`yB#j>Wv)&vuna+3RDR!q_iJNDP#rCk#paE z?gU3#hs>mguw8EHJ{JykrRZ7A_U_PHb$g#tlNpvSk;v7J1AULt6)u{wIL${B1%*^!IPXW>zI%|Lg}fa~U|4~w|xwkxDh5oK5JNp9Sx zhVBF$^cYRVe?pmRDK=~gEgdrH9~IFFx%XE{{9~8V{2-t<#t%it(N{4(LSN#}K9f9f zCcTG(=mt6(^Y?{GyYYIH>E`if9BJ8@YJYkXb!!$!z}58F%&W#de|1w>mX0y9W$58E z!E2{mI-RB=neMaXZ_!y8UtWDDP~0jVKCltF;nYQbpxeyD*k$G*FG2>neSXBu6Z@l?he>iGg!+Q&H1LI5HT9~}gn^qD5RY@>f^DUl*}(iDxycIf z)-2ug3TP(O*M#I#Wb~9eJ>|BNjF-097Pcr(Ub@bA#=CuPnM@Ygt`ulDsK{aWG2Rsp zb;*OITdV#jlLTxyS`>KEXKRl0y?LTgOQLk%kM)I7|= zc>*m0>#w4+4vtz`kTB4wv}jtiR7a0$*!?>&2u+pk{>K z(>7Kv0vGFz4A-HDAW3zL?>V~Pmq>AAl%lN-tF_g^T}zvN$LBV?=Nxj6qokRnfyZiz zAG9iPmB6nhE;q@J0we$H6^g*Tj62pyt!kdq#uX7%UIktt@Y_GDk#X!4DEoBV2viac z5ukaIqNTBi>R2J<>h#o+LKg^Esurebr!B zz>m{vB8KNDiN3dLot6S`qO_@i3f#h;DP1Q_DDVy@ z!r{a&!`vvJW6i(MJrD0=LCN=E z8E~qL17-jP-{#;f{wlb-g&Pu=b)W|CUP(XYHZ~ diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/EndpointOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/EndpointOperatorTest.class deleted file mode 100644 index 9f895133b84582489a5ae752d0147b9e29332c32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5274 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/IngressOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/IngressOperatorTest.class deleted file mode 100644 index f3f8104832458aefcc0099e48e1ba8347437dfd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8643 zcmeHMTT>iG6g~|kv%A57Bq%1vbVyr%P`wOhuxX2o?b*B z{7JrAWvcXDe}MnQN6XW*Gwib4qp&+q0*?KIingcK`9uufGAn9eCux0D*5K z;g=y>#}j-=rAA9*=!FyYBil>J&Wl1#Ke2o{A+;j{8ibAyS1;q>xiu!Wza zm1NQyB04ZcU^IrUdBIkBW#cLHC4tiw9&kBFV6Zr~PGD#utTG4k1V-Al4}=Is4$hE~ zzrPODdbM3vrG8j%@R}!i7|@0YH)^aN&Co)AZJW_5^J|_!qK4=1cw3B4^01W1Qc7hh zC9XolnNgUY$kgfvox@2@;(Vq4L#!z*wkpM4e6+ zPTww%MUjCfqgpbO_mNRc z1zM6>GG@0OtC;iyU1ZZ3)V(IJRhcmCiWQ zO{*gVxN4^iBpLOsx5{pi>=xOLVBk8_w)ZjdSY@Y#xixpyZsk`|7)t|9M7N~2@TUUg z;I&~m1!oD27v1*BKx^k_)yct#i}k>AvyO)lYaSj35Eyeq->a>Af~#@zaY%0Sh`@L5 z@f~%{5-9j_N3({Rm%zE=R0qp(zCx1xD&Gn`*%U}|qnD!Mc014P9L~D_}IAY!vW#vL06X zCT|~C;PGUuAt!LX*z1t)!AcjyP!4X8fvf%7hVB?(Fsp<77>N5+yY|9luM>JP47?wq z)a@{uj=n($l%0Pa%JU^4Fmc#17J<7(H%^MPy(Ty1nrm@P6FYp2!Wq!W4U#Y_~i+bsZ^4b+_Xu9gABgqhPUGP}ljPPI!Xon(W<4FM~IlhRBhq%FZ?N7QTs9`f7Y(`jD$8Wuj{V zjRiv@C8Njor4;8d)C2Nn)oAIBlefd>cfpId%{O~n$AR1v9qiU_U%UPR-CIAFtx zaBv!*4vs#?uLR$PXOR15tndpA|Bj;p7{RBa0i+$p=WvS(UWYLp4Z%4$k2A;d_W-;B zZ{k}~PvE;3^(_tR1ug2u4%D{|sFyUTm$j&ufg+bW9tV)$mgHA7XxFr8SC5ER)}md5 z>xb~BcB{qPyBgkRv}i?`+TWG;v=X;bZ)#8%G^hmL$GvUqucY1MvIgx-4cZ{w!ubR6 dVPZQU!9yIMhdf&1r*Io)paOI71>A%C{{p_hE4lyx diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaBridgeCrdOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaBridgeCrdOperatorIT.class deleted file mode 100644 index 81e105060a81ce8a742cd87b45a29adb7a2f2c48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6957 zcmd^EZFAd15Z+6Z_$7vv(DGISN`PXM)GjXtrbz>d8#UQ$#XiJ zl%E28;y*CVzzlrnM=|V4c71l__|kEkK)+ZzY46eQb9=kD>%af`{Z9b61Dh$BAn;u% zoRVarEIp!aTH-+|l!7;Y;H99+1eJj(IbJK2O!OWI76vWhu+mYh%7o8wdg(qrJfa(d zyERr8?rvx9RwV_K1TII|9`$Rb-RdLeNCMOL?!9}Pdj!(99n@+}tl+a%?sK_D;8MPD zKwz>QxGV)T1ZI2lH-!j98eSr~Umy5N5wFc$%Ly7y?or7D-)f4W>aj+6+sbAtb!NHD z@u)zdCUuTzjaiF4D0Yl2c8x4{jO;z=8d>ZaxoEio3oSp8R)b2XZb^h^$4xXyhet+> ziqWFdy7<%|i?!#CW+0@6D2KEvxbvmuP+w_KWmebxLCKDBFQjCf33+T_xshBTYNMde zU1alEGT;4{%X)&UmJBRv$;VBW%^WCZBI!_Vlap?w3#*Nzrdh-Gwbj6&V4-*7R%5=5 zwgUI-OmMXqXcc{sI=D}mtOu^O-Wiv1Qqb7z#E)K-SiS!wl9WA;c+1*%^?RF#a;;cn zvWuY%-(lbHG3q|vmsGaGyf(EEZ;gv<2@OMBmPq@2v_KUM9Ob~5>{u@A>9K^D`gYP%;@Bi3 zcNu|pL6|mK!8R3~V&XRDbRW+teo}naiC5d{f#hB|l&EL(-Se~9&?8M0jPr&O&l=oD zi+gV3cIjIfOfa3~fRST|Hdu(~GnOw{hazZ1>E!gNE!ZIwp@LMWum%r92h`QHxoDHVlWw- zn|Zoq7P2s#gA`mQa5ZoD3Y*wzS5)CMYvao9v>I4kRa8hMFlPr2^$t2Avh#3K)_F*P z+RwOz!^$k(t&>o>e8JYz8NR%>*YYKAur0sMLyr2cs{$p?`~OT+sF{O7AMff-bxTPG1%NQySLW)<$wJRvv6r=^BHl(GN#8H2#v z8p)~{?JIonb-s_{LfHLp$7&JJ6Z zs8dTIv(IZjwvYtM{xq&r)yUSDJy@jov#nFFni?x>c;w32y|y0?r`ptOVXGW(XEei7 za0ee~MyKE_)p?Kl?I~Et#{3}jDJb`~>*F+zAKZ=$tP1u7Ls$Up(c_;87~WtCrtvO= z_bEu@Zw5!7;ah^&>>rSQIG6hkUj7S56YvWDPDgL1U=Htdu@t-tS8y~5SK&33dc7m{ z23}91y_tZvkcf5-wHt*tpMZ8f5$#kkBT|z%qUU>^XkFH<9 RUA*Sdqi@41tiji?@h?7IxTydD diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaConnectCrdOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaConnectCrdOperatorIT.class deleted file mode 100644 index d8a7bfc5f28bb011ce9d7c9d9c11cf90d3624d7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6827 zcmeHLTW=dh6h4!iFEONqmRo7MO$*pG*oAUalZGZHR8cpHl(-JRVt-=5o?+u#5E{wDz3hpiM$5%@6>R!Ooz zmY&cyEpfjTNWtBodC6}wL8UKBmeUF(6TKIL1%69dtaQ|>G2t=XUV20ik7(KVJZ8zV zu=hHfw<{@_A#f=Kcc@n{?bV(j34u9t@8QF(eFACI^y_sdR`J~$_qbdqFr6<{3Cxsz zo26i$z(Q~TmJq&3!)qjGKK2wRPMg_=<-1MpP|1DIXbQjPFgLhoWHXfpGi+u#R3K54 zT1T|bjAiZ@J5m_FiaHf)~-hUZJerP68`65-i#69v-YQKdzt(xT$J z_}o8>xaV%u7t%nKLs}Eu`r5Flr#PrFqbvR(Wk35uGpUqoB^6Wb0Tm z&;FjvMhvTl^bKmrlP1e%s!B5YFcG4v1`E*@b6T?x+x^JM6^+-oqw zmE+PHIt;bYshMo}wz1J!mvNKt?sram??|sbdUo#14oAEd{l|R^lLvCWSZA_}qGaD? zKkYMWpBzXkTR~pmT!>uxLQ6w~0Id^BkPq!t!LyE`PqJgV(r1HLL7D;E?D#f6GW41eXctD; ziLBVBf>X@8iPd_5RfZQAuyx(5gY{T)Cm5=$7xUk96gi<+CgLzkC5bex<88LMW5*tv zKHFf@>EsIxA-mLN0oGS6UoZ}Z?}iy>L=+e7kcmKHsxr#uL7+S$+!XPg*qLL&1I7F$PK-TQ)d^HX45pt5Co$Bs5TbCJ)jfqkIhjS)2 zz8FGLX#_5#5l{JE8kPwBGCA`k$_QiRUi77if0YH&aD%|pm&~jlmxg-Wvs!^bPET2B zxJAHwxf~OiM;5wG5rO5nkYnm%;UUcva%XaE>fl3l_R5zK1m4#at-8;?4u`-}zF*CS z{$(0g2$?@b_ z#X>a=cM1GDIVBJNa6}x?o#t#(ObG|!jQBgQ>ZB!or&b+oSHc-7fy@D~dpHdeNc?nC zh11A6mO0pD4=B7({c0?+x{hU4&g_lxa5>wiP7BA>_&BeLmV*08s>_{%Z`9a39CoK* z1E=DH>Q6zrZ&n^9YJ}N|nxhI1`2x5BI3ULnK87}!g*kl6;ByMnc+KGIbNov1p8W%| zKP={cgV+DU)fBve*SYY^EG*)4E~0`r;WDmf;0nBjRBv~v-og86w0C3BuE(NXMeatS zU5i1x6^nK~0h$qmR)|GgPJnhZ2CW#2_5pl2MA9kLVPu7mV$kl!q7~rdk!ZJL&^BYy zK1qO9j6vIpMY{u^4&hDtV@_!jRu^yquA2J7$uHva_^ CzmOgP diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaConnectorCrdOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaConnectorCrdOperatorIT.class deleted file mode 100644 index 4410661c20e1a503c569b4d83d3535d3e6ed7bed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6939 zcmeHMTXWk)6h50K@g=4yq2*Re)iebgf(--;)1-magicx|nMvF*Jg%jUy^SS#R%?^; z!YjXl7lsFZ12ZrK@BAo+vyxp)$~snx)3hC4tlQad&u!1mfB*CQp8#+h)-y0cpzaH+ zBAG8M4{4WHxL5I|;Li8F;9m>UoMV=q261Lj( zY`)K}Aiio$mGp)Y{u(#+iHMaajaU$7lhH(*)Wu{VG=%xwHbxx5ZKnAcJ$R8sH#W+^ zhen`1Q~FM6%`O$3VqQ+I++D0hTwO?yT0kAP2a>n^p&C1#ea}?rl-`+=$1vff(sms2 zPKUQ_?E#8e2$NGUt6)&sq7L)14r9fVu`fI)$U`HeykPrG_zG1OTn_hrcxzy$)AisqnK37vCU^)j<2ciC3Q!Ir6}!XSY;)3a!6uNM}3FDGS_`vh$B^cyqm zx3c~22l*?O%t$)JkC%5kuH+8eaJ$^+$nu(MJHirxK;G=@eK`wn67oZeW~{&Bcx~n) zY>bWah0m(kJY#r8)e*Reraa<ri#FVF8G*n!SJ{i3As5wM&s~9_4Y!P83f*nC|q^1 zvCfFVd@-r+Qu0L>773X-BmJMqSaITXS^Ejr5V(?1YJ4=1g$f}{|0`@T9ZFdmVR(p4 zCkWgqn#n3?Iq99Hy(}yd_;q~hPHs6OLc|^Dcw$T%yTL5_YpyD)#Iz++M{LxBSuBCv zE^oLvZxTrU%eacHk<&6W*{~l`d%_HA%(1+RMOeWcj12K{s!LlP9Es!YOhmj4+$L~7 zuDJ|+p@!_iXgvdKID=0bA_LXfWIjykxaVfrVAXJ>=)*O@aXkKIfT0hjU>fgoc%OkR z{^s!M6Z}f>n*Rgx-_8|&gY$pk(*(SXzth2&DVW3iLP!O#z(stTgiG)$QoYurdL6Gv z(caLYUDcvpM(#$TUD2Q|Xwj~wKr=LGB`w-~3bgAQw6YfM2D~#w(h1aIXoYt*XiHkO z61+DO?R^c}nilPY6li4)+C44Whw#x5-jqLvl76f~+tr|*LqAns`6=8CuAjkIcrBnu M-+~obg)iaGzk3M5zW@LL diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaCrdOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaCrdOperatorIT.class deleted file mode 100644 index bcea4bb8086be2e2c9c5e272e42838130064a8e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6739 zcmd^D-E!MR6h50K@lOmXp`}16C;^I1gI#_KOp^vu6Ec~q$xPyg>2SfUrH#FfC3#kB zlkx^!amNM2doTktaLFlTTfA*Ze|NZ?>0JsBd8JHmO zFceNjvQSnY(JrmKy&rfbXfr`&ASzC)6G|rfF9ZvNj&N9Izf)(zXSls`kM8Z$ zs&KdBT^qFwOcJ=LQCrk+RJQ7mm?H^H+gt1FYuf~}wjDGYOf2EMW$tsiLf}HNv`b*J z8n`S2GX!S)``3gBL>68kh2;mnVxiS#uH^(?o42Usfp4`%P;W6Wylv%kwI;J%=Cr6l zqBeE*X@gk{JSfNFm3!iqWAXYgdg7J);w@Niz(UIpq~%fRG%bnn?4XSTCE-z*Wu?oq z;=265e-?4iy>=j^g(!QpF1Yi#)&)oN zqoQ0b&Gi53>cxz(oR=i*~=ih&*>m^&hh~_t|F0!|tZ0@*jaYJ8)=gH_nIg%SqYfA%So0 zC)Pt@Yn1IZD#%u`WG8AAe!RNf@g?`zhTr8OM^0B&hY%HS0(rZq<)tjVPKayJH}!Um zP;`Qgu~9x7r4pN2OsA+H0+-NU$NVb`ZxZ-re3mdO3#TZ#=r$4msv=}zp1{v%%CnhGG>}<^QoZ3b za%3RzM#6NeyFAkQ;N+?p8?JO{z(oT8oUH*(jC>0FnUfN@HlUuP&36_mgv>rC%E%cW zYA_un`hWDWqCI$iS?W2}ZWcZ!@ay9uoCR(Iq%n89f7XsEs4UvQPXoy z0=XUD@Npy~km{##9fn4ZkLebtqu;C@o^?0Oa|`Y zH!WfYzED$YJ)6$JDyD)#-DaSAWV9XSS^U-gs1;IOO9=CT^K2Zoqa(l+Oyg4ypEHof zYYtbR;8%k8{2!2iI9K=$Ui=GJ6YvsVr}dX9n8W8nLicK#72XTz N(YIk4R^Usx`yWAEV?F=? diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaCrdOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaCrdOperatorTest.class deleted file mode 100644 index 81c472144d645902d7da37220b50b0c2e2008de0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9966 zcmeHN-E!MR6h50Kwd01iq%E`*s9Gp>O0fAUQ0g?0x<9m4)0xICFibCGX`O6iX+0}B zlkh~m0W)+4?%{&h;Fut9~Gu`va@;4i#3wMb&P1{eX((fuKI`3Y%6pyG<%QimzAiTCGj1 zE}Z+(TMdLPz%+rQ3b$=}>(%?sC)5rI99&`^3zi8SC@(xBFkR;kEx;^+BMI#dA-E{Q zAu@mYp(ht?Z&Amvx!YlFD`4C+I)XRb)b+0zrP;;?H5_WUErCQG%igrssd0|+N+e7r z7N!yjlRSupsU*UjGaOER!{dSBT7kV`1PD*JJIH(*9yM2ynyW~zD|=onBl zT2@mq`?6tMp5&lOjadBsMH#79gU|mnIKS;nYTd&lYVS9(Jn0;eVhgx+%Z<7`&G-OKE@F0Jc#04I;Jh%-HmzmHbc}! zwQ~4tGCx?1-&#`tSYEE!f?5HMABSKV!2I$fX&Z}1KjK2@=lfkOm)o0El>50~H14r& z8sz~L6Q$`V$*@f$;D%*Lk&#@c5*-?;?i{*U>p5gPOWsEp70jVIQ1!Ou`#Ch@Dx}Zk za?mHpsHXZf$ut?$*^D(TQoO7nH(*HDx~%O`k)yNGYi?PBSy*i3*=9ng#osOJVJx!M z+R~Qg?HKIFuQX)*8>|*WO(ZPUx#uuhIq5C2-#2TrQjF(ey%BDx?!#~8Wd|w9K#7s-G zno&Px|FIMej93GbD2=4dK>klTe0odRyli>Vo6ppWd*gAiL^Yvzh>g( zaJ1Kml48FXVh?=x0^~3}rh8{=ydPu_O!q_NuwCDv_GX7O>;{Hq%+U9ALfivtbI)dN z77iqa0j9!8k_uv17;uB<=+K&ZV)DT-WgS>NcU{^LU0QB(-lmqfXoSVo*p66&BD^vO zGjN!|iL#l@mO{LmoIM>eF$=GDU7TYzWQ9jy-sHB`eiT)F(ZlIrgZTs=o6m4sRwGcd zRZA(uBY|V(g%r;!L?OxS8e8|QpevB#!XU+x+3ygwWqj-OgRU1am)`can9oqo6**f{ zW{YB#%y{Q(MRCMldhXp2fw|b#LbaaBQd*qKP+3KIo50imRs-?!Im*-{ zBT$Sb#*NRidsC%al=K`Se@sqNosveYFH%5y_5J8IlgO(}r^VlX?%QzS?sA8DrrMy| z7tB;;kCEpCLY&E|JcXSTLUqcz{tTJ}slWK>AQaY}ie_@1D^@-M_M{Ix4vwJLFynXq z6@SOGRYla_vZ{*cpegG++@g=kOi^QtCSMKes3}!3#>s9!RnmHyT79;RCOfedvPc<_ zL}?^tXG-TUTjThvaO&GZ$}V2E#^WWTm#y*eSr>t;GK|IzKfO-dcBbsWqRg(|8DaV;$3y!_znmQ_SlgZxtR8}BU z$0rE($1-On7Djyf%CPMV5<^p`(b38`%)djfIbG{~QUa;f67fx$s zF7e?k;6WQa@dGf6f6c%_{4Lw3ekP2Rf zdAys3V{jbbJb`~t!E5k3UM2NOybhwC%0M+TQBS8(-^@XMD+Bd>Ch8e5kjpF{r;y)J z^0OIe7cA;K#YtMYu`KEAx98{EJ?E_c{QKA60pK2Nq+p5w z^MzHC%$KDnv_nhWEBR7z=R02VT1-&siIUZ9`;v+N1HpW+Ei6_#XxEr<84fQ!qWcH5 z!iDfeg&r_*yDaSOF2ZIt1=9r12QxIOTQ6HnW;kpiqli2ei(NMeY^5rWSjq7Q3eQAM{Ku_Dx+hY>)Yd>q*0*(rOqI;n`se z4T{2}UyI7GMWuD|xhD&?=T6HL(m<4bS`*y*!my~TG^jD7Xa1mM*SHs6vcrTtOrT{V zIZxC_L7lnC#-U`c{WX^jjjD$93~I=yEtbvfDbEDbzM^zI))kcg7^Ui3Y3Ux7U2#sJivyFR`;5O5|j4shg zN}QNvK&%mHFQC_xN47%+r5J0Vk(s~Kjh zL_Uv!uD5y9)-I_dp~A%0O-H!jY*B~#Si`Y=!Ppm`6C|)CSwXOUCVT~~>NSV^zG6u* zGSogX!D4m{o$1hK8xQUA z?_9*l6x<_lA?Ah@+*e-$g7g0rtl@`(!MLQLeB|>%SP|f~m9UMg;<={}*8#s7;HM4T zDq#j@@m~i2ryz~L8NB-h-x9oLe}n8d3%Ot5)j#lV3NGO9Z183V7Vv*Al!DjbBHm5I zC3qdBE_bEgz-t`sO%2*LE!q{-ZWP*84cbjD+O-5|h6b&mMO#dOc0+?!)S|r$?+vkZ z3Vj$x;g$yNjux!|?~g?LK!difMf)%TT2X^m(V~3>9}m$@@iDaYwgzoagLV#is#y6c Wd=^|khcEG(Lq^|)6KEZtM^_2 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaMirrorMakerCrdOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/KafkaMirrorMakerCrdOperatorIT.class deleted file mode 100644 index de3edc836c38920d145c321afee035c6411403ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7181 zcmeHMTXP#V6h2Cm_>z>A&~j-hYy)lW5^OHzGIg4gn$QW|Br}N{h8bSuUD;M+?|QUy zNO|W^@WunfPhbXS;GG}EaI|aJ8(EIm#Z748Wv@q{&Q0ec{rT6gzXQN+SWm$e0XGm% zQL;c5AJPL_vbkd_-%!IT&@y0 zlgsZBm@fM+OTiq0h5q<;HBB1MlCu{dc#50m0dpOjRM8t zQLP1~)`H@?@Whiv-1Ao37t%tM8m$WMd}=w=Qyf&8)e~Q*>k|v zYN5_#4^8P|i+#JpsQYMFQrQV|I!HcR1ka3gGzidgp+vdRh82t$W#5zRP%aPH=UJ0Z zv)!ie@)~!-_-r(t?js}oSU3KdLb z7-i^DBhdbJI!|oX11dPh9G_UlyI9wFrl23UgIa(OByR>o_4ah;J!P>IdTC-VqqLMr z<2vTu4sW`~#dO3@n8dod2gA%3ZLt6=JC@5^HQ~3yY?UAj2v%bvP`IjyYw;jZ9uf|W zcu(wHx)ej*C(_J6Bu}OzeUfCOHoPYHm;3k9IwwzjE#v={zq~&w)GgMQGo=`qd^CJF%54J_+fIUN|brV$o1$~5&tUF zq~QvIA5WNBJzfp`d`W2ZQR(tR>E=%!%S=^g~0Wktyfm1LEp~rrQt&YKTl5a`lMsJ>+$56f_B4Q z_b<4r)0T9%ja4Tbm2lUYKxUWMJ=`f1IN+yA6>lT=`fPnu!JzyBbExf@(khmB^LBsR z6JKWzXtRR{0Qfi;6EOw1@kBw_K??4uLxu1tAq8tlp_?QHt1vf?m zxB__mfQKX)MqvhK@hOAPDM;frgKszSFTs2EH^_dyIR6X0@CUw4!HamE4gbu*B0kSY zRPYj<$G2&?052oeD_yEr@ji(5ngPu+qFqAnMxk9cpj|bhy_o>bGN9csqAevrd&_`U zG@@OFYeOWRLLEj{xNbnZX++Dzjge^Y7|^~nqP?2{tzbagHKM%-?+@Wk`C}yM2L`ln f3}|Q2PnB1G1Rsa@PvCRB&!b1*f)!YW&*1LgH*Fel diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperatorIT.class deleted file mode 100644 index e968ec89809606fbd5a594470f4a73cdd40e16a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4583 zcmeHLZI9bT5T3oJ%}di>xl$+;%J!frfe`aj5NblCaw^gZ-<{M;ui_Kh*n7#g&Th0` zM+ZNIpTJ*00;zoG13w8dYsVzG?%A9UXc1r5-p$OjGqcZ(XYRV;P(|9~&ZB6=wdAPo>?)t{Ei|@= zRj3fS6e9*qj-9>HL+%*@=lVhlGazuL)jl9l*+Q)<)CsIFW$$XObPdjv+IRP*-71)K zpL%LK69F?qNjlSN6!2+yn>Omh38y~y0;W-D#=J*t%;~03-Gv+7)Q#@Kjpah>MtAAP zCiN8$sZ@qeneisnAUr>sq4BHm7_+X8S=Ui+X8Ip^9OmGGyOoYLbWsQ5f0BZ4Bq5?D_YxqD=|^dAT_$=QS&MHw~U%y^@IV4aVp zL(AGHPjyw;^4O};KPM8MV(w9-2=bjv6Z28X3D?3Bl8un%%tNwrGf_UhvzYHHxyz0uS83r3>p3sHN=>fp)9ymMU1NR^Jz6$xNit@UP42 z_1$dd_FNnAWVH3W=cXmPpZqfD4RE(>_abS;lyA$q2n9yxj_rTqUJrxQa8ug%YVax{ zzn16usFACH1XVL!fs zej#jWy}U}`?O}W?Bk=uc71dHzVtaVv^4D~iR|>3#XXh-4@K*c|ft#hau0jVd+u1r) zg)UyOZDgwOKBkp@vsI-EAL1;n!&SJ2y4f=%(A*KBZCZwSB?;jM;Ef&sGyweQp@DD? z$12Wl;VQvr<0q(nwbA$inm^-g4c2kAGFJW)j?F|0UVsgpRp2tbh?-aMeGOiMm+@(( zuj2Db)K_v)ujZm&gVzx6c(m7Z(5~mAy>UXcPA(e780OnnL9dheZRXf^I|uCyycI|8 Y<|2Y`!^b$kh%s!#yYL=3@Bw`EJ3t@Ep8x;= diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/NodeOperatorTest.class deleted file mode 100644 index 80f9322a4b80db516cdbb19a2ed030c6ae64cf04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5778 zcmd^DTXWk)6h50Km2E;(QUayrvJJGgiLuJP#I7ODzzl`^x3^LBGRQ$Z@;9DLuY5*s+6j7R(a3 z9CP|C+_$$nkGQJ|Tx^L@=r(~1)!HtB*>&7!L7Bk95c|1OQkCF2Qd#~wG>7?z+@r1x zdctQ~$dLAw?D#y0R%xZY)8*9TuFn*Lddxjw` z^yu2)eN%>;EZ`Bw9rqp#@?ta(T3;RK$ht3(xNZ)PAC8E0J>AnX%k6f1s(}{F_w@qJ&A2+=;*GTdOj zYO=Xblg}Cz5$%T_-xDFWqdlqO29;U%E9L)_vK1)7^YbtVmk2CXo#7Oj7_Moi%moLn zw%HGGTHRqdI1*TNq|5wWri6JPEY9k#hzLA%{-&9@iQ{k53<=zfoTJZYbrQ>bU5nakT^KV-VE(A7tOnXq+I6vq^bX8bhWs_CRsg@%op>BiIk4i2gWu2gFyg(>dR7^JsPu4Y7qzERT;mcx^ev|!3rS@(^KnQOfPtC z6i83(iQyk=OsDPm#_0=Tn)i~?GaazaWm9|$L*R#LHSR){)*PIXuSGh81@GbnQ0Np3 z-baH>He(AuByefG=UVVF-lrMUSnvr3nfYdVlLc67N@1h2Q4jB0epA`v6x7epVhs>EUAKN0|Qw-)3L|p9TYny^PQK z1O+d^BEHSS6?hR*O9RwP_?fbqQxdk9GuW0g*LJQh|0@5TveECCZeK9(qLcEVZ71~t)21XB1%?f`ZeTyX^Ma-#*W?&+F~)fBo_+04&2j3o-=uBH@-L zi)8tcbLf5w|1{ zgVosEXL7Rxu!HCpOc6MjY~ee>etEP0h`Ex$=_(JntPwbsFYFSSS_?g9!3=@9F6})b zLXm|x$eHr@f!fd4idNaZSZt=yWtd9o`Cb%*`r;ax5xM-S8HbRfCbjA;yCX3MYnfI{cslBdP{qERn*L;qsMGX_W zIh#kam?Bm+i)yu!E0`l$O4QyKJv7SiD%BV1;NFF{A-|HkXol_q6Zt`ri*$n@G4EJ6 zsDeQfjag9{Qim!%Zl=yPzveqpgibJkQY%m%(Kztf9uLq(_d=04?Jx$e4t4;}z|`)| zQCH~2(BOOtJZPHxA+E{eds9lDOc>jPRXz{L8}oBx6m^k<2=J_UXKKjnu!Xy2B9bCf^fwut_CwK40ibI7vx|27c}2tj184 zWqnBCkI7lqOD`!2%!x95&xu@EL(cGd~vGLh~9di!Jz)z}f!l*MhGw zRcI7y0cMK@%|8^c7A#|MNu!VjcL_`|3zbclXqGZw$yAJW`FOipLRL z0lb95i!lHTe@(+_d|EjA9A^o>b59`q!+h>%nEee$8JNSTq5-5mhtJtI6}$=aIGTd< zZ~>_Sp6I0Khz@t diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperatorMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperatorMockTest.class deleted file mode 100644 index 28edd00006cb3fa6a04fa22f29d919449b9205b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5248 zcmeHLYi}Dx6uo1dtnIi>2rYf_7{V(l)CP(~Ny@`9uBg~FQC<}Y35|Cr@zm=bYj)O3 z`C~{Rfdt=>_)Ca8>(|C{v=c~ah4`|&GkfOTd*{xadHnw8k3R#zCveY!9D#2l19(ueReRS0Tsd)h+374jODouf23`Evk{8A9XP^X?h$L z71N^?<8|e48|!;7I$fzWMV15BRKmMMJr)`dnw$>9f3}c=uC?&KW||^zsT75sgEiABYe&;Q;^OH;V(EMpx(tE(_)lq9_ZEi1dk5 zl%?WMBIp@DS%FZ}GiVU89*e*?VVw||bRSsRvjX8Nr5SdBvNJrn3T5~?T9h(y$pFZ} z9ABw2!0Q~d&TGN636t(fTL*1%R()?fMFe_%OiQ%#)5291!?J*@7ZYwQC z*_N#Y*WuMNTmeep^76^Oyx9iNyQq;5;tn1cc8v>WM=m`U>$4YXw*#AZE0<$&}o?S*G@bFvVnRMD7ix=#Z=!S@T*0thb=NP{j{_f&#mSRS67^A zzRj7x*Y)u$nWmGPyJn{8tZP&lvDaG0o!jeb<`PvO{_5>*avW1AfINdw;t*wY`u$FPPsj-Npd>VE+O CRH=*r diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/PodOperatorTest.class deleted file mode 100644 index 3a51f3bb2cde7cff0dcf5f3d9297ec3f92d18327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5170 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleBindingOperatorTest.class deleted file mode 100644 index 85d275c3c7423614188ac3ad549c83ddcaeab134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7412 zcmeHM>vG#f6h7-FmF=cYNmD2^z$VbvrorY;sa=O8EldZcVd9V(W*7!p+9ccP;#tX= zz$5TN%(OG`A0C9aU^uHwEIUe84u-Tt|5#q>+i%Y~d-m+N((ivg`4s@}!2=Bn1itr$ zSr3>W)E^uBMxA?gKM>sciPya@6Gq^Px@q_PfQkMM!F;bLOjh6Pb(nA&cCT-EHe2DY z#oe9txZ@_WYA`|Ia!73(?oNHZ^O%_df%8r7@}NcFT&222U}Dv?mtJuO_XooqDjydhT>R5m02= zHadcvcc^K&(t-}7iTf{*&tH`GnFtP4a~UR3FW~mrfS%Y-G9~lnwab+@VBQ7B6O40o4u$Zjc99b7r zgQx%N+{b4zLo)?xwQ8ndM!=GX5j_?Pzp^FgV37`wQH|EqbLp$&nR`rBhFw~uYy5y& zhrXkW!;p-$pn*pXD&tTtr9zq?DQ886j^|7T>+d8At9}n^kwx3D)j~DnQ{vj9Te&+hRfm&NHrbV}orgsA5#UaZ{1W z*CAJcq?U<`r;p*ZS>U;AMz<1mUZl~rO1V#auEn;wi)DA)6Ja4fshE{ZXEWo^LgaIL zKH}0IEVioD>KNwo*AKrGUaxzOC`>%P?}>;yd4Mt$;o=lb!X*M%D|-Kw71ff4JcUi`SV$iA96Z!* z8hEfGFr#~>VQ(3N%XWNoBG~0VfgkjL_vqLlP&Pv)xQViaz?DihWp=n25K?OM9oGnY z0ui^4BAWVeU>hy$b$z4f2Har}-F@zJbZuE4w8BFrdREqxjBga-H3EO+IDRHQPM(F* znQIXOQzF)3QCMk4&~EFAe!yrI;SB;$|Jx8G!z-eh4@RJvxJ+O^EBEzOfk1y3NMUw- z{-(GU?&Q)2FT|4~im7dL%;E{(WI3M2w|V~rTZ9{g%ssQoB6IJI6)(Q)i%zNpZd8s| zV|`FS;XYJ^Dk0yEFQmg8fFgYc?NNY7(^09+JX1kO;M#F7N(d}f^iZ!fj?Pt8S4%wH zTz~#&3>jPYKz&X(q?&6SZdT3oBiy;<-c=*y&++Aw+J8mDjF^o1_l^|u|0;1&xV6LY z5?^qsUFT9ENi?$jBoV%=C-7uk@>QJ^a@28VwFVy&SWu6v!N<5|4X2z2pAxtG-d?6J+4esITAaz5gm_AHY5bKKK(*YhS#I4uV%2$WwKsRvCb)2U(aBj&t!cQC|a3iV*%}rJfF{C zyP3)MRt~neGuW0g*>1wEV{DVN71>tFVAC_%-htbPv$B}!ai8_w4AyoA>p7^SB?Wjd bp6&PHKDK9}1Rr4bd;)jiE;OM9pTo-E7}1Du diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperatorIT.class deleted file mode 100644 index 3466faa348ee0bb9eee4cf7082811e49e916dcf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5024 zcmeHL>uwuG6h4!>^`)jMDdkoQ(*ThT!ONwf3I|IiYNf!YL5Z6Ri9h4ri9PLl$C{nB zQeJ__;31GeD*xdncoM{!y>yMcFiQv^q5j$RjK4XzIp>?R^V6^2KLUVH;G;UM5V#vD z&(S>6&V4p#j*w2Im6(1l9695PX{j79h$GEaF`;-QW94z@K|JCrN)66Ha~Z1xz7m#=Hk?%;~z2z08eX?nWmaX7*MPs9_l2=ML6L~m?UQ-tQ_WH0dPH$KE0WZ@31M4 zu)w&#pOt@6?pvQfCW7ripv+C9F?qNm!cn$j%S;ajJr+giM?M>M60e3>P}?%p{8(=$ z7N^f{tGO)Q;)7}KR(?TcjG?`^fCumNW#AjX+Z;?X~S8#K;Ux6 zEqcH-o%*InTy-&*?!;5Z; zT{~0bn&yERhfK!`t^TUgqAhosulla3_w;FwEc}(9rs+R}{s2{7*^fglrhF%yi%4Kx zZkir4>6bAqEjKT>egj@6Vb-u!~%l1H61S~sjfmdK&1Nm1^ccU=xhAifv{*guC z{Fv)KCB`CT0VXOYT9Psic$JWEPH(3xM7}u6EMX{s)lM>_yBf06aaIX*>QtQW)UNc! zk>Ea3+fpA);9AFB=HbQqM?!4C>jWO1-li_Av+P@i9I!)>j}DRxgxkXK`6aU=FQ1)Z z@=;CT+tXrlJ3;LXPfWXQxA=5J7Ct*?L5w#VZxL9x>#f5k-jXcyUmbc_#5u{=;a$8Z zF%hc6`(_@08E&h?bzHl=dj#6MA~GG?5Wo8(xCVIDg10?@XDnI==kQs_(RG|9_-_3G zjW5?)-$DCF9Ie1AJ`Kj;FXFSEqTpFr!%+<`!E?CsGX7qH=ivo>8}y6#ep2d7B~q`J zO1%QFpu9hqcC|#>Mya&dPAKh0sWgf)EVr$OUZ?R}FR|^j5@~1PjU;k!W)a+g4{>|} PW7vha;T>?`J^0`^#Y$(P diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RoleOperatorTest.class deleted file mode 100644 index 27d547ee70046989ccdc69a79199b55e52c7d46c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6770 zcmeHMZF3Vh5MG7A*(N14BrOHnDro_`q;}t-*cd{f9oh?Fl8_D`&u1kOIiEZ_T_*HD z^k?)pbf(O--}<5bPo1vrC4R|)&S0Q3@I_}Sj~?x=R=X?Z?|*;)0|2hUZ3`v{{1iyH zrdXhA51l=y#zieql6QXQHPL0#Q9{;SFANluy#dJr5lWZUcEc8vKEvs?HQ}+A+1DsJpB+GeijNCb5qch}iwbb*U%qDVDWq?#zw8%PzY z_7qv5ZNUQS3q?DQa(AdgdbZz1;rr>)YE^Bus+PL?%!|d+^G;VtMUiF8X-V#0p|0a= z30jP%>c2t0SS#%@srF5Fk2X70+%o}%+o?o#`aPrs6(}` zrJ}Z14v03g36^Yu31(h!6@6Utwn?sK&j|vMEDp5OIZf1WImH3T615dafB4t`L^$ph_h> zb?15k&Jg$~$K5BL@pSVSUwKL=FeQ^ZCN?Y0Fxn+MO~Yud0(?N=@yj(qy1c=f`CtSJ zsmcV-WI4U9g8(YJK*%rSQ#42L$(7W5HHE<(Jz&0)LJOD=nM=;TEHtj-10OCrqRqE> z@6uF&^MuU4*(E&0(PK>Ss)J8D@hytL`SRhoXAc%280rg9A>{t}OgS8C4emN9j{!Vd zInw8fucja(aQaC%bOP7Qc2oq^4{uV%HkU}4zryEZ$jFLu2#i`?4b=}aKqLN3Gs*;2 zLdKX3&8ixlVnm0_5s)?H^{EE2)LD<-kH6!(%$w8Nr*))$I*#5{3H&;)63@Khdevw2 zP7A&yuwY)og0C^H47-j6mkFF03`rJzi?u^qWLSU)Z&I7cf@^v_aTN=$6F3?jXbYAG zp3kFd&w}NF_xCuLVjZ@^1Dz*z85Y1i;6ptAHvquGUq|5>wifoj!cl_X(qkw*m?`}R zQ-5M_0;aLm7(nbvY^P!rybUwhn}ky^i!w6ij=Q3H(_OYHb zu)d$cI-kkg= diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RouteOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/RouteOperatorTest.class deleted file mode 100644 index 9018f46a6747375c457bfe27500b9d6017bc6a01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5550 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 a$M7XSpMfG=!|eGSZoo}wLJRJ|-G2bGrwNw; diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperatorIT.class deleted file mode 100644 index a70893e76dab779266325e4ed321118528f040d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7024 zcmeHMTW=dh6h4zU@ug`}0xg#kSOOFqg3YZE>JTXnMT&45l$anSBsAU~$J4BLtl6=Z z^1$Ch0s-$lB7P6z%zC%>Za0~A5`&8R5@$wdzB$)#&dmPt_s_opz-Lg;!wiA%eQDPe z^HuEu9ncyVHD5{I{ejm+k4dV8tl4hgS4@s3B=bdI+N^fmZ!zgHTwXh1a=>l2W!s|f zsl9ORPBRZV0@ng;mwHFFz19O}D+2Qy+~aDKz-+m4NFcW@9F~V7fu)h`Jt>7Oz!h@! z$FDuTsXJhfWs7c)yHs)ESv@IQF6;VttWvSrVV1*emr4}sQTv!4F>95JYG_b3GN>9F zG@6JEs*Vg=wH(2G%M;4#Qe}56h4Ad8hsuw`qxY)XdsVG<_1v2cwddWQkjg@oHf>36 zuUj_tv<59^Mdm-Ll3@@sSd?9Iz@$3KfOx5LLLQm6yd04rqxy=w|IT(7Q2O49VxIF2 zSDh49EhQ{!sfRsQDjw>91=7B*-p8|hTv*q$US^#}EmjwK$-<&R24J2FDwKO2Cb=$A z+QLMlHkL0_9pPA8;rKr7G9T%IIr|}vjmT=_%SVK^?Q+Cii|?HnHn^XZh%h&+)c4Wa zXzZ5*+nY!g+rm@qM6D(4N{%a~Vp1D}!{WM5B&;o&XhCF`VbLCzp5zWQh?!$!0C@5} z6%SsNk_NMboHEEv=$ecXi>qr;AufEk&s~Q}(;DnTyfmgAr-*|rLYhZH4)77uWlDIv zv{xQ3#LI!+tCIOX-PrWsXw>0}1!k*EgNisE{Zg-e{+!GuR ziL=j~c&28o!gDQ}Lg~i!FjzWP6-P|%Nq)pV>Xs{3TZ*nZ^|2pqGwJJM)QxeM`?|K$ z&g)X~0($KVhqpO%rlQwAvxR4Kmk;j}r)9=~N>1^XfrezEn@mE}N%M&uJ&AA$3UGA+ z=3tS)^>Sl$LmL`f*EhJO22#QOeiv_qP3u_b_x{IGIx&?h~MmDc?Km1PalG zkHD>RrD1L|a82=mA9+;uCF(!Ov}mJ|JYnmNxNnnV-E1Z2qJFBriAvnu$161NvK?>0 zeU84|(zn1MOVM?uMwC7E0=z`XUm5Pk(Fy}8m|bK5NV>ux9{1Bk!qe(l<0@r50WP1+ z30xVYWvnI4#kgu1{8tG1>hgjgho2}I|D%>}==kW|A#g*#?rcj&6$>UGe$KFiM0P+P zOm-mw56(Aqn}gALgUqgFh|bfdDDggE$h>J%%+sc*_}?`}*g_=UObFagDY7IFCdZY- z0+b2-nW6SF9*fC3H)QAqi1ch^Jo^uVhxaeI?ypwj8%1Z;PBVCnCh+TJ^;qV%V5d2S zHfW(SdRWA+Xl_8=K7J#p5m+^Al!y26yF-#J^6(*n#kk+{a2wCp_?+%8^6&}Le|$b_ z)AH~sq9^l$z{2kEBGklpOCMeX{JeqRS^(zpzq#OV9!DSHEWzK>FHrb)x%3k({Enj; zSPCTpWv}7?3qvV*29|M@gJ1j^jl9s%)y&*>lABqkI>#qLHjNRZ5ArH aW(M94WAYB%!SN!-xeD*W2N>s%Vf`P#@HD9a diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceAccountOperatorTest.class deleted file mode 100644 index 0d51719875c72dae883ce3c25327165003a351aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10775 zcmeHNTXWk)6h50K^`)ULy-_GoHT2@pU~?(Z)*&TzTPRhMl7w~&4~!yj;%#invsz~Y z5Bvj$AHXxep))W;pDC~W9)`1$6+HntniFyyn(v4hjU0 z^ki>y?(#ewA}5}F<;cf2w`kq4-Bz15Ex}yJXmfY1Nn74^qgYsNP@_)mro~aHZP}aF z1~sObTke`v4oxa|P3qkUO)B?HnlkDx^$f=qM#~a*!w?8hx7(jtZb%f90%xO^0B!ydR7#Nm~ z^iD;?tsC>*>qV-cHi1H5sDLM4unKG?^Ed2vO(CE!WL@Hsq zO{o@yc4!tYAyaZzry8+Z)ABrxOiE{@6wgr6gszG1R>DOI)r?|m9J_)AucJyq!_U^u z4r|sa&jMH$tz820P>m)PuCrjZOMzB1M({mtFwf{Xb-K7vT1KIPg1L2CB&-5Vj*GT zQP{bPMaO`xQRjsR$lv;1l=Aa`v2cqb{bRv*pSx{qBN%WD4gi9*v}JK-;pk(ps}@~n zr_kLg#x%#X&k3@0E%|ECDv{>)nz58<8og5StJ;Vt#GbW}!f4b^$-sSz+kWSf{Q*>; zUX2-hT9kylYYl2|wq1su+ps7I3jbwlyN=D8ENRGOPsKxWT(Jmwcxe(Q;4p!cC9^l$ z4C=b79DN=!u}E3$v~ZZZDnpvUG1IlJ=7VmCcW;i12J;Bm=Dv??s|1R@BSzqOX}V8y zKk8AWu);PROLRCYd}&Z(){LL;>Kv{*vyAg$)}nWvE#@(_c3uuR{f$H8ie{M8s(E;g zz@G`mzTpbZA^FdHECQ2Zijw@s{8gE8}KG`Ay`OpCb z&Z~mKjKZP=rU+Ti&H+()ory1QUx8iR!bvFoDyFKA-h9=l=`qio!i@Z6ugH_G-?g} zbCurp=I_ftEB#_4-uL;%#z9jSKgg`_5%@W~Gm?2lMc`C7tR!@|AFh5adFKk5_$E8e z<6hc*2ht6h`%3mO^9^*2`sk7l7^?pPEHqwcu>RfzrpeP5{cT9<)fQXs4z}Kpd#_N$Bd`jSO zv~JG9P3+3T+A#;WP$KHa9NfWqMD(6iGY6kzijLmz;e0`0!r$c_n5as8!*j40dC$x5 z&2w-+@}gKUA;GSBA(-FFrrCpYfNzZ93v2*I{51gw@iT{4SMV;8cYlNYqhrMa( z#^4BkN*O@eqxd-)NWsf+46nxFIGn(hC-L_foPt;ITS}kC??Kd86{r;@>X|;&*EOhb zC{V8`QO|;bTB>v$Lwy6w&neKZDbe2ABibz`+IhGzL^ruxfo>NSx-BWuN-({%D{m_; z?x9{*psp%V3A_X4u8u|gmU~?3+vlDS-&G(!8iM$~*6I%wXx}Q)KHSkyo+mIBpN2zF#g{*Cz&zC8Hhczm;T|l&(m(yW8HNA= diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperatorIT.class deleted file mode 100644 index b4072600412c2b6ccb20fb21c5a5e6b666496f50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5466 zcmeHL-HzKt6h5;}>m&``cAO_?pE9cm@UKL}e+xMEr=+x4SRbG4XIJd}}gx&1gAa20S|Ztrq66)xXN z7H#z{s1Udqllm+e+B<_s+|>lmbwwa_kHDE`YmY!>Q+nKj8iCaX_Ks3gRpC6T|8+kw zyZKY@QCE&9!e?5@fKHSg_LJJF<_YSKgOnX9FeN+ zBf)^vRQ*%r!b(%F^g#(5mBL9iETW3fIMTu|0+!%<66DT-=7IOE(4(A9sFsvb{r!a3 zYkNld7#*5OIO-{f!6r7$GI}IF=@_G$qD?W3c%Wl97r}@tVf>s8FnE}YF~Idmdh~WO zzRSiu#2Dk=y(9@NBEI|eJRNNM0y#I5P1C0%!uedfyqjQpy*3L&R4x4@Y{rWAF~&A! zp!tE`NR^nswCc6&o(1+ub}NT6@|HuULYG4qpmxx0mGF20toTR@2%baJCC8ikWPt%< z2P?pw&`2fE?nG|*jj0XChk3$hkY7f^_qZyzpd=VOf*>zR9?mqoWk4n!B^f0|N}p>P zY_myowix3&CTUR-(kSrwz6dZE?MoGBr~EuNtBXq~Jw3=H9mwI+e(nx3TWre3&oWST zsKN^kI13jDTy8pxE_fCU9n&SRIv5FeqcOJIeTI!Mfi*|E%->^5m~k>$(IXKO_|EyS zn)(ibYT8W`xY2Am#Z?H`)ON)%U^-GLxL;~f*U2W{j*}$0`HLyf^FdmHyK`8t)5EQ= z-HQS(#(XQ7icp}bZkxtB{)j+J)txlXJ5_ja=TI6_}cy{Zat5c2o(&i_Q`aa!X4{}MlQhHdGIeZf7ka}xE~~;6 zXUVPp(rQ7&S$t$;X*fG&euQ^V?-5upmcxP#ywA!eWeeH_ti((fe27k!3`~l(;A8Zw zWFoCl7TiRl>=_eiY>Ut|#eMu-58+L~8#27718fXXR5*vf7LIP>EWu~}7pOj5tN#Rz z-*B`7tN3d$27eKM8#5GKf;Ajf;6-=|S6;^V6}SQ~mao+I0K4%-=cJGR_Ai3M-Kr#QZVHf+KB@B!HH H5q$D5T_X|6 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/ServiceOperatorTest.class deleted file mode 100644 index 6dfa28cb151b97e87f0c3b2da89d78d3f9b742c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10387 zcmeHN-E$O05bp_ry_}I?07dy)K;WYB&JR%Jj#D^5kWE67NR^f^lf6l9$lmVN>|8|O z{9~;0574qotMt)Q{|_I1_Q|qmKXSRdAv>Eo3_)IQZ+Cls)7{hE)7?A2|MTO|0B{B7 zEf^#4St#6!WTC7)pzE~4gGwj`Z-2!rL5B${15t6kZYY`PJrFDmy253ZweB(#KEvUa zMJCp{%NCMBONeN}IDrEZtVjLT%EIyk=1KzlYTW0tPGC=I=01V(M$lvyOc0pr(cTau z5CwRSOuL`>YCdnBHElO&ceqC-4}7~Lf@P1j!^?JYVyVUKCUZS1kf=l5HM+{|(>y3A zvXoO<%84w!2dOOOo-C*BX23$*52W3u(rwui;n~9uGQSxf6<1b@D=V(c+ny}up0_)J zkT#;M&}G5hOSVgW#lbSOQ}LfsZbwUr2^i>eoeB9ci!KnWStOA?bS3w)2o11y3yJ)) z!)#3qu-h0rY+N^VRp!gcmAKzxf-7I5%eXq!ML%P*6*TRu$^ATSvk?85HSZ;%W^-Jr z-Ps5`4UZ%0Y%+0rb$Gb(ECr|~H1&Gf6^u%jzKD@AqJ*XU$^d5VLHL>2@phAl?Z91Q zqBJPUtUbpcvgU@!DA^#1#%669*wj|y7bg-eno+5BFr!Qt!;CtEY5^Tt@FvS3Yj`va zGiY*ZCnxy`8BNwDpB@dV4cRm_4a_clT?o}!*|jeBnoMM@(V_|BlP*J?J(&q?C`(Rb z?2il?IyYn?F^M#IXMjfGH-jdpQ27{8N$Y6mSBYt|x2cd^iek>t{#Bo`d1!b2CR^b? zZi_2{h&IYc?KqD&YMU9Mk=L0K#kPMJ^Ix;6Z~JmVJR#5-=91W-nOtTfnMAu}+TE#A z!)TGuwM}BnQ|tb7w3B70Mpk7)q@OEi;Z3s;8L5|i4l>3M~;M~2nBe4686G=0*6aZuMHJ*SygSSDF^rF`EDCKUQ0?& z0@F_5Qty5uck*ytws=V3bLa8()v5%FZdCX#VNFKhU} zMa>yZrK)utb@X1>m%Pnx`|CX9DCSkwg^E@lr7AjU;#V!eD+K;9=*^`gGMsD2t1$wT zB55|nYCWe@TC(e;l@sc$04E6i_TMUEfQt;(=AtH0NYy~#xXu@x1P>)YP2kVbNuJE~x_Vgg4V)fpr(TXLclvN|mEOzIHn4vmiS27$jvCv@T%DgM@COqis)In|hp z0Ro347Si+hRYw&dchx5pZ26$+IBK&-?Yu?CPZ?;(U~A7Q$Fp+Wxc9a@YsU=NNbGor z%8T8pQp2c|D@2&YC<4b+7->)`H)o+~I4Qsdvgf=1a}?26+I?+wqg2U+NI%!Js($0! ze15gZS=UZ^*Tl|M^;l#o$G*j=CtHmcbJsSf2?cnM!1b;DIy&-!5L-uk0w>ix*SpkP zlz1j&p2;r)v4%Tf8bh$aQ4~%(yHN77N#U)dD<(b6_xsvfx7k`};Fz3$78c68SB- zj_r^EWms^t_b{E#f?EXkMhU3}ANL*bi4<*t(|1BBZnt11KF7ll7fKc4A)Ep{DuhRt z04DL@Uf74f7T#UJrv$IXpP=yRbnyq6`~~mEU`ID{h) znA!%RoJ@K|P~IJqb2)spD}B`Hdw%r9mrc(asp4 zy{bXGs6{&m=O4kFTCJG3k_N4=MSBfi&qSNmpfxmT1j@LkJ-t=5Yx|}K?Un`&;B5o6 zcQj~UYtRT>G(dY-gZ8Z!?b0^Ue$}GAzdbZk)1d8v%c%D;s3yKvgE_pP#$M|c_yDd# M18%@aa2xLY3pr^#ga7~l diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetDiffTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetDiffTest.class deleted file mode 100644 index a33eb5a0d7219118ca2ced1e64e888d618f3aecb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10711 zcmeHN-Etc>6h3m3*l`0X>0h7))D&8$F!l`>OvBHB3p1H>L)R^3fkHFi98e6#lM9(_9J=+imUS^fUc&%Xk|$MAk0 zasGJG(wr98A{i#8>Xs4o@um~uK)Aw2&+K;=z%bX-|GuB^2#kKI|Kz3>7V zDvBsA)(D03A$6FqHE3`;Fn=LAj+gor$nvKQ+gT#LagLR6vji=$juYAS0#`Uf(J030 zhlKZ0|JcE4NR#PP+NL6+vESq^;UgVe_y+&8*j1)~P3%9BDe}=>+^pSL9kK4&srQZ_mJr*R5>b(GD*L1Ed(7`ps zt%ki8(gz$F;RshGVfDBX>#|TV47f=U^0?~ACNiLOsrK z_e{j*(<;4G`v0?c>b{wJ2Ma$W>3!CInEQbq-@sW9&1CvN6-&&!Jd6Zxl6{pdPpd8y z-b7QNk>xXzr6Fmj!3izH7e30~5uK=yELMvKmn@`Timk+{H|fN}dUoV5LIGY`gJpP? zz{OH+SpKVH4bpG#=etQwF#pX}9h&8cY#-3S29|n`EV7F`(HQU^Q(N?c6t$qL5{$^J&#& zRt{75&D1+s_+e2ydg=q5dhVx=@%cD@%UM%&BK;HC)T@!ZU8gRd@M;GS5%B(sy8x6d z|2>%$G{ro;D6M4IJQhAWoj$Tym>M(FLV7k^Ci8%Vg_5VnsE==#KXJcbJ9trTVYnQ%p{vd?|EAYI9^%^}eTfEG!QtL`X~HdANnO zt&w&F*7igcVd?7-4^BjI4e*d09@YcMSPCs_Lp?{ct? zS1ki5dk(K_i4?pB8+b?HJig7rg}&59{CyVfQVQDTRJ2Wa9We(8TF*qEH&PI8AA^vs z&(##P2dQXpSy=aW3fd2;XxA*zwo=gkOhtQVJT!7P1uX~fqOWss1K#V6WDah^_P_E0 BVp#wH diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetOperatorTest.class deleted file mode 100644 index 7c2baf8748db656a6ad62791c74397c0e3efbe4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10053 zcmeHNUvt|;5Z_DF`cDHbP5;tD)k0f`2D?C^rFH|Z+oqvPQtUJxW*7!Vy2RJWlIL{J zq1*k(4Dol zXN{)Ig@!1r#tLWVRn0UUslf`>0`p%=zVy=WjF8SWO%U@Nl#9(5RnFyWajK0*#LqY_ z!R)y1c2ICMmcB$$r~jw)i+I$eT145_8d&l*Otn~DsU!UA$DBIlOqM@m1t+UvVritJ z?pj*8bH89TsE4JOTGb9i2vdR5-7U6Iu^FOHhdK}c*O@1#tFCPuSlnx-;a>y9QmE0) zOy1-ac}MWF-5oLmFSjg{#I)Am=Ty6Z?h4x*uDMQmuHVFIZJupXYs(kU%;YLHtVg}B zcex~eFUm;wdq$BdHQ{Q8Cc`0{2}M?NNg1p$(ovxt(=53H)qtm!e*axLAd?Xt+^{LE46!@*US;4ByeV*{7+M3Pufy5{>cz6YjBL>)~2Qe}Ojz>aW|36}q3dFd0w9Xh^ zhr1gonb)(BhF2zFFT6_NNKWtW%eAXaQSRFv&~fT7v>Lb#xFib#fkV2BjD5LNAUY4n zMV)yBzSf`ZW@C{+*7TPaOGxMlOy;ISYWqnHMKU$E<`|;IQR2dOiIUzw?~60o>SVR$ z2-cu;&Ia=snp&1ybN)6YT9(xVpBB^bI)OhDY*+>@Vy4KBvo-<~ytABZyS1QlS`@KD z=cVCI0)IYVk3^{xJuY87y*4zm@t9kQCnREF6DHe&lb0j)l@k11l$-i(7Ocw8r^t>Qby26%qZ*_|0ZxT z%8?J4sL#tiHQc^5EF?CbmxfCO9*@pZ32XjH#R!}i$iyrDPU(X>b#86qo|Px9t<>>M zmd@eIP@Zx6G|wLxNq;M@Bj~2^Y2H3vKEbg0kieZMdqW<@CR3llbd+9hO9ZMdxFXPQ zQi{)^R@^b{Ds9@h)0~En3H-I!xFaikIV`DHnKHA-$6l;h-6<1P9M&T#qf>X&@JjwM6eVVMQ%G& zOu;SWBmEUC1+xTR?JZ0xn8P$4g`9%B1onrVm4bO(!h{|K7Nua3z+Qi%rr>kzynoK7 zpw{ytg};PI!Tp{uG1{yR$^AU@JRDHT?L9aH_(=wS9s+O>|Lui+_?yDJ%lMSwHTw&s zzc`fr2_}BUyD>O`zfuNJ_8|UFw58xRID~iOFbRjT-R-(O?0PSrBT1|;|9xg=aCP%BSTTX#y zDbe16i?L|a3bb`4T0Q|Zv-tXv^#jA{z4?@w>9f`{d#BY^|A3X))_e#Vo zTZl56)%smk==Y-%?OFn~q5|!2CEE4j(8y^e+RTt>vr4p2hD2LcqJ6rBHgKen?-Yo8 ipp20=1~)qSsshV+e;6`w6K=yD_zZMdfO}AdrGEi*rE?kp diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetRollingUpdateTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StatefulSetRollingUpdateTest.class deleted file mode 100644 index 255066704cfa521952980d3fef1e13f016e20c5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10138 zcmeHNUvC>l5TA9^*m2UPq!cIxx(U!aKy3;I+NQ14q(P13q{vBIAt9vo-8$a(?$+Ad z3lxd(#2XSw@Xix2@E!OPh}rYMv%IO##(`2!k!iskhr05J9k7a!l~60;eRbgJZ?EiXrg_#O-PEBES;xT6Uaok%Gj=v^HWI8jYNtl^@|L!r1E zFV5Z&fzY=I94oCpATYBbU7m*p0*igrO{JtNz)7-{zaJPDy#wx2NBS+{F)d_3TT0eF z?uXZDac-~4smmRY;Uj2^Igi;srz=91JK~qS;+H$(_b+tCFZab?p|0d14Wy<%(@v9W zgy&zkP|PGe>bh)nT{c{oCw^F)d*QdF(iBk|tgeJ}l{zdi9Mn1OivMg;c2qlxPpS5& zKoYAs(!v{sm74Hx@U`W)JmCmU!w91aoiadOL=Hw5Z3jbXm5Pu?fy)~rK$mIY3jSu1 zr<2rWx{a}DR*;Ia!1!1jI00FlOGJ`Ida5O5R6l9)aVXb0^29e8I`^=jO$KRV(C4}- zUAoUP3-mGwYNMf~A4iellP1=NvI{zUgR9W6V4}_!VTjo$mM?kVII=#oj3xB29tqDi zzBCl{Nn>oYmW84?w;=<~(1%nyn9bne0UPzK1ao&pqhWb&lC$xsYaAWi5uRvg^23Ba zU`jB|@#7df!N>@fO)VQik^sBcsh^fRigRPjlW<8#af}qB;-iQYgWE0}ozN6vsV=3* zSzyUgCgMg$D8h}UIg7>)@tpLOnKin*u~gQu=Z!%tD3fLni^OhuNkMd%h0Qe2>y?L* z51oKA^N+FoV;7r*6xN@>5b2GZnQSbRZ3UX|kK8aM3Rrqeq^Hbmmf5Vg>3?1~GE+^B z<8HmP2t` zxj3Vn0*6$*`VWlDaQHP_kGpLG=W0=)h0nKw0}%@3@3tB7#7z*gvrz4KMi?ecpxe4<_)pXRTx(kGS zkwSIj_1{?u>6H)ym!4{q8aMM-7T)2;%|l**RYJa-xR z4+~Hs=gICHTx39+(x>`BiVJ|N`x={Q3+4zj$d z@UMEq<-==G&l~oz7nG6i_yd8b)U6%<70wQNb?ak7ew~izOgW8Y1CEK$)v&wTjo-xi zRG7)da$+Ai&^?&#fBeo#9R2PAsSD$&~( zw3}A6iz(1b7PNIM+B+%G-nF3JwW3{0fmXJleP%^_KLy%l3)({~+J_UOeQ8Czk^=1` Z3vb+lmV-~wCvtEV-@`Mpk%Mcn_7{&fEQkOA diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StorageClassOperatorIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/resource/kubernetes/StorageClassOperatorIT.class deleted file mode 100644 index 91c32395277df4bbe89444e9a1293bd593e537ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5205 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 Z=Hb5gxd5y9c?zTZ0X&37ScY$)@*kfQtC#=) diff --git a/cluster-operator/bin/src/test/resources/current-kafka-broker.conf b/cluster-operator/bin/src/test/resources/current-kafka-broker.conf deleted file mode 100644 index d8e3d83de73..00000000000 --- a/cluster-operator/bin/src/test/resources/current-kafka-broker.conf +++ /dev/null @@ -1,202 +0,0 @@ -advertised.host.name=null -advertised.listeners=REPLICATION-9091://my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc:9091,PLAIN-9092://my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc:9092,TLS-9093://my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc:9093 -advertised.port=null -alter.config.policy.class.name=null -alter.log.dirs.replication.quota.window.num=11 -alter.log.dirs.replication.quota.window.size.seconds=1 -authorizer.class.name= -auto.create.topics.enable=true -auto.leader.rebalance.enable=true -background.threads=10 -broker.id.generation.enable=true -broker.id=0 -broker.rack=null -client.quota.callback.class=null -compression.type=producer -connection.failed.authentication.delay.ms=100 -connections.max.idle.ms=600000 -connections.max.reauth.ms=0 -control.plane.listener.name=null -controlled.shutdown.enable=true -controlled.shutdown.max.retries=3 -controlled.shutdown.retry.backoff.ms=5000 -controller.socket.timeout.ms=30000 -create.topic.policy.class.name=null -default.replication.factor=1 -delegation.token.expiry.check.interval.ms=3600000 -delegation.token.expiry.time.ms=86400000 -delegation.token.master.key=null -delegation.token.max.lifetime.ms=604800000 -delete.records.purgatory.purge.interval.requests=1 -delete.topic.enable=true -fetch.purgatory.purge.interval.requests=1000 -group.initial.rebalance.delay.ms=3000 -group.max.session.timeout.ms=1800000 -group.max.size=2147483647 -group.min.session.timeout.ms=6000 -host.name= -inter.broker.listener.name=REPLICATION-9091 -inter.broker.protocol.version=2.4-IV1 -kafka.metrics.polling.interval.secs=10 -kafka.metrics.reporters= -leader.imbalance.check.interval.seconds=300 -leader.imbalance.per.broker.percentage=10 -listener.name.replication-9091.ssl.client.auth=required -listener.name.replication-9091.ssl.keystore.location=/tmp/kafka/cluster.keystore.p12 -listener.name.replication-9091.ssl.keystore.password=null -listener.name.replication-9091.ssl.keystore.type=PKCS12 -listener.name.replication-9091.ssl.truststore.location=/tmp/kafka/cluster.truststore.p12 -listener.name.replication-9091.ssl.truststore.password=null -listener.name.replication-9091.ssl.truststore.type=PKCS12 -listener.name.tls-9093.ssl.keystore.location=/tmp/kafka/cluster.keystore.p12 -listener.name.tls-9093.ssl.keystore.password=null -listener.name.tls-9093.ssl.keystore.type=PKCS12 -listener.security.protocol.map=REPLICATION-9091:SSL,PLAIN-9092:PLAINTEXT,TLS-9093:SSL -listeners=REPLICATION-9091://0.0.0.0:9091,PLAIN-9092://0.0.0.0:9092,TLS-9093://0.0.0.0:9093 -log.cleaner.backoff.ms=15000 -log.cleaner.dedupe.buffer.size=134217728 -log.cleaner.delete.retention.ms=86400000 -log.cleaner.enable=true -log.cleaner.io.buffer.load.factor=0.9 -log.cleaner.io.buffer.size=524288 -log.cleaner.io.max.bytes.per.second=1.7976931348623157E308 -log.cleaner.max.compaction.lag.ms=9223372036854775807 -log.cleaner.min.cleanable.ratio=0.5 -log.cleaner.min.compaction.lag.ms=0 -log.cleaner.threads=1 -log.cleanup.policy=delete -log.dir=/tmp/kafka-logs -log.dirs=/var/lib/kafka/data/kafka-log0 -log.flush.interval.messages=9223372036854775807 -log.flush.interval.ms=null -log.flush.offset.checkpoint.interval.ms=60000 -log.flush.scheduler.interval.ms=9223372036854775807 -log.flush.start.offset.checkpoint.interval.ms=60000 -log.index.interval.bytes=4096 -log.index.size.max.bytes=10485760 -log.message.downconversion.enable=true -log.message.format.version=2.4 -log.message.timestamp.difference.max.ms=9223372036854775807 -log.message.timestamp.type=CreateTime -log.preallocate=false -log.retention.bytes=-1 -log.retention.check.interval.ms=300000 -log.retention.hours=168 -log.retention.minutes=null -log.retention.ms=null -log.roll.hours=168 -log.roll.jitter.hours=0 -log.roll.jitter.ms=null -log.roll.ms=null -log.segment.bytes=1073741824 -log.segment.delete.delay.ms=60000 -max.connections.per.ip.overrides= -max.connections.per.ip=2147483647 -max.connections=2147483647 -max.incremental.fetch.session.cache.slots=1000 -message.max.bytes=1000012 -metric.reporters= -metrics.num.samples=2 -metrics.recording.level=INFO -metrics.sample.window.ms=30000 -min.insync.replicas=1 -num.io.threads=8 -num.network.threads=3 -num.partitions=1 -num.recovery.threads.per.data.dir=1 -num.replica.alter.log.dirs.threads=null -num.replica.fetchers=1 -offset.metadata.max.bytes=4096 -offsets.commit.required.acks=-1 -offsets.commit.timeout.ms=5000 -offsets.load.buffer.size=5242880 -offsets.retention.check.interval.ms=600000 -offsets.retention.minutes=10080 -offsets.topic.compression.codec=0 -offsets.topic.num.partitions=50 -offsets.topic.replication.factor=1 -offsets.topic.segment.bytes=104857600 -password.encoder.cipher.algorithm=AES/CBC/PKCS5Padding -password.encoder.iterations=4096 -password.encoder.key.length=128 -password.encoder.keyfactory.algorithm=null -password.encoder.old.secret=null -password.encoder.secret=null -port=9092 -principal.builder.class=null -producer.purgatory.purge.interval.requests=1000 -queued.max.request.bytes=-1 -queued.max.requests=500 -quota.consumer.default=9223372036854775807 -quota.producer.default=9223372036854775807 -quota.window.num=11 -quota.window.size.seconds=1 -replica.fetch.backoff.ms=1000 -replica.fetch.max.bytes=1048576 -replica.fetch.min.bytes=1 -replica.fetch.response.max.bytes=10485760 -replica.fetch.wait.max.ms=500 -replica.high.watermark.checkpoint.interval.ms=5000 -replica.lag.time.max.ms=10000 -replica.selector.class=null -replica.socket.receive.buffer.bytes=65536 -replica.socket.timeout.ms=30000 -replication.quota.window.num=11 -replication.quota.window.size.seconds=1 -request.timeout.ms=30000 -reserved.broker.max.id=1000 -sasl.client.callback.handler.class=null -sasl.enabled.mechanisms= -sasl.jaas.config=null -sasl.kerberos.kinit.cmd=/usr/bin/kinit -sasl.kerberos.min.time.before.relogin=60000 -sasl.kerberos.principal.to.local.rules=DEFAULT -sasl.kerberos.service.name=null -sasl.kerberos.ticket.renew.jitter=0.05 -sasl.kerberos.ticket.renew.window.factor=0.8 -sasl.login.callback.handler.class=null -sasl.login.class=null -sasl.login.refresh.buffer.seconds=300 -sasl.login.refresh.min.period.seconds=60 -sasl.login.refresh.window.factor=0.8 -sasl.login.refresh.window.jitter=0.05 -sasl.mechanism.inter.broker.protocol=GSSAPI -sasl.server.callback.handler.class=null -security.inter.broker.protocol=PLAINTEXT -security.providers=null -socket.receive.buffer.bytes=102400 -socket.request.max.bytes=104857600 -socket.send.buffer.bytes=102400 -ssl.cipher.suites= -ssl.client.auth=none -ssl.enabled.protocols=TLSv1.2,TLSv1.1,TLSv1 -ssl.endpoint.identification.algorithm=HTTPS -ssl.key.password=null -ssl.keymanager.algorithm=SunX509 -ssl.keystore.location=null -ssl.keystore.password=null -ssl.keystore.type=JKS -ssl.principal.mapping.rules=DEFAULT -ssl.protocol=TLS -ssl.provider=null -ssl.secure.random.implementation=null -ssl.trustmanager.algorithm=PKIX -ssl.truststore.location=null -ssl.truststore.password=null -ssl.truststore.type=JKS -transaction.abort.timed.out.transaction.cleanup.interval.ms=60000 -transaction.max.timeout.ms=900000 -transaction.remove.expired.transaction.cleanup.interval.ms=3600000 -transaction.state.log.load.buffer.size=5242880 -transaction.state.log.min.isr=2 -transaction.state.log.num.partitions=50 -transaction.state.log.replication.factor=1 -transaction.state.log.segment.bytes=104857600 -transactional.id.expiration.ms=604800000 -unclean.leader.election.enable=false -zookeeper.connect=localhost:2181 -zookeeper.connection.timeout.ms=null -zookeeper.max.in.flight.requests=10 -zookeeper.session.timeout.ms=6000 -zookeeper.set.acl=false -zookeeper.sync.time.ms=2000 \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/desired-kafka-broker.conf b/cluster-operator/bin/src/test/resources/desired-kafka-broker.conf deleted file mode 100644 index be9b2be0c70..00000000000 --- a/cluster-operator/bin/src/test/resources/desired-kafka-broker.conf +++ /dev/null @@ -1,55 +0,0 @@ -########## -# Broker ID -########## -broker.id=${STRIMZI_BROKER_ID} - -########## -# Zookeeper -########## -zookeeper.connect=localhost:2181 - -########## -# Kafka message logs configuration -########## -log.dirs=/var/lib/kafka/data/kafka-log${STRIMZI_BROKER_ID} - -########## -# Replication listener -########## -listener.name.replication-9091.ssl.keystore.location=/tmp/kafka/cluster.keystore.p12 -listener.name.replication-9091.ssl.keystore.password=${CERTS_STORE_PASSWORD} -listener.name.replication-9091.ssl.keystore.type=PKCS12 -listener.name.replication-9091.ssl.truststore.location=/tmp/kafka/cluster.truststore.p12 -listener.name.replication-9091.ssl.truststore.password=${CERTS_STORE_PASSWORD} -listener.name.replication-9091.ssl.truststore.type=PKCS12 -listener.name.replication-9091.ssl.client.auth=required - -########## -# Plain listener -########## - -########## -# TLS listener -########## -listener.name.tls-9093.ssl.keystore.location=/tmp/kafka/cluster.keystore.p12 -listener.name.tls-9093.ssl.keystore.password=${CERTS_STORE_PASSWORD} -listener.name.tls-9093.ssl.keystore.type=PKCS12 - -########## -# Common listener configuration -########## -listeners=REPLICATION-9091://0.0.0.0:9091,PLAIN-9092://0.0.0.0:9092,TLS-9093://0.0.0.0:9093 -advertised.listeners=REPLICATION-9091://my-cluster-kafka-${STRIMZI_BROKER_ID}.my-cluster-kafka-brokers.myproject.svc:9091,PLAIN-9092://my-cluster-kafka-${STRIMZI_BROKER_ID}.my-cluster-kafka-brokers.myproject.svc:9092,TLS-9093://my-cluster-kafka-${STRIMZI_BROKER_ID}.my-cluster-kafka-brokers.myproject.svc:9093 -listener.security.protocol.map=REPLICATION-9091:SSL,PLAIN-9092:PLAINTEXT,TLS-9093:SSL -inter.broker.listener.name=REPLICATION-9091 -sasl.enabled.mechanisms= -ssl.secure.random.implementation=null -ssl.endpoint.identification.algorithm=HTTPS - -########## -# User provided configuration -########## -log.message.format.version=2.4 -offsets.topic.replication.factor=1 -transaction.state.log.min.isr=2 -transaction.state.log.replication.factor=1 \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentAffinity.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentAffinity.yaml deleted file mode 100644 index 16ca9ce1acd..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentAffinity.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -nodeAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - preference: - matchExpressions: - - key: "another-node-label-key" - operator: "In" - values: - - "another-node-label-value" - weight: 1 - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: "kubernetes.io/e2e-az-name" - operator: "In" - values: - - "e2e-az1" - - "e2e-az2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentTolerations.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentTolerations.yaml deleted file mode 100644 index 5f63f256da0..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-DeploymentTolerations.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -- effect: "NoSchedule" - key: "key1" - operator: "Equal" - value: "value1" -- effect: "NoExecute" - key: "key1" - operator: "Equal" - value: "value1" diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-Kafka.yaml deleted file mode 100644 index 1c464c5af13..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/EntityOperatorTest.withAffinityAndTolerations-Kafka.yaml +++ /dev/null @@ -1,44 +0,0 @@ -apiVersion: v1alpha1 -kind: Kafka -metadata: - name: my-cluster -spec: - entityOperator: - topicOperator: {} - entityOperator: {} - template: - pod: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/e2e-az-name - operator: In - values: - - e2e-az1 - - e2e-az2 - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - preference: - matchExpressions: - - key: another-node-label-key - operator: In - values: - - another-node-label-value - tolerations: - - key: "key1" - operator: "Equal" - value: "value1" - effect: "NoSchedule" - - key: "key1" - operator: "Equal" - value: "value1" - effect: "NoExecute" - kafka: - replicas: 2 - listeners: - - name: plain - port: 9092 - tls: false - type: internal diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack-Kafka.yaml deleted file mode 100644 index 7ad98fc4185..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack-Kafka.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v1alpha1 -kind: Kafka -metadata: - name: my-cluster -spec: - kafka: - replicas: 1 - listeners: - - name: plain - port: 9092 - tls: false - type: internal - template: - pod: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/e2e-az-name - operator: In - values: - - e2e-az1 - - e2e-az2 - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - preference: - matchExpressions: - - key: another-node-label-key - operator: In - values: - - another-node-label-value \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack.yaml deleted file mode 100644 index f6321e84af0..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withAffinityWithoutRack.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -nodeAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - preference: - matchExpressions: - - key: "another-node-label-key" - operator: "In" - values: - - "another-node-label-value" - weight: 1 - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: "kubernetes.io/e2e-az-name" - operator: "In" - values: - - "e2e-az1" - - "e2e-az2" diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity-Kafka.yaml deleted file mode 100644 index 7d6e41394f3..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity-Kafka.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: v1alpha1 -kind: Kafka -metadata: - name: my-cluster -spec: - kafka: - replicas: 1 - listeners: - - name: plain - port: 9092 - tls: false - type: internal - rack: - topologyKey: "failure-domain.beta.kubernetes.io/zone" - template: - pod: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/e2e-az-name - operator: In - values: - - e2e-az1 - - e2e-az2 - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - preference: - matchExpressions: - - key: another-node-label-key - operator: In - values: - - another-node-label-value diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity.yaml deleted file mode 100644 index ce41eebfcd5..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinity.yaml +++ /dev/null @@ -1,29 +0,0 @@ ---- -nodeAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - preference: - matchExpressions: - - key: "another-node-label-key" - operator: "In" - values: - - "another-node-label-value" - weight: 1 - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: "kubernetes.io/e2e-az-name" - operator: "In" - values: - - "e2e-az1" - - "e2e-az2" - - key: "failure-domain.beta.kubernetes.io/zone" - operator: "Exists" -podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchLabels: - strimzi.io/cluster: "my-cluster" - strimzi.io/name: "my-cluster-kafka" - topologyKey: "failure-domain.beta.kubernetes.io/zone" - weight: 100 \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms-Kafka.yaml deleted file mode 100644 index c821896c542..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms-Kafka.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: v1alpha1 -kind: Kafka -metadata: - name: my-cluster -spec: - kafka: - replicas: 1 - listeners: - - name: plain - port: 9092 - tls: false - type: internal - rack: - topologyKey: "failure-domain.beta.kubernetes.io/zone" - template: - pod: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/e2e-az-name - operator: In - values: - - e2e-az1 - - e2e-az2 - - matchExpressions: - - key: kubernetes.io/e2e-az-name - operator: In - values: - - e2e-az3 - - e2e-az4 - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - preference: - matchExpressions: - - key: another-node-label-key - operator: In - values: - - another-node-label-value diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms.yaml deleted file mode 100644 index 26d8e8c3597..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackAndAffinityWithMoreTerms.yaml +++ /dev/null @@ -1,37 +0,0 @@ ---- -nodeAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - preference: - matchExpressions: - - key: "another-node-label-key" - operator: "In" - values: - - "another-node-label-value" - weight: 1 - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: "kubernetes.io/e2e-az-name" - operator: "In" - values: - - "e2e-az1" - - "e2e-az2" - - key: "failure-domain.beta.kubernetes.io/zone" - operator: "Exists" - - matchExpressions: - - key: "kubernetes.io/e2e-az-name" - operator: "In" - values: - - "e2e-az3" - - "e2e-az4" - - key: "failure-domain.beta.kubernetes.io/zone" - operator: "Exists" -podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchLabels: - strimzi.io/cluster: "my-cluster" - strimzi.io/name: "my-cluster-kafka" - topologyKey: "failure-domain.beta.kubernetes.io/zone" - weight: 100 \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity-Kafka.yaml deleted file mode 100644 index bc812cad159..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity-Kafka.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1alpha1 -kind: Kafka -metadata: - name: my-cluster -spec: - kafka: - replicas: 1 - listeners: - - name: plain - port: 9092 - tls: false - type: internal - rack: - topologyKey: "failure-domain.beta.kubernetes.io/zone" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity.yaml deleted file mode 100644 index 5aacf6267bc..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withRackWithoutAffinity.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: "failure-domain.beta.kubernetes.io/zone" - operator: "Exists" -podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchLabels: - strimzi.io/cluster: "my-cluster" - strimzi.io/name: "my-cluster-kafka" - topologyKey: "failure-domain.beta.kubernetes.io/zone" - weight: 100 \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations-Kafka.yaml deleted file mode 100644 index 28251113942..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations-Kafka.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1alpha1 -kind: Kafka -metadata: - name: my-cluster -spec: - kafka: - replicas: 1 - listeners: - - name: plain - port: 9092 - tls: false - type: internal - template: - pod: - tolerations: - - key: "key1" - operator: "Equal" - value: "value1" - effect: "NoSchedule" - - key: "key2" - operator: "Equal" - value: "value2" - effect: "NoSchedule" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations.yaml deleted file mode 100644 index 2657f45bede..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaClusterTest.withTolerations.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -- effect: "NoSchedule" - key: "key1" - operator: "Equal" - value: "value1" -- effect: "NoSchedule" - key: "key2" - operator: "Equal" - value: "value2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-KafkaConnect.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-KafkaConnect.yaml deleted file mode 100644 index 23a5f30237b..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-KafkaConnect.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v1 -kind: KafkaConnect -metadata: - name: my-connect-cluster -spec: - template: - pod: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/e2e-az-name - operator: In - values: - - e2e-az1 - - e2e-az2 - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - preference: - matchExpressions: - - key: another-node-label-key - operator: In - values: - - another-node-label-value diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-StrimziPodSet.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-StrimziPodSet.yaml deleted file mode 100644 index 16ca9ce1acd..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withAffinity-StrimziPodSet.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -nodeAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - preference: - matchExpressions: - - key: "another-node-label-key" - operator: "In" - values: - - "another-node-label-value" - weight: 1 - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: "kubernetes.io/e2e-az-name" - operator: "In" - values: - - "e2e-az1" - - "e2e-az2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-KafkaConnect.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-KafkaConnect.yaml deleted file mode 100644 index a23b6e7b7f0..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-KafkaConnect.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: v1 -kind: KafkaConnect -metadata: - name: my-connect-cluster -spec: - template: - pod: - tolerations: - - key: "key1" - operator: "Equal" - value: "value1" - effect: "NoSchedule" - - key: "key2" - operator: "Equal" - value: "value2" - effect: "NoSchedule" diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-StrimziPodSet.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-StrimziPodSet.yaml deleted file mode 100644 index 2657f45bede..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.withTolerations-StrimziPodSet.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -- effect: "NoSchedule" - key: "key1" - operator: "Equal" - value: "value1" -- effect: "NoSchedule" - key: "key2" - operator: "Equal" - value: "value2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-KafkaMirrorMaker2.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-KafkaMirrorMaker2.yaml deleted file mode 100644 index 9c18cb92e56..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-KafkaMirrorMaker2.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v1 -kind: KafkaMirrorMaker2 -metadata: - name: my-mm2-cluster -spec: - clusters: [] - mirrors: [] - template: - pod: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/e2e-az-name - operator: In - values: - - e2e-az1 - - e2e-az2 - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - preference: - matchExpressions: - - key: another-node-label-key - operator: In - values: - - another-node-label-value diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-StrimziPodSet.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-StrimziPodSet.yaml deleted file mode 100644 index 16ca9ce1acd..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withAffinity-StrimziPodSet.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -nodeAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - preference: - matchExpressions: - - key: "another-node-label-key" - operator: "In" - values: - - "another-node-label-value" - weight: 1 - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: "kubernetes.io/e2e-az-name" - operator: "In" - values: - - "e2e-az1" - - "e2e-az2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-KafkaMirrorMaker2.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-KafkaMirrorMaker2.yaml deleted file mode 100644 index 83041eaacb7..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-KafkaMirrorMaker2.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: v1 -kind: KafkaMirrorMaker2 -metadata: - name: my-mm2-cluster -spec: - clusters: [] - mirrors: [] - template: - pod: - tolerations: - - key: "key1" - operator: "Equal" - value: "value1" - effect: "NoSchedule" - - key: "key2" - operator: "Equal" - value: "value2" - effect: "NoSchedule" diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-StrimziPodSet.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-StrimziPodSet.yaml deleted file mode 100644 index 2657f45bede..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.withTolerations-StrimziPodSet.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -- effect: "NoSchedule" - key: "key1" - operator: "Equal" - value: "value1" -- effect: "NoSchedule" - key: "key2" - operator: "Equal" - value: "value2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Deployment.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Deployment.yaml deleted file mode 100644 index 16ca9ce1acd..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Deployment.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -nodeAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - preference: - matchExpressions: - - key: "another-node-label-key" - operator: "In" - values: - - "another-node-label-value" - weight: 1 - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: "kubernetes.io/e2e-az-name" - operator: "In" - values: - - "e2e-az1" - - "e2e-az2" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Kafka.yaml deleted file mode 100644 index 130a878eb33..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/TopicOperatorTest.withAffinity-Kafka.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v1alpha1 -kind: Kafka -metadata: - name: my-cluster -spec: - topicOperator: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/e2e-az-name - operator: In - values: - - e2e-az1 - - e2e-az2 - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - preference: - matchExpressions: - - key: another-node-label-key - operator: In - values: - - another-node-label-value - kafka: - replicas: 2 - listeners: - - name: plain - port: 9092 - tls: false - type: internal diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity-Kafka.yaml deleted file mode 100644 index 32491c23e98..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity-Kafka.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v1alpha1 -kind: Kafka -metadata: - name: my-cluster -spec: - kafka: {} - zookeeper: - template: - pod: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/e2e-az-name - operator: In - values: - - e2e-az1 - - e2e-az2 - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - preference: - matchExpressions: - - key: another-node-label-key - operator: In - values: - - another-node-label-value diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity.yaml deleted file mode 100644 index f6321e84af0..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withAffinity.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -nodeAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - preference: - matchExpressions: - - key: "another-node-label-key" - operator: "In" - values: - - "another-node-label-value" - weight: 1 - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: "kubernetes.io/e2e-az-name" - operator: "In" - values: - - "e2e-az1" - - "e2e-az2" diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations-Kafka.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations-Kafka.yaml deleted file mode 100644 index 12ddcd9beba..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations-Kafka.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: v1alpha1 -kind: Kafka -metadata: - name: my-cluster -spec: - kafka: {} - zookeeper: - template: - pod: - tolerations: - - key: "key1" - operator: "Equal" - value: "value1" - effect: "NoSchedule" - - key: "key1" - operator: "Equal" - value: "value1" - effect: "NoExecute" diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations.yaml b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations.yaml deleted file mode 100644 index fa7ac75ef6f..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/ZookeeperClusterTest.withTolerations.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -- effect: "NoSchedule" - key: "key1" - operator: "Equal" - value: "value1" -- effect: "NoExecute" - key: "key1" - operator: "Equal" - value: "value1" \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/fbfd.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/fbfd.json deleted file mode 100644 index 14940ace91a..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/model/fbfd.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "affinity": { - "nodeAffinity": { - "requiredDuringSchedulingIgnoredDuringExecution": { - "nodeSelectorTerms": [ - { - "matchExpressions": [ - { - "key": "kubernetes.io/e2e-az-name", - "operator": "In", - "values": [ - "e2e-az1", - "e2e-az2" - ] - } - ] - } - ], - "preferredDuringSchedulingIgnoredDuringExecution": [ - { - "weight": 1, - "preference": { - "matchExpressions": [ - { - "key": "another-node-label-key", - "operator": "In", - "values": [ - "another-node-label-value" - ] - } - ] - } - } - ] - } - } - } -} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Broker-not-exist.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Broker-not-exist.json deleted file mode 100644 index 27d9945f443..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Broker-not-exist.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "errorMessage": "Error processing POST request '/add_broker' due to: 'com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: java.lang.IllegalArgumentException: Broker [3] does not exist.'.", - "stackTrace": "java.util.concurrent.ExecutionException: com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: java.lang.IllegalArgumentException: Broker [3] does not exist.\n\tat java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)\n\tat java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2022)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.AbstractAsyncRequest.getResponse(AbstractAsyncRequest.java:57)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.AbstractRequest.handle(AbstractRequest.java:41)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.handlePost(KafkaCruiseControlServlet.java:229)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doGetOrPost(KafkaCruiseControlServlet.java:127)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doPost(KafkaCruiseControlServlet.java:106)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\n\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\n\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\n\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:137)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\n\tat java.base/java.lang.Thread.run(Thread.java:829)\nCaused by: com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: java.lang.IllegalArgumentException: Broker [3] does not exist.\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:167)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.AddBrokersRunnable.getResult(AddBrokersRunnable.java:88)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.AddBrokersRunnable.getResult(AddBrokersRunnable.java:35)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.OperationRunnable.run(OperationRunnable.java:45)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.run(GoalBasedOperationRunnable.java:36)\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\t... 1 more\nCaused by: java.lang.IllegalArgumentException: Broker [3] does not exist.\n\tat com.linkedin.kafka.cruisecontrol.KafkaCruiseControl.sanityCheckBrokerPresence(KafkaCruiseControl.java:917)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.AddBrokersRunnable.workWithClusterModel(AddBrokersRunnable.java:93)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:161)\n\t... 9 more\n", - "version": 1 -} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-NotEnoughValidWindows-error.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-NotEnoughValidWindows-error.json deleted file mode 100644 index 79c519a5a61..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-NotEnoughValidWindows-error.json +++ /dev/null @@ -1 +0,0 @@ -{"errorMessage":"Error processing POST request \u0027/rebalance\u0027 due to: \u0027com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1587403196210] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d2065, granularity\u003dENTITY)\u0027.","stackTrace":"java.util.concurrent.ExecutionException: com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1587403196210] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d2065, granularity\u003dENTITY)\n\tat java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)\n\tat java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.AbstractAsyncRequest.getResponse(AbstractAsyncRequest.java:57)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.AbstractRequest.handle(AbstractRequest.java:40)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.handlePost(KafkaCruiseControlServlet.java:215)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doGetOrPost(KafkaCruiseControlServlet.java:123)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doPost(KafkaCruiseControlServlet.java:102)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:547)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1607)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1297)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1577)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1212)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:500)\n\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)\n\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1587403196210] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d2065, granularity\u003dENTITY)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:132)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.workWithoutClusterModel(RebalanceRunnable.java:121)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:137)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.getResult(RebalanceRunnable.java:94)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.getResult(RebalanceRunnable.java:30)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.OperationRunnable.run(OperationRunnable.java:45)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.run(GoalBasedOperationRunnable.java:34)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\t... 1 more\nCaused by: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1587403196210] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d2065, granularity\u003dENTITY)\n\tat com.linkedin.cruisecontrol.monitor.sampling.aggregator.MetricSampleAggregator.validateCompleteness(MetricSampleAggregator.java:540)\n\tat com.linkedin.cruisecontrol.monitor.sampling.aggregator.MetricSampleAggregator.aggregate(MetricSampleAggregator.java:212)\n\tat com.linkedin.kafka.cruisecontrol.monitor.sampling.aggregator.KafkaPartitionMetricSampleAggregator.aggregate(KafkaPartitionMetricSampleAggregator.java:151)\n\tat com.linkedin.kafka.cruisecontrol.monitor.LoadMonitor.clusterModel(LoadMonitor.java:499)\n\tat com.linkedin.kafka.cruisecontrol.KafkaCruiseControl.clusterModel(KafkaCruiseControl.java:301)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.ProposalsRunnable.workWithClusterModel(ProposalsRunnable.java:81)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:128)\n\t... 11 more\n","version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-bad-goals-error.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-bad-goals-error.json deleted file mode 100644 index fe9e8f19a5f..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-bad-goals-error.json +++ /dev/null @@ -1 +0,0 @@ -{"errorMessage":"Error processing POST request \u0027/rebalance\u0027 due to: \u0027java.lang.IllegalArgumentException: Missing hard goals [NetworkInboundCapacityGoal, DiskCapacityGoal, RackAwareGoal, NetworkOutboundCapacityGoal, CpuCapacityGoal, ReplicaCapacityGoal] in the provided goals: [RackAwareGoal, ReplicaCapacityGoal]. Add skip_hard_goal_check\u003dtrue parameter to ignore this sanity check.\u0027.","stackTrace":"java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Missing hard goals [NetworkInboundCapacityGoal, DiskCapacityGoal, RackAwareGoal, NetworkOutboundCapacityGoal, CpuCapacityGoal, ReplicaCapacityGoal] in the provided goals: [RackAwareGoal, ReplicaCapacityGoal]. Add skip_hard_goal_check\u003dtrue parameter to ignore this sanity check.\n\tat java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)\n\tat java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.AbstractAsyncRequest.getResponse(AbstractAsyncRequest.java:57)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.AbstractRequest.handle(AbstractRequest.java:40)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.handlePost(KafkaCruiseControlServlet.java:215)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doGetOrPost(KafkaCruiseControlServlet.java:123)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doPost(KafkaCruiseControlServlet.java:102)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:547)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1607)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1297)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1577)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1212)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:500)\n\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)\n\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.lang.IllegalArgumentException: Missing hard goals [NetworkInboundCapacityGoal, DiskCapacityGoal, RackAwareGoal, NetworkOutboundCapacityGoal, CpuCapacityGoal, ReplicaCapacityGoal] in the provided goals: [RackAwareGoal, ReplicaCapacityGoal]. Add skip_hard_goal_check\u003dtrue parameter to ignore this sanity check.\n\tat com.linkedin.kafka.cruisecontrol.KafkaCruiseControlUtils.sanityCheckGoals(KafkaCruiseControlUtils.java:186)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.init(GoalBasedOperationRunnable.java:107)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:124)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.workWithoutClusterModel(RebalanceRunnable.java:121)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:137)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.getResult(RebalanceRunnable.java:94)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.getResult(RebalanceRunnable.java:30)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.OperationRunnable.run(OperationRunnable.java:45)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.run(GoalBasedOperationRunnable.java:34)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\t... 1 more\n","version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-in-progress.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-in-progress.json deleted file mode 100644 index 56e300c9828..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-in-progress.json +++ /dev/null @@ -1 +0,0 @@ -{"version":1,"progress":[{"operation":"Rebalance","operationProgress":[{"description":"Operation enqueued, waiting to be executed.","completionPercentage":100.0,"step":"PENDING","time-in-ms":127},{"description":"The job requires a cluster model and it is waiting to get the cluster model lock.","completionPercentage":100.0,"step":"WAITING_FOR_CLUSTER_MODEL","time-in-ms":461}]}]} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-verbose.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-verbose.json deleted file mode 100644 index 652f85ce13b..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals-verbose.json +++ /dev/null @@ -1 +0,0 @@ -{"summary":{"numIntraBrokerReplicaMovements":0,"excludedBrokersForLeadership":[],"numReplicaMovements":19,"onDemandBalancednessScoreAfter":87.66421502095022,"onDemandBalancednessScoreBefore":79.74705957325753,"intraBrokerDataToMoveMB":0,"recentWindows":1,"dataToMoveMB":0,"monitoredPartitionsPercentage":100.0,"excludedTopics":[],"numLeaderMovements":21,"excludedBrokersForReplicaMove":[]},"proposals":[{"oldReplicas":[2,0],"topicPartition":{"hash":-1535008712,"partition":26,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,1],"oldLeader":2},{"oldReplicas":[2,0],"topicPartition":{"hash":-1535008898,"partition":20,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,1],"oldLeader":2},{"oldReplicas":[2,0],"topicPartition":{"hash":-1535009084,"partition":14,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,1],"oldLeader":2},{"oldReplicas":[0,1],"topicPartition":{"hash":-2093132640,"partition":9,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-2093132919,"partition":0,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,1],"topicPartition":{"hash":-2093132826,"partition":3,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[1,0],"topicPartition":{"hash":-1535009022,"partition":16,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,2],"oldLeader":1},{"oldReplicas":[1,2],"topicPartition":{"hash":-2093132051,"partition":28,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":1},{"oldReplicas":[0,1],"topicPartition":{"hash":-2093132454,"partition":15,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-1535008681,"partition":27,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-2093132733,"partition":6,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[1,0],"topicPartition":{"hash":-1535009394,"partition":4,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,2],"oldLeader":1},{"oldReplicas":[1,2],"topicPartition":{"hash":-2093132423,"partition":16,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":1},{"oldReplicas":[1,2],"topicPartition":{"hash":-2093132237,"partition":22,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":1},{"oldReplicas":[0,1],"topicPartition":{"hash":-1535009518,"partition":0,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[2,1],"topicPartition":{"hash":-2093132485,"partition":14,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":2},{"oldReplicas":[0,1],"topicPartition":{"hash":-2093132268,"partition":21,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-2093132547,"partition":12,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,1],"topicPartition":{"hash":-1535009146,"partition":12,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-2093132175,"partition":24,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[1,0],"topicPartition":{"hash":-1535008836,"partition":22,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,2],"oldLeader":1},{"oldReplicas":[0,1],"topicPartition":{"hash":-2093132082,"partition":27,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,1],"topicPartition":{"hash":-1535008774,"partition":24,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-2093132361,"partition":18,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-1535009053,"partition":15,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-2093131989,"partition":30,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-1535009425,"partition":3,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[2,1],"topicPartition":{"hash":-2093132671,"partition":8,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[1,0],"oldLeader":2},{"oldReplicas":[2,0],"topicPartition":{"hash":-2093132764,"partition":5,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,1],"oldLeader":2},{"oldReplicas":[0,1],"topicPartition":{"hash":-1535008960,"partition":18,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-1535009239,"partition":9,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[0,1],"topicPartition":{"hash":-1535009332,"partition":6,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[2,0],"topicPartition":{"hash":-2093132578,"partition":11,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,1],"oldLeader":2},{"oldReplicas":[1,2],"topicPartition":{"hash":-2093132795,"partition":4,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":1},{"oldReplicas":[1,0],"topicPartition":{"hash":-1535009208,"partition":10,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,2],"oldLeader":1},{"oldReplicas":[0,1],"topicPartition":{"hash":-1535008588,"partition":30,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[1,0],"oldLeader":0},{"oldReplicas":[0,2],"topicPartition":{"hash":-1535008867,"partition":21,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,0],"oldLeader":0},{"oldReplicas":[2,0],"topicPartition":{"hash":-1535009270,"partition":8,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,1],"oldLeader":2},{"oldReplicas":[1,2],"topicPartition":{"hash":-2093132609,"partition":10,"topic":"__KafkaCruiseControlModelTrainingSamples"},"newReplicas":[2,0],"oldLeader":1},{"oldReplicas":[2,0],"topicPartition":{"hash":-1535009456,"partition":2,"topic":"__KafkaCruiseControlPartitionMetricSamples"},"newReplicas":[2,1],"oldLeader":2}],"loadBeforeOptimization":{"hosts":[{"FollowerNwInRate":0.06354837119579315,"Leaders":23,"DiskMB":1.9233150482177734,"PnwOutRate":0.2267979085445404,"NwOutRate":0.16324952989816666,"Host":"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.37949633598327637,"Replicas":44,"LeaderNwInRate":0.11040031909942627,"DiskPct":0.0019233150482177734},{"FollowerNwInRate":0.06826946139335632,"Leaders":22,"DiskMB":1.1729974746704102,"PnwOutRate":0.1381157636642456,"NwOutRate":0.06984630227088928,"Host":"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.01914038509130478,"Replicas":43,"LeaderNwInRate":0.06984630227088928,"DiskPct":0.0011729974746704102},{"FollowerNwInRate":0.06978311762213707,"Leaders":20,"DiskMB":1.127202033996582,"PnwOutRate":0.13176019489765167,"NwOutRate":0.0619770772755146,"Host":"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.016685860231518745,"Replicas":42,"LeaderNwInRate":0.0619770772755146,"DiskPct":0.0011272020339965821}],"brokers":[{"FollowerNwInRate":0.06354837119579315,"Leaders":23,"BrokerState":"ALIVE","Broker":0,"DiskMB":1.9233150482177734,"PnwOutRate":0.2267979085445404,"NwOutRate":0.16324952989816666,"Host":"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.37949633598327637,"Replicas":44,"LeaderNwInRate":0.11040031909942627,"DiskPct":0.0019233150482177734},{"FollowerNwInRate":0.06826946139335632,"Leaders":22,"BrokerState":"ALIVE","Broker":1,"DiskMB":1.1729974746704102,"PnwOutRate":0.1381157636642456,"NwOutRate":0.06984630227088928,"Host":"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.01914038509130478,"Replicas":43,"LeaderNwInRate":0.06984630227088928,"DiskPct":0.0011729974746704102},{"FollowerNwInRate":0.06978311762213707,"Leaders":20,"BrokerState":"ALIVE","Broker":2,"DiskMB":1.127202033996582,"PnwOutRate":0.13176019489765167,"NwOutRate":0.0619770772755146,"Host":"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.016685860231518745,"Replicas":42,"LeaderNwInRate":0.0619770772755146,"DiskPct":0.0011272020339965821}]},"goalSummary":[{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"RackAwareGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"ReplicaCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"DiskCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"NetworkInboundCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"NetworkOutboundCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"CpuCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"ReplicaDistributionGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.1655579557021459},"STD":{"disk":0.36497634854464867,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.170454906826397,"networkOutbound":0.04599782276662444,"networkInbound":0.018571965220006714,"topicReplicas":0.4714045207910316,"potentialNwOut":0.043380849704992744},"MIN":{"disk":1.127202033996582,"replicas":42,"leaderReplicas":20,"cpu":0.016685860231518745,"networkOutbound":0.0619770772755146,"networkInbound":0.13176019489765167,"topicReplicas":0,"potentialNwOut":0.13176019489765167},"MAX":{"disk":1.9233150482177734,"replicas":44,"leaderReplicas":23,"cpu":0.37949633598327637,"networkOutbound":0.16324952989816666,"networkInbound":0.17394869029521942,"topicReplicas":22,"potentialNwOut":0.2267979085445404}}},"goal":"PotentialNwOutGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795321861902},"STD":{"disk":0.08102917447088125,"replicas":2.943920288775949,"leaderReplicas":0.9428090415820634,"cpu":0.13623909868422068,"networkOutbound":0.034585760987320004,"networkInbound":0.014784541073763445,"topicReplicas":3.4901380514202214,"potentialNwOut":0.010205221426926758},"MIN":{"disk":1.344813346862793,"replicas":39,"leaderReplicas":21,"cpu":0.03532284498214722,"networkOutbound":0.07242386788129807,"networkInbound":0.1270771473646164,"topicReplicas":0,"potentialNwOut":0.15719836950302124},"MAX":{"disk":1.522233009338379,"replicas":46,"leaderReplicas":23,"cpu":0.33094894886016846,"networkOutbound":0.14723889157176018,"networkInbound":0.15954913198947906,"topicReplicas":26,"potentialNwOut":0.17992635816335678}}},"goal":"DiskUsageDistributionGoal","status":"FIXED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795818567276},"STD":{"disk":0.08606669975194692,"replicas":2.1602468994692865,"leaderReplicas":3.0912061651652345,"cpu":0.16117079877219728,"networkOutbound":0.04415480011505807,"networkInbound":0.013918873641131368,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011014321925947788},"MIN":{"disk":1.3444080352783203,"replicas":40,"leaderReplicas":19,"cpu":0.016284657642245293,"networkOutbound":0.06686002761125565,"networkInbound":0.12826968729496002,"topicReplicas":0,"potentialNwOut":0.15717267990112305},"MAX":{"disk":1.5295181274414062,"replicas":45,"leaderReplicas":26,"cpu":0.36616960167884827,"networkOutbound":0.16080114245414734,"networkInbound":0.15838229656219482,"topicReplicas":27,"potentialNwOut":0.1811188980937004}}},"goal":"NetworkInboundUsageDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795818567276},"STD":{"disk":0.08606669975194692,"replicas":2.1602468994692865,"leaderReplicas":6.944222218666553,"cpu":0.06713655515670224,"networkOutbound":0.0026546728918540458,"networkInbound":0.013918873641131368,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011014321925947788},"MIN":{"disk":1.3444080352783203,"replicas":40,"leaderReplicas":12,"cpu":0.08291831612586975,"networkOutbound":0.09591187536716461,"networkInbound":0.12826968729496002,"topicReplicas":0,"potentialNwOut":0.15717267990112305},"MAX":{"disk":1.5295181274414062,"replicas":45,"leaderReplicas":28,"cpu":0.23290228843688965,"networkOutbound":0.10204722080379725,"networkInbound":0.15838229656219482,"topicReplicas":27,"potentialNwOut":0.1811188980937004}}},"goal":"NetworkOutboundUsageDistributionGoal","status":"FIXED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795818567276},"STD":{"disk":0.08606669975194692,"replicas":2.1602468994692865,"leaderReplicas":14.704496666741852,"cpu":0.05277203847245612,"networkOutbound":0.0035481439182601764,"networkInbound":0.013918873641131368,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011014321925947788},"MIN":{"disk":1.3444080352783203,"replicas":40,"leaderReplicas":1,"cpu":0.09227972477674484,"networkOutbound":0.093471959233284,"networkInbound":0.12826968729496002,"topicReplicas":0,"potentialNwOut":0.15717267990112305},"MAX":{"disk":1.5295181274414062,"replicas":45,"leaderReplicas":34,"cpu":0.21230719983577728,"networkOutbound":0.10179123282432556,"networkInbound":0.15838229656219482,"topicReplicas":27,"potentialNwOut":0.1811188980937004}}},"goal":"CpuUsageDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795818567276},"STD":{"disk":0.08606669975194692,"replicas":2.1602468994692865,"leaderReplicas":14.704496666741852,"cpu":0.05277203847245612,"networkOutbound":0.0035481439182601764,"networkInbound":0.013918873641131368,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011014321925947788},"MIN":{"disk":1.3444080352783203,"replicas":40,"leaderReplicas":1,"cpu":0.09227972477674484,"networkOutbound":0.093471959233284,"networkInbound":0.12826968729496002,"topicReplicas":0,"potentialNwOut":0.15717267990112305},"MAX":{"disk":1.5295181274414062,"replicas":45,"leaderReplicas":34,"cpu":0.21230719983577728,"networkOutbound":0.10179123282432556,"networkInbound":0.15838229656219482,"topicReplicas":27,"potentialNwOut":0.1811188980937004}}},"goal":"TopicReplicaDistributionGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795818567276},"STD":{"disk":0.08606669975194692,"replicas":2.1602468994692865,"leaderReplicas":14.704496666741852,"cpu":0.05277203847245612,"networkOutbound":0.0035481439182601764,"networkInbound":0.013918873641131368,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011014321925947788},"MIN":{"disk":1.3444080352783203,"replicas":40,"leaderReplicas":1,"cpu":0.09227972477674484,"networkOutbound":0.093471959233284,"networkInbound":0.12826968729496002,"topicReplicas":0,"potentialNwOut":0.15717267990112305},"MAX":{"disk":1.5295181274414062,"replicas":45,"leaderReplicas":34,"cpu":0.21230719983577728,"networkOutbound":0.10179123282432556,"networkInbound":0.15838229656219482,"topicReplicas":27,"potentialNwOut":0.1811188980937004}}},"goal":"LeaderReplicaDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.4078381856282551,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.13844085733095804,"networkOutbound":0.09835763772328694,"networkInbound":0.1479415496190389,"topicReplicas":14.333333333333334,"potentialNwOut":0.16555795818567276},"STD":{"disk":0.08606669975194692,"replicas":2.1602468994692865,"leaderReplicas":14.704496666741852,"cpu":0.05277203847245612,"networkOutbound":0.0035481439182601764,"networkInbound":0.013918873641131368,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011014321925947788},"MIN":{"disk":1.3444080352783203,"replicas":40,"leaderReplicas":1,"cpu":0.09227972477674484,"networkOutbound":0.093471959233284,"networkInbound":0.12826968729496002,"topicReplicas":0,"potentialNwOut":0.15717267990112305},"MAX":{"disk":1.5295181274414062,"replicas":45,"leaderReplicas":34,"cpu":0.21230719983577728,"networkOutbound":0.10179123282432556,"networkInbound":0.15838229656219482,"topicReplicas":27,"potentialNwOut":0.1811188980937004}}},"goal":"LeaderBytesInDistributionGoal","status":"VIOLATED"}],"loadAfterOptimization":{"hosts":[{"FollowerNwInRate":0.08764694258570671,"Leaders":1,"DiskMB":1.5295181274414062,"PnwOutRate":0.1811188980937004,"NwOutRate":0.093471959233284,"Host":"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.21230719983577728,"Replicas":40,"LeaderNwInRate":0.04062274470925331,"DiskPct":0.0015295181274414063},{"FollowerNwInRate":0.05857257544994354,"Leaders":30,"DiskMB":1.349588394165039,"PnwOutRate":0.15838229656219482,"NwOutRate":0.09980972111225128,"Host":"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.09227972477674484,"Replicas":45,"LeaderNwInRate":0.09980972111225128,"DiskPct":0.001349588394165039},{"FollowerNwInRate":0.055381447076797485,"Leaders":34,"DiskMB":1.3444080352783203,"PnwOutRate":0.15717267990112305,"NwOutRate":0.10179123282432556,"Host":"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.11073566973209381,"Replicas":44,"LeaderNwInRate":0.10179123282432556,"DiskPct":0.0013444080352783203}],"brokers":[{"FollowerNwInRate":0.08764694258570671,"Leaders":1,"BrokerState":"ALIVE","Broker":0,"DiskMB":1.5295181274414062,"PnwOutRate":0.1811188980937004,"NwOutRate":0.093471959233284,"Host":"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.21230719983577728,"Replicas":40,"LeaderNwInRate":0.04062274470925331,"DiskPct":0.0015295181274414063},{"FollowerNwInRate":0.05857257544994354,"Leaders":30,"BrokerState":"ALIVE","Broker":1,"DiskMB":1.349588394165039,"PnwOutRate":0.15838229656219482,"NwOutRate":0.09980972111225128,"Host":"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.09227972477674484,"Replicas":45,"LeaderNwInRate":0.09980972111225128,"DiskPct":0.001349588394165039},{"FollowerNwInRate":0.055381447076797485,"Leaders":34,"BrokerState":"ALIVE","Broker":2,"DiskMB":1.3444080352783203,"PnwOutRate":0.15717267990112305,"NwOutRate":0.10179123282432556,"Host":"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.11073566973209381,"Replicas":44,"LeaderNwInRate":0.10179123282432556,"DiskPct":0.0013444080352783203}]},"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals.json deleted file mode 100644 index ec91aa6ef10..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Rebalance-no-goals.json +++ /dev/null @@ -1 +0,0 @@ -{"summary":{"numIntraBrokerReplicaMovements":0,"excludedBrokersForLeadership":[],"numReplicaMovements":31,"onDemandBalancednessScoreAfter":84.08179174145127,"onDemandBalancednessScoreBefore":79.74705957325753,"intraBrokerDataToMoveMB":0,"recentWindows":1,"dataToMoveMB":0,"monitoredPartitionsPercentage":100.0,"excludedTopics":[],"numLeaderMovements":12,"excludedBrokersForReplicaMove":[]},"goalSummary":[{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"RackAwareGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"ReplicaCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"DiskCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"NetworkInboundCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"NetworkOutboundCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"CpuCapacityGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"ReplicaDistributionGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213210105896},"STD":{"disk":0.34694767628028317,"replicas":0.816496580927726,"leaderReplicas":1.247219128924647,"cpu":0.18846447280808576,"networkOutbound":0.04636594752775456,"networkInbound":0.018688794439493762,"topicReplicas":0.4714045207910316,"potentialNwOut":0.04353005198387323},"MIN":{"disk":1.071380615234375,"replicas":42,"leaderReplicas":20,"cpu":0.018604980781674385,"networkOutbound":0.06258998811244965,"networkInbound":0.1324087679386139,"topicReplicas":0,"potentialNwOut":0.1324087679386139},"MAX":{"disk":1.8282928466796875,"replicas":44,"leaderReplicas":23,"cpu":0.419691801071167,"networkOutbound":0.16396404057741165,"networkInbound":0.17446254193782806,"topicReplicas":22,"potentialNwOut":0.22731497883796692}}},"goal":"PotentialNwOutGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.07681098514539705,"replicas":2.82842712474619,"leaderReplicas":0.4714045207910317,"cpu":0.1512113578562017,"networkOutbound":0.035589620946184876,"networkInbound":0.014820814776470369,"topicReplicas":3.456966485800899,"potentialNwOut":0.010094097216619516},"MIN":{"disk":1.2837018966674805,"replicas":39,"leaderReplicas":21,"cpu":0.038822758942842484,"networkOutbound":0.07294782251119614,"networkInbound":0.12725487351417542,"topicReplicas":0,"potentialNwOut":0.15867099165916443},"MAX":{"disk":1.446913719177246,"replicas":45,"leaderReplicas":22,"cpu":0.366836279630661,"networkOutbound":0.14882435277104378,"networkInbound":0.15871809422969818,"topicReplicas":26,"potentialNwOut":0.18010731786489487}}},"goal":"DiskUsageDistributionGoal","status":"FIXED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.0839820379157583,"replicas":2.160246899469287,"leaderReplicas":1.247219128924647,"cpu":0.051785963153765435,"networkOutbound":0.037636609995347084,"networkInbound":0.013644627397560654,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011272690764123348},"MIN":{"disk":1.2767934799194336,"replicas":40,"leaderReplicas":20,"cpu":0.1092967689037323,"networkOutbound":0.0619896724820137,"networkInbound":0.1289197951555252,"topicReplicas":0,"potentialNwOut":0.15764965116977692},"MAX":{"disk":1.4570302963256836,"replicas":45,"leaderReplicas":23,"cpu":0.22588825225830078,"networkOutbound":0.15029301866889,"networkInbound":0.1580745130777359,"topicReplicas":27,"potentialNwOut":0.18177223950624466}}},"goal":"NetworkInboundUsageDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.0839820379157583,"replicas":2.160246899469287,"leaderReplicas":10.873004286866726,"cpu":0.04113892400977573,"networkOutbound":0.007092096980852424,"networkInbound":0.013644627397560654,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011272690764123348},"MIN":{"disk":1.2767934799194336,"replicas":40,"leaderReplicas":7,"cpu":0.1116761788725853,"networkOutbound":0.09174759685993195,"networkInbound":0.1289197951555252,"topicReplicas":0,"potentialNwOut":0.15764965116977692},"MAX":{"disk":1.4570302963256836,"replicas":45,"leaderReplicas":33,"cpu":0.2092323899269104,"networkOutbound":0.10829527676105499,"networkInbound":0.1580745130777359,"topicReplicas":27,"potentialNwOut":0.18177223950624466}}},"goal":"NetworkOutboundUsageDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.0839820379157583,"replicas":2.160246899469287,"leaderReplicas":13.299958228840001,"cpu":0.03367191657922694,"networkOutbound":0.0052962421532357275,"networkInbound":0.013644627397560654,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011272690764123348},"MIN":{"disk":1.2767934799194336,"replicas":40,"leaderReplicas":3,"cpu":0.12119382619857788,"networkOutbound":0.09174759685993195,"networkInbound":0.1289197951555252,"topicReplicas":0,"potentialNwOut":0.15764965116977692},"MAX":{"disk":1.4570302963256836,"replicas":45,"leaderReplicas":33,"cpu":0.1997147500514984,"networkOutbound":0.1046846816316247,"networkInbound":0.1580745130777359,"topicReplicas":27,"potentialNwOut":0.18177223950624466}}},"goal":"CpuUsageDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.0839820379157583,"replicas":2.160246899469287,"leaderReplicas":13.299958228840001,"cpu":0.03367191657922694,"networkOutbound":0.0052962421532357275,"networkInbound":0.013644627397560654,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011272690764123348},"MIN":{"disk":1.2767934799194336,"replicas":40,"leaderReplicas":3,"cpu":0.12119382619857788,"networkOutbound":0.09174759685993195,"networkInbound":0.1289197951555252,"topicReplicas":0,"potentialNwOut":0.15764965116977692},"MAX":{"disk":1.4570302963256836,"replicas":45,"leaderReplicas":33,"cpu":0.1997147500514984,"networkOutbound":0.1046846816316247,"networkInbound":0.1580745130777359,"topicReplicas":27,"potentialNwOut":0.18177223950624466}}},"goal":"TopicReplicaDistributionGoal","status":"NO-ACTION"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.0839820379157583,"replicas":2.160246899469287,"leaderReplicas":13.299958228840001,"cpu":0.03367191657922694,"networkOutbound":0.0052962421532357275,"networkInbound":0.013644627397560654,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011272690764123348},"MIN":{"disk":1.2767934799194336,"replicas":40,"leaderReplicas":3,"cpu":0.12119382619857788,"networkOutbound":0.09174759685993195,"networkInbound":0.1289197951555252,"topicReplicas":0,"potentialNwOut":0.15764965116977692},"MAX":{"disk":1.4570302963256836,"replicas":45,"leaderReplicas":33,"cpu":0.1997147500514984,"networkOutbound":0.1046846816316247,"networkInbound":0.1580745130777359,"topicReplicas":27,"potentialNwOut":0.18177223950624466}}},"goal":"LeaderReplicaDistributionGoal","status":"VIOLATED"},{"clusterModelStats":{"metadata":{"brokers":3,"replicas":129,"topics":3},"statistics":{"AVG":{"disk":1.3382870356241863,"replicas":43.0,"leaderReplicas":21.666666666666668,"cpu":0.1531670093536377,"networkOutbound":0.09849496682484944,"networkInbound":0.14821464816729227,"topicReplicas":14.333333333333334,"potentialNwOut":0.16583213458458582},"STD":{"disk":0.0839820379157583,"replicas":2.160246899469287,"leaderReplicas":13.299958228840001,"cpu":0.03367191657922694,"networkOutbound":0.0052962421532357275,"networkInbound":0.013644627397560654,"topicReplicas":3.6995832676878884,"potentialNwOut":0.011272690764123348},"MIN":{"disk":1.2767934799194336,"replicas":40,"leaderReplicas":3,"cpu":0.12119382619857788,"networkOutbound":0.09174759685993195,"networkInbound":0.1289197951555252,"topicReplicas":0,"potentialNwOut":0.15764965116977692},"MAX":{"disk":1.4570302963256836,"replicas":45,"leaderReplicas":33,"cpu":0.1997147500514984,"networkOutbound":0.1046846816316247,"networkInbound":0.1580745130777359,"topicReplicas":27,"potentialNwOut":0.18177223950624466}}},"goal":"LeaderBytesInDistributionGoal","status":"VIOLATED"}],"loadAfterOptimization":{"hosts":[{"FollowerNwInRate":0.07708756253123283,"Leaders":3,"DiskMB":1.4570302963256836,"PnwOutRate":0.18177223950624466,"NwOutRate":0.1046846816316247,"Host":"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.1997147500514984,"Replicas":40,"LeaderNwInRate":0.051832232624292374,"DiskPct":0.0014570302963256836},{"FollowerNwInRate":0.05859703570604324,"Leaders":29,"DiskMB":1.2767934799194336,"PnwOutRate":0.15764965116977692,"NwOutRate":0.09905261546373367,"Host":"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.12119382619857788,"Replicas":44,"LeaderNwInRate":0.09905261546373367,"DiskPct":0.0012767934799194336},{"FollowerNwInRate":0.06632691621780396,"Leaders":33,"DiskMB":1.2810373306274414,"PnwOutRate":0.1580745130777359,"NwOutRate":0.09174759685993195,"Host":"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.13859246671199799,"Replicas":45,"LeaderNwInRate":0.09174759685993195,"DiskPct":0.0012810373306274415}],"brokers":[{"FollowerNwInRate":0.07708756253123283,"Leaders":3,"BrokerState":"ALIVE","Broker":0,"DiskMB":1.4570302963256836,"PnwOutRate":0.18177223950624466,"NwOutRate":0.1046846816316247,"Host":"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.1997147500514984,"Replicas":40,"LeaderNwInRate":0.051832232624292374,"DiskPct":0.0014570302963256836},{"FollowerNwInRate":0.05859703570604324,"Leaders":29,"BrokerState":"ALIVE","Broker":1,"DiskMB":1.2767934799194336,"PnwOutRate":0.15764965116977692,"NwOutRate":0.09905261546373367,"Host":"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.12119382619857788,"Replicas":44,"LeaderNwInRate":0.09905261546373367,"DiskPct":0.0012767934799194336},{"FollowerNwInRate":0.06632691621780396,"Leaders":33,"BrokerState":"ALIVE","Broker":2,"DiskMB":1.2810373306274414,"PnwOutRate":0.1580745130777359,"NwOutRate":0.09174759685993195,"Host":"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc","CpuPct":0.13859246671199799,"Replicas":45,"LeaderNwInRate":0.09174759685993195,"DiskPct":0.0012810373306274415}]},"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-proposal-not-ready.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-proposal-not-ready.json deleted file mode 100644 index fa002ca833f..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-proposal-not-ready.json +++ /dev/null @@ -1 +0,0 @@ -{"AnalyzerState":{"isProposalReady":false,"readyGoals":[]},"MonitorState":{"trainingPct":9.6,"trained":false,"numFlawedPartitions":0,"state":"RUNNING","numTotalPartitions":2065,"numMonitoredWindows":1,"monitoringCoveragePct":100.0,"reasonOfLatestPauseOrResume":"N/A","numValidPartitions":2065},"ExecutorState":{"state":"NO_TASK_IN_PROGRESS"},"AnomalyDetectorState":{"recentBrokerFailures":[],"recentGoalViolations":[],"selfHealingDisabled":["DISK_FAILURE","BROKER_FAILURE","GOAL_VIOLATION","METRIC_ANOMALY","TOPIC_ANOMALY"],"balancednessScore":100.0,"selfHealingEnabled":[],"recentDiskFailures":[],"metrics":{"meanTimeToStartFixMs":0.0,"numSelfHealingStarted":0,"ongoingAnomalyDurationMs":0,"numSelfHealingFailedToStart":0,"meanTimeBetweenAnomaliesMs":{"TOPIC_ANOMALY":0.0,"GOAL_VIOLATION":0.0,"DISK_FAILURE":0.0,"BROKER_FAILURE":0.0,"METRIC_ANOMALY":0.0}},"recentMetricAnomalies":[],"recentTopicAnomalies":[],"selfHealingEnabledRatio":{"DISK_FAILURE":0.0,"BROKER_FAILURE":0.0,"GOAL_VIOLATION":0.0,"METRIC_ANOMALY":0.0,"TOPIC_ANOMALY":0.0}},"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-verbose.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-verbose.json deleted file mode 100644 index 4ccb1fff3de..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State-verbose.json +++ /dev/null @@ -1 +0,0 @@ -{"AnalyzerState":{"isProposalReady":true,"readyGoals":["NetworkInboundUsageDistributionGoal","CpuUsageDistributionGoal","PotentialNwOutGoal","LeaderReplicaDistributionGoal","NetworkInboundCapacityGoal","LeaderBytesInDistributionGoal","DiskCapacityGoal","ReplicaDistributionGoal","RackAwareGoal","TopicReplicaDistributionGoal","NetworkOutboundCapacityGoal","CpuCapacityGoal","DiskUsageDistributionGoal","NetworkOutboundUsageDistributionGoal","ReplicaCapacityGoal"],"goalReadiness":[{"name":"RackAwareGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.0,"requiredNumSnapshots":1},"status":"ready"},{"name":"ReplicaCapacityGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.0,"requiredNumSnapshots":1},"status":"ready"},{"name":"DiskCapacityGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"NetworkInboundCapacityGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"NetworkOutboundCapacityGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"CpuCapacityGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"ReplicaDistributionGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.0,"requiredNumSnapshots":1},"status":"ready"},{"name":"PotentialNwOutGoal","modelCompleteRequirement":{"includeAllTopics":false,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"DiskUsageDistributionGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"NetworkInboundUsageDistributionGoal","modelCompleteRequirement":{"includeAllTopics":false,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"NetworkOutboundUsageDistributionGoal","modelCompleteRequirement":{"includeAllTopics":false,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"CpuUsageDistributionGoal","modelCompleteRequirement":{"includeAllTopics":false,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"},{"name":"TopicReplicaDistributionGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.0,"requiredNumSnapshots":1},"status":"ready"},{"name":"LeaderReplicaDistributionGoal","modelCompleteRequirement":{"includeAllTopics":true,"minMonitoredPartitionsPercentage":0.0,"requiredNumSnapshots":1},"status":"ready"},{"name":"LeaderBytesInDistributionGoal","modelCompleteRequirement":{"includeAllTopics":false,"minMonitoredPartitionsPercentage":0.995,"requiredNumSnapshots":1},"status":"ready"}]},"MonitorState":{"trainingPct":4.199999999999999,"trained":false,"numFlawedPartitions":0,"monitoredWindows":{"1579713600000":1.0},"state":"RUNNING","numTotalPartitions":65,"numMonitoredWindows":1,"monitoringCoveragePct":100.0,"reasonOfLatestPauseOrResume":"N/A","numValidPartitions":65},"ExecutorState":{"state":"NO_TASK_IN_PROGRESS"},"AnomalyDetectorState":{"recentBrokerFailures":[],"recentGoalViolations":[],"selfHealingDisabled":["BROKER_FAILURE","DISK_FAILURE","GOAL_VIOLATION","METRIC_ANOMALY"],"balancednessScore":100.0,"selfHealingEnabled":[],"recentDiskFailures":[],"metrics":{"meanTimeToStartFixMs":0.0,"numSelfHealingStarted":0,"ongoingAnomalyDurationMs":0,"meanTimeBetweenAnomaliesMs":{"GOAL_VIOLATION":0.0,"METRIC_ANOMALY":0.0,"BROKER_FAILURE":0.0,"DISK_FAILURE":0.0}},"recentMetricAnomalies":[],"selfHealingEnabledRatio":{"BROKER_FAILURE":0.0,"DISK_FAILURE":0.0,"GOAL_VIOLATION":0.0,"METRIC_ANOMALY":0.0}},"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State.json deleted file mode 100644 index 679036a970c..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-State.json +++ /dev/null @@ -1 +0,0 @@ -{"AnalyzerState":{"isProposalReady":true,"readyGoals":["NetworkInboundUsageDistributionGoal","CpuUsageDistributionGoal","PotentialNwOutGoal","LeaderReplicaDistributionGoal","NetworkInboundCapacityGoal","LeaderBytesInDistributionGoal","DiskCapacityGoal","ReplicaDistributionGoal","RackAwareGoal","TopicReplicaDistributionGoal","NetworkOutboundCapacityGoal","CpuCapacityGoal","DiskUsageDistributionGoal","NetworkOutboundUsageDistributionGoal","ReplicaCapacityGoal"]},"MonitorState":{"trainingPct":3.5999999999999996,"trained":false,"numFlawedPartitions":0,"state":"RUNNING","numTotalPartitions":65,"numMonitoredWindows":1,"monitoringCoveragePct":100.0,"reasonOfLatestPauseOrResume":"N/A","numValidPartitions":65},"ExecutorState":{"state":"NO_TASK_IN_PROGRESS"},"AnomalyDetectorState":{"recentBrokerFailures":[],"recentGoalViolations":[],"selfHealingDisabled":["BROKER_FAILURE","DISK_FAILURE","GOAL_VIOLATION","METRIC_ANOMALY"],"balancednessScore":100.0,"selfHealingEnabled":[],"recentDiskFailures":[],"metrics":{"meanTimeToStartFixMs":0.0,"numSelfHealingStarted":0,"ongoingAnomalyDurationMs":0,"meanTimeBetweenAnomaliesMs":{"GOAL_VIOLATION":0.0,"METRIC_ANOMALY":0.0,"BROKER_FAILURE":0.0,"DISK_FAILURE":0.0}},"recentMetricAnomalies":[],"selfHealingEnabledRatio":{"BROKER_FAILURE":0.0,"DISK_FAILURE":0.0,"GOAL_VIOLATION":0.0,"METRIC_ANOMALY":0.0}},"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Stop.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Stop.json deleted file mode 100644 index 683fc1c5780..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-Stop.json +++ /dev/null @@ -1 +0,0 @@ -{"message":"Proposal execution stopped.","version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-Active.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-Active.json deleted file mode 100644 index 3e464f55bc1..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-Active.json +++ /dev/null @@ -1 +0,0 @@ -{"userTasks":[{"Status":"Active","UserTaskId":"rebalance-no-goals-response","StartMs":"1579874383374"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-completed.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-completed.json deleted file mode 100644 index 252a432c1b7..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-completed.json +++ /dev/null @@ -1 +0,0 @@ -{"userTasks":[{"Status":"Completed","UserTaskId":"rebalance-no-goals-response","StartMs":"1579874383374","originalResponse":"{\"summary\":{\"numIntraBrokerReplicaMovements\":0,\"excludedBrokersForLeadership\":[],\"numReplicaMovements\":31,\"onDemandBalancednessScoreAfter\":84.08179174145127,\"onDemandBalancednessScoreBefore\":79.74705957325753,\"intraBrokerDataToMoveMB\":0,\"recentWindows\":1,\"dataToMoveMB\":0,\"monitoredPartitionsPercentage\":100.0,\"excludedTopics\":[],\"numLeaderMovements\":12,\"excludedBrokersForReplicaMove\":[]},\"goalSummary\":[{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"RackAwareGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"ReplicaCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"DiskCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"NetworkInboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"NetworkOutboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"CpuCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"ReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"PotentialNwOutGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.07681098514539705,\"replicas\":2.82842712474619,\"leaderReplicas\":0.4714045207910317,\"cpu\":0.1512113578562017,\"networkOutbound\":0.035589620946184876,\"networkInbound\":0.014820814776470369,\"topicReplicas\":3.456966485800899,\"potentialNwOut\":0.010094097216619516},\"MIN\":{\"disk\":1.2837018966674805,\"replicas\":39,\"leaderReplicas\":21,\"cpu\":0.038822758942842484,\"networkOutbound\":0.07294782251119614,\"networkInbound\":0.12725487351417542,\"topicReplicas\":0,\"potentialNwOut\":0.15867099165916443},\"MAX\":{\"disk\":1.446913719177246,\"replicas\":45,\"leaderReplicas\":22,\"cpu\":0.366836279630661,\"networkOutbound\":0.14882435277104378,\"networkInbound\":0.15871809422969818,\"topicReplicas\":26,\"potentialNwOut\":0.18010731786489487}}},\"goal\":\"DiskUsageDistributionGoal\",\"status\":\"FIXED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":1.247219128924647,\"cpu\":0.051785963153765435,\"networkOutbound\":0.037636609995347084,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":20,\"cpu\":0.1092967689037323,\"networkOutbound\":0.0619896724820137,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":23,\"cpu\":0.22588825225830078,\"networkOutbound\":0.15029301866889,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"NetworkInboundUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":10.873004286866726,\"cpu\":0.04113892400977573,\"networkOutbound\":0.007092096980852424,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":7,\"cpu\":0.1116761788725853,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.2092323899269104,\"networkOutbound\":0.10829527676105499,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"NetworkOutboundUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"CpuUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"TopicReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"LeaderReplicaDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"LeaderBytesInDistributionGoal\",\"status\":\"VIOLATED\"}],\"loadAfterOptimization\":{\"hosts\":[{\"FollowerNwInRate\":0.07708756253123283,\"Leaders\":3,\"DiskMB\":1.4570302963256836,\"PnwOutRate\":0.18177223950624466,\"NwOutRate\":0.1046846816316247,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.1997147500514984,\"Replicas\":40,\"LeaderNwInRate\":0.051832232624292374,\"DiskPct\":0.0014570302963256836},{\"FollowerNwInRate\":0.05859703570604324,\"Leaders\":29,\"DiskMB\":1.2767934799194336,\"PnwOutRate\":0.15764965116977692,\"NwOutRate\":0.09905261546373367,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.12119382619857788,\"Replicas\":44,\"LeaderNwInRate\":0.09905261546373367,\"DiskPct\":0.0012767934799194336},{\"FollowerNwInRate\":0.06632691621780396,\"Leaders\":33,\"DiskMB\":1.2810373306274414,\"PnwOutRate\":0.1580745130777359,\"NwOutRate\":0.09174759685993195,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.13859246671199799,\"Replicas\":45,\"LeaderNwInRate\":0.09174759685993195,\"DiskPct\":0.0012810373306274415}],\"brokers\":[{\"FollowerNwInRate\":0.07708756253123283,\"Leaders\":3,\"BrokerState\":\"ALIVE\",\"Broker\":0,\"DiskMB\":1.4570302963256836,\"PnwOutRate\":0.18177223950624466,\"NwOutRate\":0.1046846816316247,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.1997147500514984,\"Replicas\":40,\"LeaderNwInRate\":0.051832232624292374,\"DiskPct\":0.0014570302963256836},{\"FollowerNwInRate\":0.05859703570604324,\"Leaders\":29,\"BrokerState\":\"ALIVE\",\"Broker\":1,\"DiskMB\":1.2767934799194336,\"PnwOutRate\":0.15764965116977692,\"NwOutRate\":0.09905261546373367,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.12119382619857788,\"Replicas\":44,\"LeaderNwInRate\":0.09905261546373367,\"DiskPct\":0.0012767934799194336},{\"FollowerNwInRate\":0.06632691621780396,\"Leaders\":33,\"BrokerState\":\"ALIVE\",\"Broker\":2,\"DiskMB\":1.2810373306274414,\"PnwOutRate\":0.1580745130777359,\"NwOutRate\":0.09174759685993195,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.13859246671199799,\"Replicas\":45,\"LeaderNwInRate\":0.09174759685993195,\"DiskPct\":0.0012810373306274415}]},\"version\":1}","ClientIdentity":"127.0.0.1","RequestURL":"POST /kafkacruisecontrol/rebalance?json\u003dtrue\u0026dryrun\u003dtrue\u0026verbose\u003dfalse"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-inExecution.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-inExecution.json deleted file mode 100644 index 9f61d101057..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-inExecution.json +++ /dev/null @@ -1 +0,0 @@ -{"userTasks":[{"Status":"InExecution","UserTaskId":"rebalance-no-goals-response","StartMs":"1579874383374","originalResponse":"{\"summary\":{\"numIntraBrokerReplicaMovements\":0,\"excludedBrokersForLeadership\":[],\"numReplicaMovements\":31,\"onDemandBalancednessScoreAfter\":84.08179174145127,\"onDemandBalancednessScoreBefore\":79.74705957325753,\"intraBrokerDataToMoveMB\":0,\"recentWindows\":1,\"dataToMoveMB\":0,\"monitoredPartitionsPercentage\":100.0,\"excludedTopics\":[],\"numLeaderMovements\":12,\"excludedBrokersForReplicaMove\":[]},\"goalSummary\":[{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"RackAwareGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"ReplicaCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"DiskCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"NetworkInboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"NetworkOutboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"CpuCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"ReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213210105896},\"STD\":{\"disk\":0.34694767628028317,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.18846447280808576,\"networkOutbound\":0.04636594752775456,\"networkInbound\":0.018688794439493762,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.04353005198387323},\"MIN\":{\"disk\":1.071380615234375,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.018604980781674385,\"networkOutbound\":0.06258998811244965,\"networkInbound\":0.1324087679386139,\"topicReplicas\":0,\"potentialNwOut\":0.1324087679386139},\"MAX\":{\"disk\":1.8282928466796875,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.419691801071167,\"networkOutbound\":0.16396404057741165,\"networkInbound\":0.17446254193782806,\"topicReplicas\":22,\"potentialNwOut\":0.22731497883796692}}},\"goal\":\"PotentialNwOutGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.07681098514539705,\"replicas\":2.82842712474619,\"leaderReplicas\":0.4714045207910317,\"cpu\":0.1512113578562017,\"networkOutbound\":0.035589620946184876,\"networkInbound\":0.014820814776470369,\"topicReplicas\":3.456966485800899,\"potentialNwOut\":0.010094097216619516},\"MIN\":{\"disk\":1.2837018966674805,\"replicas\":39,\"leaderReplicas\":21,\"cpu\":0.038822758942842484,\"networkOutbound\":0.07294782251119614,\"networkInbound\":0.12725487351417542,\"topicReplicas\":0,\"potentialNwOut\":0.15867099165916443},\"MAX\":{\"disk\":1.446913719177246,\"replicas\":45,\"leaderReplicas\":22,\"cpu\":0.366836279630661,\"networkOutbound\":0.14882435277104378,\"networkInbound\":0.15871809422969818,\"topicReplicas\":26,\"potentialNwOut\":0.18010731786489487}}},\"goal\":\"DiskUsageDistributionGoal\",\"status\":\"FIXED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":1.247219128924647,\"cpu\":0.051785963153765435,\"networkOutbound\":0.037636609995347084,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":20,\"cpu\":0.1092967689037323,\"networkOutbound\":0.0619896724820137,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":23,\"cpu\":0.22588825225830078,\"networkOutbound\":0.15029301866889,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"NetworkInboundUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":10.873004286866726,\"cpu\":0.04113892400977573,\"networkOutbound\":0.007092096980852424,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":7,\"cpu\":0.1116761788725853,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.2092323899269104,\"networkOutbound\":0.10829527676105499,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"NetworkOutboundUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"CpuUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"TopicReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"LeaderReplicaDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.3382870356241863,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.1531670093536377,\"networkOutbound\":0.09849496682484944,\"networkInbound\":0.14821464816729227,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16583213458458582},\"STD\":{\"disk\":0.0839820379157583,\"replicas\":2.160246899469287,\"leaderReplicas\":13.299958228840001,\"cpu\":0.03367191657922694,\"networkOutbound\":0.0052962421532357275,\"networkInbound\":0.013644627397560654,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011272690764123348},\"MIN\":{\"disk\":1.2767934799194336,\"replicas\":40,\"leaderReplicas\":3,\"cpu\":0.12119382619857788,\"networkOutbound\":0.09174759685993195,\"networkInbound\":0.1289197951555252,\"topicReplicas\":0,\"potentialNwOut\":0.15764965116977692},\"MAX\":{\"disk\":1.4570302963256836,\"replicas\":45,\"leaderReplicas\":33,\"cpu\":0.1997147500514984,\"networkOutbound\":0.1046846816316247,\"networkInbound\":0.1580745130777359,\"topicReplicas\":27,\"potentialNwOut\":0.18177223950624466}}},\"goal\":\"LeaderBytesInDistributionGoal\",\"status\":\"VIOLATED\"}],\"loadAfterOptimization\":{\"hosts\":[{\"FollowerNwInRate\":0.07708756253123283,\"Leaders\":3,\"DiskMB\":1.4570302963256836,\"PnwOutRate\":0.18177223950624466,\"NwOutRate\":0.1046846816316247,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.1997147500514984,\"Replicas\":40,\"LeaderNwInRate\":0.051832232624292374,\"DiskPct\":0.0014570302963256836},{\"FollowerNwInRate\":0.05859703570604324,\"Leaders\":29,\"DiskMB\":1.2767934799194336,\"PnwOutRate\":0.15764965116977692,\"NwOutRate\":0.09905261546373367,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.12119382619857788,\"Replicas\":44,\"LeaderNwInRate\":0.09905261546373367,\"DiskPct\":0.0012767934799194336},{\"FollowerNwInRate\":0.06632691621780396,\"Leaders\":33,\"DiskMB\":1.2810373306274414,\"PnwOutRate\":0.1580745130777359,\"NwOutRate\":0.09174759685993195,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.13859246671199799,\"Replicas\":45,\"LeaderNwInRate\":0.09174759685993195,\"DiskPct\":0.0012810373306274415}],\"brokers\":[{\"FollowerNwInRate\":0.07708756253123283,\"Leaders\":3,\"BrokerState\":\"ALIVE\",\"Broker\":0,\"DiskMB\":1.4570302963256836,\"PnwOutRate\":0.18177223950624466,\"NwOutRate\":0.1046846816316247,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.1997147500514984,\"Replicas\":40,\"LeaderNwInRate\":0.051832232624292374,\"DiskPct\":0.0014570302963256836},{\"FollowerNwInRate\":0.05859703570604324,\"Leaders\":29,\"BrokerState\":\"ALIVE\",\"Broker\":1,\"DiskMB\":1.2767934799194336,\"PnwOutRate\":0.15764965116977692,\"NwOutRate\":0.09905261546373367,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.12119382619857788,\"Replicas\":44,\"LeaderNwInRate\":0.09905261546373367,\"DiskPct\":0.0012767934799194336},{\"FollowerNwInRate\":0.06632691621780396,\"Leaders\":33,\"BrokerState\":\"ALIVE\",\"Broker\":2,\"DiskMB\":1.2810373306274414,\"PnwOutRate\":0.1580745130777359,\"NwOutRate\":0.09174759685993195,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.13859246671199799,\"Replicas\":45,\"LeaderNwInRate\":0.09174759685993195,\"DiskPct\":0.0012810373306274415}]},\"version\":1}","ClientIdentity":"127.0.0.1","RequestURL":"POST /kafkacruisecontrol/rebalance?json\u003dtrue\u0026dryrun\u003dtrue\u0026verbose\u003dfalse"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-Active.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-Active.json deleted file mode 100644 index 63df142ebca..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-Active.json +++ /dev/null @@ -1 +0,0 @@ -{"userTasks":[{"Status":"Active","UserTaskId":"rebalance-no-goals-verbose-response","StartMs":"1579874383374"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-completed.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-completed.json deleted file mode 100644 index 444c9445b50..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-completed.json +++ /dev/null @@ -1 +0,0 @@ -{"userTasks":[{"Status":"Completed","UserTaskId":"rebalance-no-goals-verbose-response","StartMs":"1579874949798","originalResponse":"{\"summary\":{\"numIntraBrokerReplicaMovements\":0,\"excludedBrokersForLeadership\":[],\"numReplicaMovements\":19,\"onDemandBalancednessScoreAfter\":87.66421502095022,\"onDemandBalancednessScoreBefore\":79.74705957325753,\"intraBrokerDataToMoveMB\":0,\"recentWindows\":1,\"dataToMoveMB\":0,\"monitoredPartitionsPercentage\":100.0,\"excludedTopics\":[],\"numLeaderMovements\":21,\"excludedBrokersForReplicaMove\":[]},\"proposals\":[{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535008712,\"partition\":26,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535008898,\"partition\":20,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535009084,\"partition\":14,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132640,\"partition\":9,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132919,\"partition\":0,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132826,\"partition\":3,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535009022,\"partition\":16,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132051,\"partition\":28,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132454,\"partition\":15,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132733,\"partition\":6,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535008681,\"partition\":27,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535009394,\"partition\":4,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132423,\"partition\":16,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":1},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132237,\"partition\":22,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535009518,\"partition\":0,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[2,1],\"topicPartition\":{\"hash\":-2093132485,\"partition\":14,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":2},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132268,\"partition\":21,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132547,\"partition\":12,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535009146,\"partition\":12,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132175,\"partition\":24,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535008836,\"partition\":22,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535008774,\"partition\":24,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132082,\"partition\":27,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535009053,\"partition\":15,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132361,\"partition\":18,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093131989,\"partition\":30,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535009425,\"partition\":3,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[2,1],\"topicPartition\":{\"hash\":-2093132671,\"partition\":8,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":2},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-2093132764,\"partition\":5,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535008960,\"partition\":18,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535009239,\"partition\":9,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535009332,\"partition\":6,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-2093132578,\"partition\":11,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132795,\"partition\":4,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":1},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535009208,\"partition\":10,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535008588,\"partition\":30,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535008867,\"partition\":21,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535009270,\"partition\":8,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132609,\"partition\":10,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":1},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535009456,\"partition\":2,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2}],\"loadBeforeOptimization\":{\"hosts\":[{\"FollowerNwInRate\":0.06354837119579315,\"Leaders\":23,\"DiskMB\":1.9233150482177734,\"PnwOutRate\":0.2267979085445404,\"NwOutRate\":0.16324952989816666,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.37949633598327637,\"Replicas\":44,\"LeaderNwInRate\":0.11040031909942627,\"DiskPct\":0.0019233150482177734},{\"FollowerNwInRate\":0.06826946139335632,\"Leaders\":22,\"DiskMB\":1.1729974746704102,\"PnwOutRate\":0.1381157636642456,\"NwOutRate\":0.06984630227088928,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.01914038509130478,\"Replicas\":43,\"LeaderNwInRate\":0.06984630227088928,\"DiskPct\":0.0011729974746704102},{\"FollowerNwInRate\":0.06978311762213707,\"Leaders\":20,\"DiskMB\":1.127202033996582,\"PnwOutRate\":0.13176019489765167,\"NwOutRate\":0.0619770772755146,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.016685860231518745,\"Replicas\":42,\"LeaderNwInRate\":0.0619770772755146,\"DiskPct\":0.0011272020339965821}],\"brokers\":[{\"FollowerNwInRate\":0.06354837119579315,\"Leaders\":23,\"BrokerState\":\"ALIVE\",\"Broker\":0,\"DiskMB\":1.9233150482177734,\"PnwOutRate\":0.2267979085445404,\"NwOutRate\":0.16324952989816666,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.37949633598327637,\"Replicas\":44,\"LeaderNwInRate\":0.11040031909942627,\"DiskPct\":0.0019233150482177734},{\"FollowerNwInRate\":0.06826946139335632,\"Leaders\":22,\"BrokerState\":\"ALIVE\",\"Broker\":1,\"DiskMB\":1.1729974746704102,\"PnwOutRate\":0.1381157636642456,\"NwOutRate\":0.06984630227088928,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.01914038509130478,\"Replicas\":43,\"LeaderNwInRate\":0.06984630227088928,\"DiskPct\":0.0011729974746704102},{\"FollowerNwInRate\":0.06978311762213707,\"Leaders\":20,\"BrokerState\":\"ALIVE\",\"Broker\":2,\"DiskMB\":1.127202033996582,\"PnwOutRate\":0.13176019489765167,\"NwOutRate\":0.0619770772755146,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.016685860231518745,\"Replicas\":42,\"LeaderNwInRate\":0.0619770772755146,\"DiskPct\":0.0011272020339965821}]},\"goalSummary\":[{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"RackAwareGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"ReplicaCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"DiskCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"NetworkInboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"NetworkOutboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"CpuCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"ReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"PotentialNwOutGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795321861902},\"STD\":{\"disk\":0.08102917447088125,\"replicas\":2.943920288775949,\"leaderReplicas\":0.9428090415820634,\"cpu\":0.13623909868422068,\"networkOutbound\":0.034585760987320004,\"networkInbound\":0.014784541073763445,\"topicReplicas\":3.4901380514202214,\"potentialNwOut\":0.010205221426926758},\"MIN\":{\"disk\":1.344813346862793,\"replicas\":39,\"leaderReplicas\":21,\"cpu\":0.03532284498214722,\"networkOutbound\":0.07242386788129807,\"networkInbound\":0.1270771473646164,\"topicReplicas\":0,\"potentialNwOut\":0.15719836950302124},\"MAX\":{\"disk\":1.522233009338379,\"replicas\":46,\"leaderReplicas\":23,\"cpu\":0.33094894886016846,\"networkOutbound\":0.14723889157176018,\"networkInbound\":0.15954913198947906,\"topicReplicas\":26,\"potentialNwOut\":0.17992635816335678}}},\"goal\":\"DiskUsageDistributionGoal\",\"status\":\"FIXED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":3.0912061651652345,\"cpu\":0.16117079877219728,\"networkOutbound\":0.04415480011505807,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":19,\"cpu\":0.016284657642245293,\"networkOutbound\":0.06686002761125565,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":26,\"cpu\":0.36616960167884827,\"networkOutbound\":0.16080114245414734,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"NetworkInboundUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":6.944222218666553,\"cpu\":0.06713655515670224,\"networkOutbound\":0.0026546728918540458,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":12,\"cpu\":0.08291831612586975,\"networkOutbound\":0.09591187536716461,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":28,\"cpu\":0.23290228843688965,\"networkOutbound\":0.10204722080379725,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"NetworkOutboundUsageDistributionGoal\",\"status\":\"FIXED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"CpuUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"TopicReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"LeaderReplicaDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"LeaderBytesInDistributionGoal\",\"status\":\"VIOLATED\"}],\"loadAfterOptimization\":{\"hosts\":[{\"FollowerNwInRate\":0.08764694258570671,\"Leaders\":1,\"DiskMB\":1.5295181274414062,\"PnwOutRate\":0.1811188980937004,\"NwOutRate\":0.093471959233284,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.21230719983577728,\"Replicas\":40,\"LeaderNwInRate\":0.04062274470925331,\"DiskPct\":0.0015295181274414063},{\"FollowerNwInRate\":0.05857257544994354,\"Leaders\":30,\"DiskMB\":1.349588394165039,\"PnwOutRate\":0.15838229656219482,\"NwOutRate\":0.09980972111225128,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.09227972477674484,\"Replicas\":45,\"LeaderNwInRate\":0.09980972111225128,\"DiskPct\":0.001349588394165039},{\"FollowerNwInRate\":0.055381447076797485,\"Leaders\":34,\"DiskMB\":1.3444080352783203,\"PnwOutRate\":0.15717267990112305,\"NwOutRate\":0.10179123282432556,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.11073566973209381,\"Replicas\":44,\"LeaderNwInRate\":0.10179123282432556,\"DiskPct\":0.0013444080352783203}],\"brokers\":[{\"FollowerNwInRate\":0.08764694258570671,\"Leaders\":1,\"BrokerState\":\"ALIVE\",\"Broker\":0,\"DiskMB\":1.5295181274414062,\"PnwOutRate\":0.1811188980937004,\"NwOutRate\":0.093471959233284,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.21230719983577728,\"Replicas\":40,\"LeaderNwInRate\":0.04062274470925331,\"DiskPct\":0.0015295181274414063},{\"FollowerNwInRate\":0.05857257544994354,\"Leaders\":30,\"BrokerState\":\"ALIVE\",\"Broker\":1,\"DiskMB\":1.349588394165039,\"PnwOutRate\":0.15838229656219482,\"NwOutRate\":0.09980972111225128,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.09227972477674484,\"Replicas\":45,\"LeaderNwInRate\":0.09980972111225128,\"DiskPct\":0.001349588394165039},{\"FollowerNwInRate\":0.055381447076797485,\"Leaders\":34,\"BrokerState\":\"ALIVE\",\"Broker\":2,\"DiskMB\":1.3444080352783203,\"PnwOutRate\":0.15717267990112305,\"NwOutRate\":0.10179123282432556,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.11073566973209381,\"Replicas\":44,\"LeaderNwInRate\":0.10179123282432556,\"DiskPct\":0.0013444080352783203}]},\"version\":1}","ClientIdentity":"127.0.0.1","RequestURL":"POST /kafkacruisecontrol/rebalance?json\u003dtrue\u0026dryrun\u003dtrue\u0026verbose\u003dtrue"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-inExecution.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-inExecution.json deleted file mode 100644 index a2424ee02d3..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-rebalance-no-goals-verbose-inExecution.json +++ /dev/null @@ -1 +0,0 @@ -{"userTasks":[{"Status":"InExecution","UserTaskId":"rebalance-no-goals-verbose-response","StartMs":"1579874949798","originalResponse":"{\"summary\":{\"numIntraBrokerReplicaMovements\":0,\"excludedBrokersForLeadership\":[],\"numReplicaMovements\":19,\"onDemandBalancednessScoreAfter\":87.66421502095022,\"onDemandBalancednessScoreBefore\":79.74705957325753,\"intraBrokerDataToMoveMB\":0,\"recentWindows\":1,\"dataToMoveMB\":0,\"monitoredPartitionsPercentage\":100.0,\"excludedTopics\":[],\"numLeaderMovements\":21,\"excludedBrokersForReplicaMove\":[]},\"proposals\":[{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535008712,\"partition\":26,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535008898,\"partition\":20,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535009084,\"partition\":14,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132640,\"partition\":9,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132919,\"partition\":0,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132826,\"partition\":3,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535009022,\"partition\":16,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132051,\"partition\":28,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132454,\"partition\":15,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132733,\"partition\":6,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535008681,\"partition\":27,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535009394,\"partition\":4,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132423,\"partition\":16,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":1},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132237,\"partition\":22,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535009518,\"partition\":0,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[2,1],\"topicPartition\":{\"hash\":-2093132485,\"partition\":14,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":2},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132268,\"partition\":21,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132547,\"partition\":12,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535009146,\"partition\":12,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132175,\"partition\":24,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535008836,\"partition\":22,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535008774,\"partition\":24,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-2093132082,\"partition\":27,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535009053,\"partition\":15,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093132361,\"partition\":18,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-2093131989,\"partition\":30,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535009425,\"partition\":3,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[2,1],\"topicPartition\":{\"hash\":-2093132671,\"partition\":8,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[1,0],\"oldLeader\":2},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-2093132764,\"partition\":5,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535008960,\"partition\":18,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535009239,\"partition\":9,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535009332,\"partition\":6,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-2093132578,\"partition\":11,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132795,\"partition\":4,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":1},{\"oldReplicas\":[1,0],\"topicPartition\":{\"hash\":-1535009208,\"partition\":10,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,2],\"oldLeader\":1},{\"oldReplicas\":[0,1],\"topicPartition\":{\"hash\":-1535008588,\"partition\":30,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[1,0],\"oldLeader\":0},{\"oldReplicas\":[0,2],\"topicPartition\":{\"hash\":-1535008867,\"partition\":21,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,0],\"oldLeader\":0},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535009270,\"partition\":8,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2},{\"oldReplicas\":[1,2],\"topicPartition\":{\"hash\":-2093132609,\"partition\":10,\"topic\":\"__KafkaCruiseControlModelTrainingSamples\"},\"newReplicas\":[2,0],\"oldLeader\":1},{\"oldReplicas\":[2,0],\"topicPartition\":{\"hash\":-1535009456,\"partition\":2,\"topic\":\"__KafkaCruiseControlPartitionMetricSamples\"},\"newReplicas\":[2,1],\"oldLeader\":2}],\"loadBeforeOptimization\":{\"hosts\":[{\"FollowerNwInRate\":0.06354837119579315,\"Leaders\":23,\"DiskMB\":1.9233150482177734,\"PnwOutRate\":0.2267979085445404,\"NwOutRate\":0.16324952989816666,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.37949633598327637,\"Replicas\":44,\"LeaderNwInRate\":0.11040031909942627,\"DiskPct\":0.0019233150482177734},{\"FollowerNwInRate\":0.06826946139335632,\"Leaders\":22,\"DiskMB\":1.1729974746704102,\"PnwOutRate\":0.1381157636642456,\"NwOutRate\":0.06984630227088928,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.01914038509130478,\"Replicas\":43,\"LeaderNwInRate\":0.06984630227088928,\"DiskPct\":0.0011729974746704102},{\"FollowerNwInRate\":0.06978311762213707,\"Leaders\":20,\"DiskMB\":1.127202033996582,\"PnwOutRate\":0.13176019489765167,\"NwOutRate\":0.0619770772755146,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.016685860231518745,\"Replicas\":42,\"LeaderNwInRate\":0.0619770772755146,\"DiskPct\":0.0011272020339965821}],\"brokers\":[{\"FollowerNwInRate\":0.06354837119579315,\"Leaders\":23,\"BrokerState\":\"ALIVE\",\"Broker\":0,\"DiskMB\":1.9233150482177734,\"PnwOutRate\":0.2267979085445404,\"NwOutRate\":0.16324952989816666,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.37949633598327637,\"Replicas\":44,\"LeaderNwInRate\":0.11040031909942627,\"DiskPct\":0.0019233150482177734},{\"FollowerNwInRate\":0.06826946139335632,\"Leaders\":22,\"BrokerState\":\"ALIVE\",\"Broker\":1,\"DiskMB\":1.1729974746704102,\"PnwOutRate\":0.1381157636642456,\"NwOutRate\":0.06984630227088928,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.01914038509130478,\"Replicas\":43,\"LeaderNwInRate\":0.06984630227088928,\"DiskPct\":0.0011729974746704102},{\"FollowerNwInRate\":0.06978311762213707,\"Leaders\":20,\"BrokerState\":\"ALIVE\",\"Broker\":2,\"DiskMB\":1.127202033996582,\"PnwOutRate\":0.13176019489765167,\"NwOutRate\":0.0619770772755146,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.016685860231518745,\"Replicas\":42,\"LeaderNwInRate\":0.0619770772755146,\"DiskPct\":0.0011272020339965821}]},\"goalSummary\":[{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"RackAwareGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"ReplicaCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"DiskCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"NetworkInboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"NetworkOutboundCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"CpuCapacityGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"ReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.1655579557021459},\"STD\":{\"disk\":0.36497634854464867,\"replicas\":0.816496580927726,\"leaderReplicas\":1.247219128924647,\"cpu\":0.170454906826397,\"networkOutbound\":0.04599782276662444,\"networkInbound\":0.018571965220006714,\"topicReplicas\":0.4714045207910316,\"potentialNwOut\":0.043380849704992744},\"MIN\":{\"disk\":1.127202033996582,\"replicas\":42,\"leaderReplicas\":20,\"cpu\":0.016685860231518745,\"networkOutbound\":0.0619770772755146,\"networkInbound\":0.13176019489765167,\"topicReplicas\":0,\"potentialNwOut\":0.13176019489765167},\"MAX\":{\"disk\":1.9233150482177734,\"replicas\":44,\"leaderReplicas\":23,\"cpu\":0.37949633598327637,\"networkOutbound\":0.16324952989816666,\"networkInbound\":0.17394869029521942,\"topicReplicas\":22,\"potentialNwOut\":0.2267979085445404}}},\"goal\":\"PotentialNwOutGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795321861902},\"STD\":{\"disk\":0.08102917447088125,\"replicas\":2.943920288775949,\"leaderReplicas\":0.9428090415820634,\"cpu\":0.13623909868422068,\"networkOutbound\":0.034585760987320004,\"networkInbound\":0.014784541073763445,\"topicReplicas\":3.4901380514202214,\"potentialNwOut\":0.010205221426926758},\"MIN\":{\"disk\":1.344813346862793,\"replicas\":39,\"leaderReplicas\":21,\"cpu\":0.03532284498214722,\"networkOutbound\":0.07242386788129807,\"networkInbound\":0.1270771473646164,\"topicReplicas\":0,\"potentialNwOut\":0.15719836950302124},\"MAX\":{\"disk\":1.522233009338379,\"replicas\":46,\"leaderReplicas\":23,\"cpu\":0.33094894886016846,\"networkOutbound\":0.14723889157176018,\"networkInbound\":0.15954913198947906,\"topicReplicas\":26,\"potentialNwOut\":0.17992635816335678}}},\"goal\":\"DiskUsageDistributionGoal\",\"status\":\"FIXED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":3.0912061651652345,\"cpu\":0.16117079877219728,\"networkOutbound\":0.04415480011505807,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":19,\"cpu\":0.016284657642245293,\"networkOutbound\":0.06686002761125565,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":26,\"cpu\":0.36616960167884827,\"networkOutbound\":0.16080114245414734,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"NetworkInboundUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":6.944222218666553,\"cpu\":0.06713655515670224,\"networkOutbound\":0.0026546728918540458,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":12,\"cpu\":0.08291831612586975,\"networkOutbound\":0.09591187536716461,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":28,\"cpu\":0.23290228843688965,\"networkOutbound\":0.10204722080379725,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"NetworkOutboundUsageDistributionGoal\",\"status\":\"FIXED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"CpuUsageDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"TopicReplicaDistributionGoal\",\"status\":\"NO-ACTION\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"LeaderReplicaDistributionGoal\",\"status\":\"VIOLATED\"},{\"clusterModelStats\":{\"metadata\":{\"brokers\":3,\"replicas\":129,\"topics\":3},\"statistics\":{\"AVG\":{\"disk\":1.4078381856282551,\"replicas\":43.0,\"leaderReplicas\":21.666666666666668,\"cpu\":0.13844085733095804,\"networkOutbound\":0.09835763772328694,\"networkInbound\":0.1479415496190389,\"topicReplicas\":14.333333333333334,\"potentialNwOut\":0.16555795818567276},\"STD\":{\"disk\":0.08606669975194692,\"replicas\":2.1602468994692865,\"leaderReplicas\":14.704496666741852,\"cpu\":0.05277203847245612,\"networkOutbound\":0.0035481439182601764,\"networkInbound\":0.013918873641131368,\"topicReplicas\":3.6995832676878884,\"potentialNwOut\":0.011014321925947788},\"MIN\":{\"disk\":1.3444080352783203,\"replicas\":40,\"leaderReplicas\":1,\"cpu\":0.09227972477674484,\"networkOutbound\":0.093471959233284,\"networkInbound\":0.12826968729496002,\"topicReplicas\":0,\"potentialNwOut\":0.15717267990112305},\"MAX\":{\"disk\":1.5295181274414062,\"replicas\":45,\"leaderReplicas\":34,\"cpu\":0.21230719983577728,\"networkOutbound\":0.10179123282432556,\"networkInbound\":0.15838229656219482,\"topicReplicas\":27,\"potentialNwOut\":0.1811188980937004}}},\"goal\":\"LeaderBytesInDistributionGoal\",\"status\":\"VIOLATED\"}],\"loadAfterOptimization\":{\"hosts\":[{\"FollowerNwInRate\":0.08764694258570671,\"Leaders\":1,\"DiskMB\":1.5295181274414062,\"PnwOutRate\":0.1811188980937004,\"NwOutRate\":0.093471959233284,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.21230719983577728,\"Replicas\":40,\"LeaderNwInRate\":0.04062274470925331,\"DiskPct\":0.0015295181274414063},{\"FollowerNwInRate\":0.05857257544994354,\"Leaders\":30,\"DiskMB\":1.349588394165039,\"PnwOutRate\":0.15838229656219482,\"NwOutRate\":0.09980972111225128,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.09227972477674484,\"Replicas\":45,\"LeaderNwInRate\":0.09980972111225128,\"DiskPct\":0.001349588394165039},{\"FollowerNwInRate\":0.055381447076797485,\"Leaders\":34,\"DiskMB\":1.3444080352783203,\"PnwOutRate\":0.15717267990112305,\"NwOutRate\":0.10179123282432556,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.11073566973209381,\"Replicas\":44,\"LeaderNwInRate\":0.10179123282432556,\"DiskPct\":0.0013444080352783203}],\"brokers\":[{\"FollowerNwInRate\":0.08764694258570671,\"Leaders\":1,\"BrokerState\":\"ALIVE\",\"Broker\":0,\"DiskMB\":1.5295181274414062,\"PnwOutRate\":0.1811188980937004,\"NwOutRate\":0.093471959233284,\"Host\":\"my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.21230719983577728,\"Replicas\":40,\"LeaderNwInRate\":0.04062274470925331,\"DiskPct\":0.0015295181274414063},{\"FollowerNwInRate\":0.05857257544994354,\"Leaders\":30,\"BrokerState\":\"ALIVE\",\"Broker\":1,\"DiskMB\":1.349588394165039,\"PnwOutRate\":0.15838229656219482,\"NwOutRate\":0.09980972111225128,\"Host\":\"my-cluster-kafka-1.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.09227972477674484,\"Replicas\":45,\"LeaderNwInRate\":0.09980972111225128,\"DiskPct\":0.001349588394165039},{\"FollowerNwInRate\":0.055381447076797485,\"Leaders\":34,\"BrokerState\":\"ALIVE\",\"Broker\":2,\"DiskMB\":1.3444080352783203,\"PnwOutRate\":0.15717267990112305,\"NwOutRate\":0.10179123282432556,\"Host\":\"my-cluster-kafka-2.my-cluster-kafka-brokers.myproject.svc\",\"CpuPct\":0.11073566973209381,\"Replicas\":44,\"LeaderNwInRate\":0.10179123282432556,\"DiskPct\":0.0013444080352783203}]},\"version\":1}","ClientIdentity":"127.0.0.1","RequestURL":"POST /kafkacruisecontrol/rebalance?json\u003dtrue\u0026dryrun\u003dtrue\u0026verbose\u003dtrue"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-completed-with-error.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-completed-with-error.json deleted file mode 100644 index 8fe652dd9e9..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-completed-with-error.json +++ /dev/null @@ -1 +0,0 @@ -{"userTasks":[{"Status":"CompletedWithError","UserTaskId":"8a2538a5-f2c3-4df0-9240-fe1248d03002","StartMs":"1591625671598","originalResponse":"COMPLETED_WITH_ERROR","ClientIdentity":"127.0.0.1","RequestURL":"POST /kafkacruisecontrol/rebalance?dryrun\u003dtroo"}],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-empty.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-empty.json deleted file mode 100644 index 5a56d5ce91d..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-empty.json +++ /dev/null @@ -1 +0,0 @@ -{"userTasks":[],"version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-fetch-error.json b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-fetch-error.json deleted file mode 100644 index 8d98307e6ef..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/CruiseControlJSON/CC-User-task-status-fetch-error.json +++ /dev/null @@ -1 +0,0 @@ -{"errorMessage":"Error processing GET request \u0027/user_tasks\u0027 due to: \u0027Error happened in fetching response for task 9730e4fb-ea41-4e2d-b053-9be2310589b5\u0027.","stackTrace":"java.lang.IllegalStateException: Error happened in fetching response for task 9730e4fb-ea41-4e2d-b053-9be2310589b5\n\tat com.linkedin.kafka.cruisecontrol.servlet.UserTaskManager$UserTaskInfo.getJsonStructure(UserTaskManager.java:768)\n\tat com.linkedin.kafka.cruisecontrol.servlet.response.UserTaskState.getJSONString(UserTaskState.java:47)\n\tat com.linkedin.kafka.cruisecontrol.servlet.response.UserTaskState.discardIrrelevantAndCacheRelevant(UserTaskState.java:179)\n\tat com.linkedin.kafka.cruisecontrol.servlet.response.AbstractCruiseControlResponse.discardIrrelevantResponse(AbstractCruiseControlResponse.java:41)\n\tat com.linkedin.kafka.cruisecontrol.servlet.response.AbstractCruiseControlResponse.writeSuccessResponse(AbstractCruiseControlResponse.java:34)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.AbstractRequest.handle(AbstractRequest.java:41)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.handleGet(KafkaCruiseControlServlet.java:170)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doGetOrPost(KafkaCruiseControlServlet.java:120)\n\tat com.linkedin.kafka.cruisecontrol.servlet.KafkaCruiseControlServlet.doGet(KafkaCruiseControlServlet.java:97)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:687)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:547)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1607)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1297)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1577)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1212)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:500)\n\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)\n\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.concurrent.ExecutionException: Operation \u0027Rebalance\u0027 received exception. com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1588169877556] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d3555, granularity\u003dENTITY)\n\tat java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)\n\tat java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.OperationFuture.get(OperationFuture.java:49)\n\tat com.linkedin.kafka.cruisecontrol.servlet.UserTaskManager$UserTaskInfo.getJsonStructure(UserTaskManager.java:766)\n\t... 39 more\nCaused by: com.linkedin.kafka.cruisecontrol.exception.KafkaCruiseControlException: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1588169877556] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d3555, granularity\u003dENTITY)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:132)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.workWithoutClusterModel(RebalanceRunnable.java:121)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:137)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.getResult(RebalanceRunnable.java:94)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.RebalanceRunnable.getResult(RebalanceRunnable.java:30)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.OperationRunnable.run(OperationRunnable.java:45)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.run(GoalBasedOperationRunnable.java:34)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\t... 1 more\nCaused by: com.linkedin.cruisecontrol.exception.NotEnoughValidWindowsException: There are only 0 valid windows when aggregating in range [-1, 1588169877556] for aggregation options (minValidEntityRatio\u003d1.00, minValidEntityGroupRatio\u003d0.00, minValidWindows\u003d1, numEntitiesToInclude\u003d3555, granularity\u003dENTITY)\n\tat com.linkedin.cruisecontrol.monitor.sampling.aggregator.MetricSampleAggregator.validateCompleteness(MetricSampleAggregator.java:540)\n\tat com.linkedin.cruisecontrol.monitor.sampling.aggregator.MetricSampleAggregator.aggregate(MetricSampleAggregator.java:212)\n\tat com.linkedin.kafka.cruisecontrol.monitor.sampling.aggregator.KafkaPartitionMetricSampleAggregator.aggregate(KafkaPartitionMetricSampleAggregator.java:151)\n\tat com.linkedin.kafka.cruisecontrol.monitor.LoadMonitor.clusterModel(LoadMonitor.java:499)\n\tat com.linkedin.kafka.cruisecontrol.KafkaCruiseControl.clusterModel(KafkaCruiseControl.java:301)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.ProposalsRunnable.workWithClusterModel(ProposalsRunnable.java:81)\n\tat com.linkedin.kafka.cruisecontrol.servlet.handler.async.runnable.GoalBasedOperationRunnable.computeResult(GoalBasedOperationRunnable.java:128)\n\t... 11 more\n","version":1} \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.crt b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.crt deleted file mode 100644 index a3bc16ab675..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.crt +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDKjCCAhKgAwIBAgIJAMWajM5VRrKCMA0GCSqGSIb3DQEBCwUAMCoxEzARBgNV -BAoMCnN0cmltemkuaW8xEzARBgNVBAMMCmNsaWVudHMtY2EwHhcNMTgxMDIzMTAw -MTI1WhcNMTgxMDI0MTAwMTI1WjAqMRMwEQYDVQQKDApzdHJpbXppLmlvMRMwEQYD -VQQDDApjbGllbnRzLWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -o/rpINfGbR6LQPacAKiGPYqRD6tUGeBnO3hCtCfcIBbbNT1n5FpYapl7914dKbx3 -QNihr+IyfSxoYB22Zva0GL6Pgub+J49qL3gb2mxTOv+8yj9iRunW3A2noiieq+3X -iIPoNJFwF60JvjLGKgBtlWiF33yxEGyMXD87fMp2vW3r5Iq9Ky+2bo0CBgF8Me6A -U4OTVkHSN7cY9Tob0yoHjxqMurDahpirxPDsouMMfn7OVHvB9yGMv6XZWTQImrcH -tGmdTPKEOzQxkw72TLO9FjxXii3B4QbgybYcue0lLsGzqSdoRlPofmLwdVE1YEch -pwPR9t5hTtUegtM/eEkosQIDAQABo1MwUTAdBgNVHQ4EFgQU6qjFM3TZMQfvTpla -/7CKxfPkK00wHwYDVR0jBBgwFoAU6qjFM3TZMQfvTpla/7CKxfPkK00wDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAVIq7voMSkMP52Pprr8iMUJkb -EtpwGxFLGnJG9VFwjdsl82T3Psmyph6s9gRjLN+QhUfxbwsdwQlBrloNVT8IXyIR -Vq9EJZ6rDqwNVj88Xb82PNTdIvdZoV7+MwJzamsZoxPfjxzstPZgdd1uEs2Dysyp -5KtgKUHBd/YhWKQoTSGcXZTaUftc6D/6AtpaW9qLmNhYgmeVF+4h7qAWwm0p1dEb -c2muyShLbaRekdyQ1gsYrCBsHsUEETw82ilEcC1CDcNEZiYcF6H+jDFaoMNo/qT0 -sxkfF2cnpFjKgRaeFhut+8kCavc//JT77aaoIvox3RjTpdWdI7ACSQzjVhnMJQ== ------END CERTIFICATE----- diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.key b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.key deleted file mode 100644 index 91c8647018c..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/clients-ca.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCj+ukg18ZtHotA -9pwAqIY9ipEPq1QZ4Gc7eEK0J9wgFts1PWfkWlhqmXv3Xh0pvHdA2KGv4jJ9LGhg -HbZm9rQYvo+C5v4nj2oveBvabFM6/7zKP2JG6dbcDaeiKJ6r7deIg+g0kXAXrQm+ -MsYqAG2VaIXffLEQbIxcPzt8yna9bevkir0rL7ZujQIGAXwx7oBTg5NWQdI3txj1 -OhvTKgePGoy6sNqGmKvE8Oyi4wx+fs5Ue8H3IYy/pdlZNAiatwe0aZ1M8oQ7NDGT -DvZMs70WPFeKLcHhBuDJthy57SUuwbOpJ2hGU+h+YvB1UTVgRyGnA9H23mFO1R6C -0z94SSixAgMBAAECggEAdd+5kVhKVMouA8bCIV8DEF35JLBdxjQfQQqTuHkmrRKB -BOZdNjMTd51ZFVpb0FKfzsdqgsowzPYNGXqCUcVpdJgXBVwSulFHXVQTgZF4yuJm -zWN+u8cAIjLWm6RjWueflYxscM1TLFHAvS42cJ7aJxp5kUtK5KmCxBTYKD5J2KRy -u/2rOmxFc4e0fqKIPeE4Wufi2Gu5BuM0I51iD/3S5Qe93iW3+PSuxkRmGDBtZ4Mm -6MHvqOrcn3WDl4KukPs0mSq6bON/iDb6YRzboMMpzcxxJ7OzEh/5cG/J5Z9SF7OC -MJr2rWPQS/FbdFifml627brXdhkpT6MZTUqMuACgAQKBgQDUQrO4NYJgWwMljh0d -8gKGcRUfpKpcdEvfFCVBEpDZdO60D77wFSXJGOS4KmtkzcJDfqhvyn7noju05c8X -+BeqU3KieaRe8ma7Gmtdc+PyaQv2Vqf+CeDXHNGwufgZzC1yig8Q8rjmYDuE/Izd -SUSKQrix609Ah0zORs0aYYWdAQKBgQDFxUosB8Dr36A0v6u6s/xrG8gSgj8rf20f -WHXM6OBfatpqxPGkuFlmqTRnhq4eIdPoGHm16DIQYdF14WaJhQ/zVf3W/r7sJuQe -pR2kiENngpAJRuKNpxKsTflJdsW8oPFiaPtIk5g9FDjrvVhCpD2LUJc3u5DewwJT -TBO9rNibsQKBgFwMtS2snua0cW/m6n+jBS9SeQuo+GxxzrlmXiWTLJfxWtdhgLdT -JHjKP94SH1Ku3JEyq08XrOM8+tGfW6kUYQbve2Y0hHDchGqdsXPsnyzwG0zwFZhY -plYDXHhcndhqMEdc0d3StRbLIuSwNVJ9xKiE+N3Hoy3jvw4xrB7FrhEBAoGAYfOL -//C7KVfx1g5UdL0uOLJizl/5/4Y2Or8qYRm5/yhCE32FnSq9BK6rSNcYp83jUWHF -7kWZfimkf3jquxPPSZr+hRxY3UeJ1m+7FcFzePHeeunDzZrBEdvwquULnJgt1arf -Qhvv29iHNKLr8t27qaN5sd3RK7N0FGNqp5fTFJECgYEApPrpX/wSvdOtj2fdzU3K -aEl55IgZWT9dtVPBeW+5Bmbgo0844cTav+m25etIYeYcXFSx+GvVppHCwM9+R+m8 -ZydUfhPqKhlVeBSVX0yo9eFqZivlbz5yqGQw4s0pWafZ/499I/jbUfKf1QjEXmX4 -RvCv25Ee4a9j4LcqbRQpAqk= ------END PRIVATE KEY----- diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.crt b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.crt deleted file mode 100644 index cf1d9a33b6f..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.crt +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDKjCCAhKgAwIBAgIJAJBt0u1FFTG+MA0GCSqGSIb3DQEBCwUAMCoxEzARBgNV -BAoMCnN0cmltemkuaW8xEzARBgNVBAMMCmNsdXN0ZXItY2EwHhcNMTgxMDIzMTAw -MTExWhcNMTgxMDI0MTAwMTExWjAqMRMwEQYDVQQKDApzdHJpbXppLmlvMRMwEQYD -VQQDDApjbHVzdGVyLWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -xpuYrNXYHqw3ajwd12aAeuTlAX4rVwVdPuIex6A4NL8J3d2DV+ngXgNTH//RhiF5 -If5KRWSsLei5BUIrwuQutOUNCQwyACmri9+yrx6+tevligiokAUwhHxcDHZpwC3T -+2dzk/BkI++vbSuvjFmBKGQi9gfyoTnStTEQ85KVJUS170hzwDjzaEiJsKpOPx/G -+KTdkAopLucoxr4sxhYeO4mQ2PkT0QL+R8Ohs6LD6v/bqalFP+rS8vibolfxjMNm -lXQCOd8UfXy8OEOaNoNCvhnn/cT/hbEG/ARbV3hHmUh9COV+TSV5dhsbmS5h4MKw -LzP449nGQBmLSkZMu984DQIDAQABo1MwUTAdBgNVHQ4EFgQUOXubcHBZJ7vSzjpi -pfXdFSP3dsEwHwYDVR0jBBgwFoAUOXubcHBZJ7vSzjpipfXdFSP3dsEwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAFFPGykbzUREDMzh+33i3a8TF -UTQnPMN/SuVbpLfQdpkpLO+aVWjVvJP6qMrI7jRO5zhj4MecAf7YKpe+dyRTTz9B -Dy9BZcujHYjCKdcKBnBFQ7B1xQm9tL1bw+a3ABzSTlhLiBcCxhJEawlWy1Gh18ab -3x/Kqnz0mk/jt5+n9HwlKHuBQVIxRCsfHWwq+WvIfoxM+N//akV8/29hLUf5TlYH -F5CX4G2pA5sSdaDHQ4ekQWuqM6tfvsGLl2KOmEFEgVR4GfaWI4BsUCzlpBNcCGWv -V7klZvBxQPG7MVy0cB8yzTDtUpR0jUFUkZOSp5Pr3yWcwPWEgWkaXYfO+FWETA== ------END CERTIFICATE----- diff --git a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.key b/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.key deleted file mode 100644 index e7fdcc47b0d..00000000000 --- a/cluster-operator/bin/src/test/resources/io/strimzi/operator/cluster/operator/assembly/cluster-ca.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDGm5is1dgerDdq -PB3XZoB65OUBfitXBV0+4h7HoDg0vwnd3YNX6eBeA1Mf/9GGIXkh/kpFZKwt6LkF -QivC5C605Q0JDDIAKauL37KvHr616+WKCKiQBTCEfFwMdmnALdP7Z3OT8GQj769t -K6+MWYEoZCL2B/KhOdK1MRDzkpUlRLXvSHPAOPNoSImwqk4/H8b4pN2QCiku5yjG -vizGFh47iZDY+RPRAv5Hw6GzosPq/9upqUU/6tLy+JuiV/GMw2aVdAI53xR9fLw4 -Q5o2g0K+Gef9xP+FsQb8BFtXeEeZSH0I5X5NJXl2GxuZLmHgwrAvM/jj2cZAGYtK -Rky73zgNAgMBAAECggEAI2xTIdiOUII07AzG4clVdxXmRorjXgUF6ZZZGQ/ZlobQ -UrMUnxSGwR3ksJtnGn5T5Z0+T/wxvYp5nZd8yKj8L6V+2rNDI8ZK44rFivh32Wi2 -qxT6Q525Vpf7rvlbyTwjR/7enW9N3R798gHNsMGyCKs7lRg7zUfL7idPN7JYSaoU -IdLeHhnwMKrqH/gcOedMzfG9Mi44ASqgXkCbw63JOLaDrTsnm2+HtNxuWyDr7RXe -59szAiTHAGxxtYNonDspJwVZivvsWAxsgJcMHz+p8+5R3cOPh0BIHDh7IeQ6+D5p -EcEX7mMOgPEv6dgnWB50M736U03E0WJJi0ltJn50QQKBgQDth07ssYnFBbJ9bWtW -6Od1rnkiWFkilyFiIuHbmMywq78wYWAIFrevcABi3agrgismiSsyt9+WeviKkHeG -ByCDNmlGXGCaV6Yv+/l/qjX2tsHSgETtksbX6zmgpLIuE84zftPjhZcDvhnkJGNO -apaWaAWlaMdImtGVf331uFu73QKBgQDWDXVKgICR0u+Ei47E1TvfM9HpmwDOijlV -3/UQlbLLqLg2YRDChZj3L80pbSeqkLHt1Zxi4OD21156i6/ihIY7vM+LkPvf7Avu -IeMFtrqOa1Z3vGmMr5LVw7WnIfT4gZ1jObuKc+rGUHEny96x8+NWuVuHNF+7k/+7 -gExTxi2B8QKBgGX9L1pacPl0FMvea7SJlLjnDYQ9wygjFGZ669fKqDlDxXgUl5Nh -jcV6pe/NlSP5ZGXLiAzi/tIyQv3cQjX+YWt1tYZMq/4ZnHYGD39NqpYgquCjyvTn -jRGxIrFjhk5amrNpxblv5wPoYF2hcjJ9eeNjDumTL95w+4ThlUgovNrRAoGAK/FL -WOYUfts8zIsR3hqgVev/deOaQMxjhNubJbJ1qBWU66T1mdlvU59+kLiV4hAeVuL5 -Xdsok8QW4zV2AByQqgbS3KYA7zE4KcTPJEck+UPT1nTZfkY08Kliy1LPRYzmUI5z -j7LISboN4MubhhC5ZP5cad84n/t8DnQCN1iB0yECgYBkIuCZhfgOvj5cQA6Y47+K -ssOpS8ERrbxhWoqzENfhrK7eK520QakZTk58nnVB5JdLCqVAtIqD6pWnV1X0uLa4 -TWq7WOxks1TZae4rfju2JWLhC1mp6eXn1uqoZwVJQVEHOf50NSbT5Y29cZyH/qGT -Lf56flsChim+cuSPAzAOEA== ------END PRIVATE KEY----- diff --git a/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-duplicates.yaml b/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-duplicates.yaml deleted file mode 100644 index 0fee55999bf..00000000000 --- a/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-duplicates.yaml +++ /dev/null @@ -1,62 +0,0 @@ -# This file is used to specify the versions of Kafka which will be built -# and supported by the Cluster Operator. It affects both compile time and runtime: -# * The docker images built (see docker-images/build.sh) -# * The KAFKA_IMAGE_MAP configuring the CO in the helm-charts (see helm-charts/kafka-version-tpl.sh) -# * The io.strimzi.operator.cluster.model.KafkaVersion's loaded at runtime -# * Documentation snippets generated by `make docu_versions` -# The idea is that this is the single place you need to update when changing the supported Kafka versions - -# Format of this file: -# is the kafka version number -# when `true` this is the version to be used by the CO by default when a `Kafka` resource lacks an explicit version. Only one Kafka version can be marked as default. -# is the default `inter.broker.protocol.version` used by this Kafka version -# is the default `log.message.format.version` used by this Kafka version -# is the remote (using prefix 'http://' or 'https://') or local (using prefix 'file://') address of the Kafka binary tar archive for this version of Kafka. When using a local file path the absolute path to the binary archive should be used. It is assumed in both cases that the name of the file forms the last section of the path. -# is the SHA512 checksum of the Kafka binary which is specified in the 'url' field. -# is the version of zookeeper required by this version of Kafka. -# is the version string for the third party libraries -# is a list of Strimzi features that are not supported by this Kafka version -# when `true` this version is currently supported by the operator. Unsupported versions are kept for historical reasons. - -- version: 1.0.0 - format: 1.0 - protocol: 1.0 - zookeeper: 3.4.13 - supported: false - default: false -- version: 1.1.0 - format: 1.1 - protocol: 1.1 - url: https://download.tld/kafka-1.1.0.tgz - checksum: DUMMYSHA512CHECKSUM110 - zookeeper: 3.5.7 - third-party-libs: 1.1x - supported: true - default: false -- version: 1.1.1 - format: 1.1 - protocol: 1.1 - url: https://download.tld/kafka-1.1.1.tgz - checksum: DUMMYSHA512CHECKSUM111 - zookeeper: 3.5.7 - third-party-libs: 1.1.x - supported: true - default: false -- version: 1.1.1 - format: 1.1 - protocol: 1.1 - url: https://download.tld/kafka-1.1.1.tgz - checksum: DUMMYSHA512CHECKSUM111 - zookeeper: 3.5.7 - third-party-libs: 1.1.x - supported: true - default: false -- version: 1.2.0 - format: 1.2 - protocol: 1.2 - url: https://download.tld/kafka-1.2.0.tgz - checksum: DUMMYSHA512CHECKSUM120 - zookeeper: 3.5.7 - third-party-libs: 1.2.x - supported: true - default: true \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-nodefault.yaml b/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-nodefault.yaml deleted file mode 100644 index f6fc055617b..00000000000 --- a/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-nodefault.yaml +++ /dev/null @@ -1,53 +0,0 @@ -# This file is used to specify the versions of Kafka which will be built -# and supported by the Cluster Operator. It affects both compile time and runtime: -# * The docker images built (see docker-images/build.sh) -# * The KAFKA_IMAGE_MAP configuring the CO in the helm-charts (see helm-charts/kafka-version-tpl.sh) -# * The io.strimzi.operator.cluster.model.KafkaVersion's loaded at runtime -# * Documentation snippets generated by `make docu_versions` -# The idea is that this is the single place you need to update when changing the supported Kafka versions - -# Format of this file: -# is the kafka version number -# when `true` this is the version to be used by the CO by default when a `Kafka` resource lacks an explicit version. Only one Kafka version can be marked as default. -# is the default `inter.broker.protocol.version` used by this Kafka version -# is the default `log.message.format.version` used by this Kafka version -# is the remote (using prefix 'http://' or 'https://') or local (using prefix 'file://') address of the Kafka binary tar archive for this version of Kafka. When using a local file path the absolute path to the binary archive should be used. It is assumed in both cases that the name of the file forms the last section of the path. -# is the SHA512 checksum of the Kafka binary which is specified in the 'url' field. -# is the version of zookeeper required by this version of Kafka. -# is the version string for the third party libraries -# is a list of Strimzi features that are not supported by this Kafka version -# when `true` this version is currently supported by the operator. Unsupported versions are kept for historical reasons. - -- version: 1.0.0 - format: 1.0 - protocol: 1.0 - zookeeper: 3.4.13 - supported: false - default: false -- version: 1.1.0 - format: 1.1 - protocol: 1.1 - url: https://download.tld/kafka-1.1.0.tgz - checksum: DUMMYSHA512CHECKSUM110 - zookeeper: 3.5.7 - third-party-libs: 1.1x - supported: true - default: false -- version: 1.1.1 - format: 1.1 - protocol: 1.1 - url: https://download.tld/kafka-1.1.1.tgz - checksum: DUMMYSHA512CHECKSUM111 - zookeeper: 3.5.7 - third-party-libs: 1.1.x - supported: true - default: false -- version: 1.2.0 - format: 1.2 - protocol: 1.2 - url: https://download.tld/kafka-1.2.0.tgz - checksum: DUMMYSHA512CHECKSUM120 - zookeeper: 3.5.7 - third-party-libs: 1.2.x - supported: true - default: false \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-twodefaults.yaml b/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-twodefaults.yaml deleted file mode 100644 index e200681342b..00000000000 --- a/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-twodefaults.yaml +++ /dev/null @@ -1,53 +0,0 @@ -# This file is used to specify the versions of Kafka which will be built -# and supported by the Cluster Operator. It affects both compile time and runtime: -# * The docker images built (see docker-images/build.sh) -# * The KAFKA_IMAGE_MAP configuring the CO in the helm-charts (see helm-charts/kafka-version-tpl.sh) -# * The io.strimzi.operator.cluster.model.KafkaVersion's loaded at runtime -# * Documentation snippets generated by `make docu_versions` -# The idea is that this is the single place you need to update when changing the supported Kafka versions - -# Format of this file: -# is the kafka version number -# when `true` this is the version to be used by the CO by default when a `Kafka` resource lacks an explicit version. Only one Kafka version can be marked as default. -# is the default `inter.broker.protocol.version` used by this Kafka version -# is the default `log.message.format.version` used by this Kafka version -# is the remote (using prefix 'http://' or 'https://') or local (using prefix 'file://') address of the Kafka binary tar archive for this version of Kafka. When using a local file path the absolute path to the binary archive should be used. It is assumed in both cases that the name of the file forms the last section of the path. -# is the SHA512 checksum of the Kafka binary which is specified in the 'url' field. -# is the version of zookeeper required by this version of Kafka. -# is the version string for the third party libraries -# is a list of Strimzi features that are not supported by this Kafka version -# when `true` this version is currently supported by the operator. Unsupported versions are kept for historical reasons. - -- version: 1.0.0 - format: 1.0 - protocol: 1.0 - zookeeper: 3.4.13 - supported: false - default: false -- version: 1.1.0 - format: 1.1 - protocol: 1.1 - url: https://download.tld/kafka-1.1.0.tgz - checksum: DUMMYSHA512CHECKSUM110 - zookeeper: 3.5.7 - third-party-libs: 1.1x - supported: true - default: false -- version: 1.1.1 - format: 1.1 - protocol: 1.1 - url: https://download.tld/kafka-1.1.1.tgz - checksum: DUMMYSHA512CHECKSUM111 - zookeeper: 3.5.7 - third-party-libs: 1.1.x - supported: true - default: true -- version: 1.2.0 - format: 1.2 - protocol: 1.2 - url: https://download.tld/kafka-1.2.0.tgz - checksum: DUMMYSHA512CHECKSUM120 - zookeeper: 3.5.7 - third-party-libs: 1.2.x - supported: true - default: true \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-valid.yaml b/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-valid.yaml deleted file mode 100644 index d60332c2f1b..00000000000 --- a/cluster-operator/bin/src/test/resources/kafka-versions/kafka-versions-valid.yaml +++ /dev/null @@ -1,55 +0,0 @@ -# This file is used to specify the versions of Kafka which will be built -# and supported by the Cluster Operator. It affects both compile time and runtime: -# * The docker images built (see docker-images/build.sh) -# * The KAFKA_IMAGE_MAP configuring the CO in the helm-charts (see helm-charts/kafka-version-tpl.sh) -# * The io.strimzi.operator.cluster.model.KafkaVersion's loaded at runtime -# * Documentation snippets generated by `make docu_versions` -# The idea is that this is the single place you need to update when changing the supported Kafka versions - -# Format of this file: -# is the kafka version number -# when `true` this is the version to be used by the CO by default when a `Kafka` resource lacks an explicit version. Only one Kafka version can be marked as default. -# is the default `inter.broker.protocol.version` used by this Kafka version -# is the default `log.message.format.version` used by this Kafka version -# is the remote (using prefix 'http://' or 'https://') or local (using prefix 'file://') address of the Kafka binary tar archive for this version of Kafka. When using a local file path the absolute path to the binary archive should be used. It is assumed in both cases that the name of the file forms the last section of the path. -# is the SHA512 checksum of the Kafka binary which is specified in the 'url' field. -# is the version of zookeeper required by this version of Kafka. -# is the version string for the third party libraries -# is a list of Strimzi features that are not supported by this Kafka version -# when `true` this version is currently supported by the operator. Unsupported versions are kept for historical reasons. - -- version: 1.0.0 - format: 1.0 - protocol: 1.0 - zookeeper: 3.4.13 - supported: false - default: false -- version: 1.1.0 - format: 1.1 - protocol: 1.1 - url: https://download.tld/kafka-1.1.0.tgz - checksum: DUMMYSHA512CHECKSUM110 - zookeeper: 3.5.7 - third-party-libs: 1.1x - supported: true - default: false -- version: 1.1.1 - format: 1.1 - protocol: 1.1 - metadata: 1.1 - url: https://download.tld/kafka-1.1.1.tgz - checksum: DUMMYSHA512CHECKSUM111 - zookeeper: 3.5.7 - third-party-libs: 1.1.x - supported: true - default: false -- version: 1.2.0 - format: 1.2 - protocol: 1.2 - metadata: 1.2-IV2 - url: https://download.tld/kafka-1.2.0.tgz - checksum: DUMMYSHA512CHECKSUM120 - zookeeper: 3.5.7 - third-party-libs: 1.2.x - supported: true - default: true \ No newline at end of file diff --git a/cluster-operator/bin/src/test/resources/log4j2-test.properties b/cluster-operator/bin/src/test/resources/log4j2-test.properties deleted file mode 100644 index 79384bd65d0..00000000000 --- a/cluster-operator/bin/src/test/resources/log4j2-test.properties +++ /dev/null @@ -1,27 +0,0 @@ -name = COConfig - -appender.console.type = Console -appender.console.name = STDOUT -appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n - -rootLogger.level = ${env:STRIMZI_LOG_LEVEL:-INFO} -rootLogger.appenderRefs = stdout -rootLogger.appenderRef.console.ref = STDOUT -rootLogger.additivity = false - -logger.reflections.name = org.reflections -logger.reflections.level = ERROR -logger.reflections.additivity = false - -logger.zookeeper.name = org.apache.zookeeper -logger.zookeeper.level = WARN -logger.zookeeper.additivity = false - -logger.broker.name = kafka -logger.broker.level = WARN -logger.broker.additivity = false - -logger.abstractindex.name = kafka.log.AbstractIndex -logger.abstractindex.level = OFF -logger.abstractindex.additivity = false \ No newline at end of file diff --git a/strimzi-kafka-operator-helm-3-chart-0.43.0-snapshot.tgz b/strimzi-kafka-operator-helm-3-chart-0.43.0-snapshot.tgz deleted file mode 100644 index a60637925c33594b5ba2f0c8d26510a1fc9b2adb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134588 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 z 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

      fFMUp5ck!&CW?&2iYw- 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 Date: Thu, 4 Jul 2024 14:31:02 +0200 Subject: [PATCH 34/62] Fix illegal parsing Signed-off-by: pegtrifork --- .../io/strimzi/operator/cluster/model/KafkaClusterTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java index 99bf5c7a987..e4cf8254595 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java @@ -12,7 +12,6 @@ import io.fabric8.kubernetes.api.model.IntOrString; import io.fabric8.kubernetes.api.model.LabelSelectorRequirementBuilder; import io.fabric8.kubernetes.api.model.PersistentVolumeClaim; -import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.PodSpec; import io.fabric8.kubernetes.api.model.Quantity; import io.fabric8.kubernetes.api.model.ResourceRequirements; @@ -681,7 +680,7 @@ public void testTemplate() { assertThat(sa.getMetadata().getAnnotations().entrySet().containsAll(saAnnotations.entrySet()), is(true)); List podSets = kc.generatePodSets(false, null, null, i -> Map.of()); - PodSpec podSpec = ((Pod) (podSets.get(0).getSpec().getPods().get(0))).getSpec(); + PodSpec podSpec = podSets.get(0).getSpec().getPods().stream().map(PodSetUtils::mapToPod).toList().get(0).getSpec(); assertThat(podSpec.getVolumes().stream().filter(volume -> "secret-volume-name".equals(volume.getName())).iterator().next().getSecret(), is(secret)); assertThat(podSpec.getContainers().get(0).getVolumeMounts().stream().filter(volumeMount -> "secret-volume-name".equals(volumeMount.getName())).iterator().next(), is(additionalVolume)); } From 7f3daa22b40120666565de7a3cd6117b68927643 Mon Sep 17 00:00:00 2001 From: pegtrifork Date: Thu, 4 Jul 2024 15:37:01 +0200 Subject: [PATCH 35/62] Fix test and remove redundant path check Signed-off-by: pegtrifork --- .../operator/cluster/model/TemplateUtils.java | 12 ------------ .../operator/cluster/model/KafkaClusterTest.java | 2 +- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index 3b1699e95dc..592d0151e4d 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -20,12 +20,6 @@ * Shared methods for working with Strimzi API templates */ public class TemplateUtils { - /** - * This is a constant that represents a sensitive path in the file system. - * It is used to prevent the creation of volumes that mount to this path. - */ - protected static final String SENSITIVE_PATH = "/tmp"; - /** * This is a constant that represents an allowed mountable path in the file system. * It is used to prevent the creation of volumes outside this path. @@ -73,12 +67,6 @@ public static void addAdditionalVolumeMounts(List volumeMounts, Lis if (additionalVolumeMounts == null) { return; } - boolean isSensitivePath = additionalVolumeMounts.stream().anyMatch(additionalVolume -> additionalVolume.getMountPath().startsWith(SENSITIVE_PATH)); - - if (isSensitivePath) { - throw new RuntimeException("Sensitive path found in additional volumes"); - } - boolean isForbiddenPath = additionalVolumeMounts.stream().anyMatch(additionalVolume -> !additionalVolume.getMountPath().startsWith(ALLOWED_MOUNT_PATH)); diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java index e4cf8254595..7a874c20fb4 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java @@ -682,7 +682,7 @@ public void testTemplate() { List podSets = kc.generatePodSets(false, null, null, i -> Map.of()); PodSpec podSpec = podSets.get(0).getSpec().getPods().stream().map(PodSetUtils::mapToPod).toList().get(0).getSpec(); assertThat(podSpec.getVolumes().stream().filter(volume -> "secret-volume-name".equals(volume.getName())).iterator().next().getSecret(), is(secret)); - assertThat(podSpec.getContainers().get(0).getVolumeMounts().stream().filter(volumeMount -> "secret-volume-name".equals(volumeMount.getName())).iterator().next(), is(additionalVolume)); + assertThat(podSpec.getContainers().get(0).getVolumeMounts().stream().filter(volumeMount -> "secret-volume-name".equals(volumeMount.getName())).iterator().next(), is(additionalVolumeMount)); } @ParallelTest From edf56241b19a266f36825bd5a54960fa13176b00 Mon Sep 17 00:00:00 2001 From: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> Date: Fri, 5 Jul 2024 09:23:10 +0200 Subject: [PATCH 36/62] Update CHANGELOG.md Co-authored-by: Tom Bentley Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index def02a72614..5e1764bb1ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ Added support for additional volumes in CRDs: * Users can specify volumes and volumeMounts fields in the Kafka, KafkaConnect, KafkaBridge, KafkaMirrorMaker2, EntityOperator, CruiseControl, KafkaExporter, and Zookeeper CRDs. * Supported volume types include Secret, ConfigMap, EmptyDir, and PersistentVolumeClaims. -* All additional mounted paths is mounted inside /mnt to ensure backwards compatibility for the evolution of kafka and this operator. +* All additional mounted paths are mounted under `/mnt` to ensure backwards compatibility for the evolution of kafka and this operator. * Example configurations and guidelines have been added to the documentation. ## 0.42.0 From 17ee14e5fbf77516fb9a3baaff435c1253e8708c Mon Sep 17 00:00:00 2001 From: pegtrifork Date: Fri, 5 Jul 2024 09:47:18 +0200 Subject: [PATCH 37/62] Use InvalidResourceException Signed-off-by: pegtrifork --- .../java/io/strimzi/operator/cluster/model/TemplateUtils.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index 592d0151e4d..ded4a3d07fb 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -12,6 +12,7 @@ import io.strimzi.api.kafka.model.common.template.DeploymentTemplate; import io.strimzi.api.kafka.model.common.template.HasMetadataTemplate; import io.strimzi.api.kafka.model.common.template.PodTemplate; +import io.strimzi.operator.common.model.InvalidResourceException; import java.util.List; import java.util.Map; @@ -71,7 +72,7 @@ public static void addAdditionalVolumeMounts(List volumeMounts, Lis boolean isForbiddenPath = additionalVolumeMounts.stream().anyMatch(additionalVolume -> !additionalVolume.getMountPath().startsWith(ALLOWED_MOUNT_PATH)); if (isForbiddenPath) { - throw new RuntimeException(String.format("Forbidden path found in additional volumes. Should start with %s", ALLOWED_MOUNT_PATH)); + throw new InvalidResourceException(String.format("Forbidden path found in additional volumes. Should start with %s", ALLOWED_MOUNT_PATH)); } volumeMounts.addAll(additionalVolumeMounts); From 83c1825a1dbed7a8d7bf977ab71a19d45c17cc57 Mon Sep 17 00:00:00 2001 From: Casper Thygesen Date: Sun, 7 Jul 2024 10:37:08 +0200 Subject: [PATCH 38/62] Update cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java Co-authored-by: Jakub Scholz Signed-off-by: Casper Thygesen --- .../java/io/strimzi/operator/cluster/model/CruiseControl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java index 0fdedafdd82..c1e8bfd7eb6 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java @@ -329,9 +329,11 @@ protected List getVolumes(boolean isOpenShift) { volumes.add(createSecretVolume(TLS_CA_CERTS_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); volumes.add(createSecretVolume(API_AUTH_CONFIG_VOLUME_NAME, CruiseControlResources.apiSecretName(cluster), isOpenShift)); volumes.add(createConfigMapVolume(CONFIG_VOLUME_NAME, CruiseControlResources.configMapName(cluster))); + if (templatePod != null) { addAdditionalVolumes(templatePod, volumes); } + return volumes; } From b8a8a4786c0e278e7ed75d24950f2da2e78eb56e Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Wed, 10 Jul 2024 16:21:28 +0200 Subject: [PATCH 39/62] Added validation of volume name and check for duplicates Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../operator/cluster/model/TemplateUtils.java | 50 +++++++++++++------ 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index ded4a3d07fb..832a31cfd35 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; +import java.util.regex.Pattern; /** * Shared methods for working with Strimzi API templates @@ -26,16 +27,16 @@ public class TemplateUtils { * It is used to prevent the creation of volumes outside this path. */ protected static final String ALLOWED_MOUNT_PATH = "/mnt"; + public final static Pattern VOLUME_NAME_REGEX = Pattern.compile("^(?=.{0,63}$)[a-zA-Z0-9][a-zA-Z0-9-._]*[a-zA-Z0-9]$"); /** * Extracts custom labels configured through the Strimzi API resource templates. This method deals the null checks * and makes the code using it more easy to read. * - * @param template The resource template - * - * @return Map with custom labels from the template or null if not set + * @param template The resource template + * @return Map with custom labels from the template or null if not set */ - public static Map labels(HasMetadataTemplate template) { + public static Map labels(HasMetadataTemplate template) { if (template != null && template.getMetadata() != null) { return template.getMetadata().getLabels(); @@ -52,6 +53,29 @@ public static Map labels(HasMetadataTemplate template) { */ public static void addAdditionalVolumes(PodTemplate templatePod, List existingVolumes) { if (templatePod.getAdditionalVolumes() != null) { + + // Extract the names and paths of the existing volumes + List existingVolumeNames = existingVolumes.stream().map(Volume::getName).toList(); + + // Check if there are any invalid volume names + List invalidNames = existingVolumeNames.stream().filter(name -> !VOLUME_NAME_REGEX.matcher(name).matches()).toList(); + + // Find duplicate names in the additional volumes + List duplicateNames = templatePod.getAdditionalVolumes().stream() + .map(AdditionalVolume::getName) + .filter(existingVolumeNames::contains) + .toList(); + + // Throw an exception if there are any invalid volume names + if (!invalidNames.isEmpty()) { + throw new InvalidResourceException("Volume names " + invalidNames + " are invalid and do not match the pattern " + VOLUME_NAME_REGEX); + } + + // Throw an exception if duplicates are found + if (!duplicateNames.isEmpty()) { + throw new InvalidResourceException("Duplicate volume names found in additional volumes: " + duplicateNames); + } + templatePod.getAdditionalVolumes().forEach(volumeConfig -> existingVolumes.add(createVolumeFromConfig(volumeConfig))); } } @@ -59,7 +83,7 @@ public static void addAdditionalVolumes(PodTemplate templatePod, List ex /** * Add additional volume mounts to the given list of volume mounts. Validation is performed to ensure none of the * additional volume mount paths are forbidden. - * + * * @param volumeMounts The list of volume mounts to be added to * @param additionalVolumeMounts The list of volume mounts to add * @throws RuntimeException If a forbidden mount path is used. @@ -103,11 +127,10 @@ private static Volume createVolumeFromConfig(AdditionalVolume volumeConfig) { * Extracts custom annotations configured through the Strimzi API resource templates. This method deals the null * checks and makes the code using it more easy to read. * - * @param template The resource template - * - * @return Map with custom annotations from the template or null if not set + * @param template The resource template + * @return Map with custom annotations from the template or null if not set */ - public static Map annotations(HasMetadataTemplate template) { + public static Map annotations(HasMetadataTemplate template) { if (template != null && template.getMetadata() != null) { return template.getMetadata().getAnnotations(); @@ -119,12 +142,11 @@ public static Map annotations(HasMetadataTemplate template) { /** * Extracts the deployment strategy configuration from the Deployment template * - * @param template Deployment template which maybe contains custom deployment strategy configuration - * @param defaultValue The default value which should be used if the deployment strategy is not set - * - * @return Custom deployment strategy or default value if not defined + * @param template Deployment template which maybe contains custom deployment strategy configuration + * @param defaultValue The default value which should be used if the deployment strategy is not set + * @return Custom deployment strategy or default value if not defined */ - public static DeploymentStrategy deploymentStrategy(DeploymentTemplate template, DeploymentStrategy defaultValue) { + public static DeploymentStrategy deploymentStrategy(DeploymentTemplate template, DeploymentStrategy defaultValue) { return template != null && template.getDeploymentStrategy() != null ? template.getDeploymentStrategy() : defaultValue; } } From 187cc669c16dc169dbec4b3fd51e847a08cfb794 Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Wed, 10 Jul 2024 16:52:58 +0200 Subject: [PATCH 40/62] Updated the documentation based on feedback Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../con-configuration-points-common.adoc | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/documentation/modules/overview/con-configuration-points-common.adoc b/documentation/modules/overview/con-configuration-points-common.adoc index 0f18800ff73..92e5dafbdb0 100644 --- a/documentation/modules/overview/con-configuration-points-common.adoc +++ b/documentation/modules/overview/con-configuration-points-common.adoc @@ -69,15 +69,18 @@ spec: == Additional Volumes Strimzi supports specifying additional volumes and volume mounts in the following components: -Kafka, KafkaConnect, KafkaBridge, KafkaMirrorMaker2, EntityOperator, CruiseControl, -KafkaExporter, and Zookeeper. All additional mounted paths are located -inside `/mnt` to ensure compatibility with future Kafka and Strimzi updates. +- Kafka +- Kafka Connect +- Kafka Bridge +- Kafka MirrorMaker2 +- Entity Operator +- Cruise Control +- Kafka Exporter +- Zookeeper +- User Operator +- Topic Operator -This feature enables users to: - -- Access log files for enhanced monitoring and debugging. -- Use additional configurations or secret management tools that require mounting extra volumes. -- Analyze JVM issues (for example, heap dumps). +All additional mounted paths are located inside `/mnt` to ensure compatibility with future Kafka and Strimzi updates. Supported Volume Types @@ -113,6 +116,8 @@ spec: mountPath: /mnt/secret-volume - name: example-configmap mountPath: /mnt/cm-volume + - name: temp + mountPath: /mnt/temp - name: example-pvc-volume mountPath: /mnt/data ---- From 1ccc7c2c8cac51d9aeb93085036c5a7a0de85541 Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Thu, 11 Jul 2024 16:24:56 +0200 Subject: [PATCH 41/62] Fix test Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../operator/cluster/model/KafkaMirrorMaker2Cluster.java | 3 --- .../operator/cluster/model/KafkaBridgeClusterTest.java | 4 ++-- .../strimzi/operator/cluster/model/KafkaExporterTest.java | 4 ++-- .../cluster/model/KafkaMirrorMaker2ClusterTest.java | 8 ++++---- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java index 33377394e89..7f0fe48826a 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java @@ -178,9 +178,6 @@ protected List getVolumes(boolean isOpenShift) { AuthenticationUtils.configureClientAuthenticationVolumes(mirrorMaker2Cluster.getAuthentication(), volumeList, mirrorMaker2Cluster.getAlias() + "-oauth-certs", isOpenShift, mirrorMaker2Cluster.getAlias() + '-', true); } - if (templatePod != null) { - addAdditionalVolumes(templatePod, volumeList); - } return volumeList; } diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java index 4d177d51d1e..5146b160b96 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java @@ -850,7 +850,7 @@ public void testGenerateDeploymentWithRackAndInitVolumeMounts() { .build(); VolumeMount additionalVolumeMount = new VolumeMountBuilder() - .withName("config-map-volume-name") + .withName("config-map-volume-name-2") .withMountPath("/mnt/config-map") .withSubPath("def") .build(); @@ -873,7 +873,7 @@ public void testGenerateDeploymentWithRackAndInitVolumeMounts() { Deployment deployment = assertRackAwareDeploymentConfigured(resource, "quay.io/strimzi/operator:latest"); assertThat(getVolume(deployment, "config-map-volume-name").getConfigMap(), is(configMap)); - assertThat(getVolumeMount(deployment.getSpec().getTemplate().getSpec().getInitContainers().get(0), "config-map-volume-name"), is(additionalVolumeMount)); + assertThat(getVolumeMount(deployment.getSpec().getTemplate().getSpec().getInitContainers().get(0), "config-map-volume-name-2"), is(additionalVolumeMount)); } diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java index 4d912adba7c..3fdd9122c75 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java @@ -405,7 +405,7 @@ public void testTemplate() { .build(); VolumeMount additionalVolumeMountConfigMap = new VolumeMountBuilder() - .withName("config-map-volume-name") + .withName("config-map-volume-name-2") .withMountPath("/mnt/config-map-path") .withSubPath("def") .build(); @@ -464,7 +464,7 @@ public void testTemplate() { assertThat(dep.getSpec().getTemplate().getSpec().getTolerations(), is(tolerations)); assertThat(dep.getSpec().getTemplate().getSpec().getTopologySpreadConstraints(), containsInAnyOrder(tsc1, tsc2)); assertThat(dep.getSpec().getTemplate().getSpec().getEnableServiceLinks(), is(false)); - assertThat(getVolume(dep.getSpec().getTemplate().getSpec(), additionalVolumeMountConfigMap.getName()).getConfigMap(), is(configMap)); + assertThat(getVolume(dep.getSpec().getTemplate().getSpec(), additionalVolumeConfigMap.getName()).getConfigMap(), is(configMap)); assertThat(getVolumeMount(dep.getSpec().getTemplate().getSpec().getContainers().get(0), additionalVolumeMountConfigMap.getName()), is(additionalVolumeMountConfigMap)); // Check Service Account diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java index 1e9935707fc..a0ff353dd9d 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java @@ -943,13 +943,13 @@ public void testTemplate() { .build(); VolumeMount additionalVolumeMountConfigMap = new VolumeMountBuilder() - .withName("config-map-volume-name") + .withName("config-map-volume-name-2") .withMountPath("/mnt/myconfigmap") .withSubPath("def") .build(); VolumeMount additionalVolumeMountPvc = new VolumeMountBuilder() - .withName("pvc-volume-name") + .withName("pvc-volume-name-2") .withMountPath("/mnt/mypvc") .build(); @@ -1025,8 +1025,8 @@ public void testTemplate() { assertThat(pod.getSpec().getHostAliases(), containsInAnyOrder(hostAlias1, hostAlias2)); assertThat(pod.getSpec().getEnableServiceLinks(), is(false)); assertThat(getVolume(pod, "strimzi-tmp").getEmptyDir().getSizeLimit(), is(new Quantity("10Mi"))); - assertThat(getVolume(pod, additionalVolumeMountConfigMap.getName()).getConfigMap(), is(configMap)); - assertThat(getVolume(pod, additionalVolumeMountPvc.getName()).getPersistentVolumeClaim(), is(pvc)); + assertThat(getVolume(pod, additionalVolumeConfigMap.getName()).getConfigMap(), is(configMap)); + assertThat(getVolume(pod, additionalVolumePvc.getName()).getPersistentVolumeClaim(), is(pvc)); assertThat(getVolumeMount(pod.getSpec().getContainers().get(0), additionalVolumeMountConfigMap.getName()), is(additionalVolumeMountConfigMap)); assertThat(getVolumeMount(pod.getSpec().getInitContainers().get(0), additionalVolumeMountPvc.getName()), is(additionalVolumeMountPvc)); From 0496cc2399e31cb43a764e225ecb147e2442993b Mon Sep 17 00:00:00 2001 From: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> Date: Thu, 11 Jul 2024 21:14:16 +0200 Subject: [PATCH 42/62] Added onOf in AdditionalVolume and removed unused import Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../common/template/AdditionalVolume.java | 9 ++++ .../model/KafkaMirrorMaker2Cluster.java | 2 - .../cluster-operator/040-Crd-kafka.yaml | 42 +++++++++++++++++++ .../041-Crd-kafkaconnect.yaml | 14 +++++++ .../045-Crd-kafkamirrormaker.yaml | 7 ++++ .../cluster-operator/046-Crd-kafkabridge.yaml | 7 ++++ .../048-Crd-kafkamirrormaker2.yaml | 14 +++++++ .../04A-Crd-kafkanodepool.yaml | 7 ++++ 8 files changed, 100 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java index 5d1be85948f..79d456e9be8 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/AdditionalVolume.java @@ -14,6 +14,7 @@ import io.strimzi.api.kafka.model.common.UnknownPropertyPreserving; import io.strimzi.crdgenerator.annotations.Description; import io.strimzi.crdgenerator.annotations.KubeLink; +import io.strimzi.crdgenerator.annotations.OneOf; import io.sundr.builder.annotations.Buildable; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -27,6 +28,14 @@ @Buildable(editableEnabled = false, builderPackage = Constants.FABRIC8_KUBERNETES_API) @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder({ "name", "path", "subPath", "secret", "configMap", "emptyDir", "persistentVolumeClaim" }) +@OneOf({ + @OneOf.Alternative({ + @OneOf.Alternative.Property(value = "secret", required = false), + @OneOf.Alternative.Property(value = "configMap", required = false), + @OneOf.Alternative.Property(value = "emptyDir", required = false), + @OneOf.Alternative.Property(value = "persistentVolumeClaim", required = false) + }) +}) @EqualsAndHashCode @ToString public class AdditionalVolume implements UnknownPropertyPreserving { diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java index 7f0fe48826a..95250a7dde9 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java @@ -35,8 +35,6 @@ import java.util.function.Supplier; import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; - /** * Kafka Mirror Maker 2 model */ diff --git a/packaging/install/cluster-operator/040-Crd-kafka.yaml b/packaging/install/cluster-operator/040-Crd-kafka.yaml index b47d1c59271..92a2c4bfa54 100644 --- a/packaging/install/cluster-operator/040-Crd-kafka.yaml +++ b/packaging/install/cluster-operator/040-Crd-kafka.yaml @@ -1529,6 +1529,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. bootstrapService: @@ -2973,6 +2980,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for ZooKeeper `Pods`. clientService: @@ -4273,6 +4287,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Entity Operator `Pods`. topicOperatorContainer: @@ -5540,6 +5561,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Cruise Control `Pods`. apiService: @@ -6589,6 +6617,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for JmxTrans `Pods`. container: @@ -7419,6 +7454,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka Exporter `Pods`. service: diff --git a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml index 749264b39c9..a608033343b 100644 --- a/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml +++ b/packaging/install/cluster-operator/041-Crd-kafkaconnect.yaml @@ -1075,6 +1075,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: @@ -1978,6 +1985,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: diff --git a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml index 37b8cf9efd9..ce5c194be43 100644 --- a/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml +++ b/packaging/install/cluster-operator/045-Crd-kafkamirrormaker.yaml @@ -1213,6 +1213,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka MirrorMaker `Pods`. podDisruptionBudget: diff --git a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml index 95af00facf5..8c6ea669108 100644 --- a/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml +++ b/packaging/install/cluster-operator/046-Crd-kafkabridge.yaml @@ -1064,6 +1064,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka Bridge `Pods`. apiService: diff --git a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml index 026eb4d6880..a86da988e2c 100644 --- a/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml +++ b/packaging/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml @@ -1220,6 +1220,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: @@ -2123,6 +2130,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: diff --git a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml index 633eda9af38..3e0206bddcb 100644 --- a/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml +++ b/packaging/install/cluster-operator/04A-Crd-kafkanodepool.yaml @@ -829,6 +829,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. perPodService: From a5d30e9df6f4a8c46ac7b3540c4496386bcb909c Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Sat, 13 Jul 2024 23:20:33 +0200 Subject: [PATCH 43/62] Renaming of variables Signed-off-by: KastTrifork --- .../api/kafka/model/common/template/ContainerTemplate.java | 6 +++--- .../api/kafka/model/common/template/PodTemplate.java | 6 +++--- .../io/strimzi/operator/cluster/model/TemplateUtils.java | 7 +++++++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java index 23c413b2b66..c2ba8e1a212 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java @@ -39,16 +39,16 @@ public class ContainerTemplate implements UnknownPropertyPreserving { private List env; private SecurityContext securityContext; private Map additionalProperties; - private List additionalVolumeMounts; + private List volumeMounts; @Description("Additional volume mounts which should be applied to the container") @JsonProperty("volumeMounts") public List getAdditionalVolumeMounts() { - return additionalVolumeMounts; + return volumeMounts; } public void setAdditionalVolumeMounts(List additionalVolumeMounts) { - this.additionalVolumeMounts = additionalVolumeMounts; + this.volumeMounts = additionalVolumeMounts; } @Description("Environment variables which should be applied to the container.") diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java index 466726d93ac..cfc8ccdc909 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java @@ -55,7 +55,7 @@ public class PodTemplate implements HasMetadataTemplate, UnknownPropertyPreservi private List hostAliases; private Boolean enableServiceLinks; private String tmpDirSizeLimit; - private List additionalVolumes; + private List volumes; private Map additionalProperties; @Description("Metadata applied to the resource.") @@ -200,11 +200,11 @@ public void setTmpDirSizeLimit(String tmpDirSizeLimit) { @JsonProperty("volumes") @JsonInclude(JsonInclude.Include.NON_EMPTY) public List getAdditionalVolumes() { - return additionalVolumes; + return volumes; } public void setAdditionalVolumes(List additionalVolumes) { - this.additionalVolumes = additionalVolumes; + this.volumes = additionalVolumes; } @Override diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index 832a31cfd35..63830ff1555 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -27,6 +27,13 @@ public class TemplateUtils { * It is used to prevent the creation of volumes outside this path. */ protected static final String ALLOWED_MOUNT_PATH = "/mnt"; + /** + * This Pattern defines a regex for validating volume names with the following criteria: + * Length: Must contain at most 63 characters. + * Characters: Can only contain lowercase alphanumeric characters, '-', '.', or '_'. + * Start: Must start with an alphanumeric character. + * End: Must end with an alphanumeric character. + **/ public final static Pattern VOLUME_NAME_REGEX = Pattern.compile("^(?=.{0,63}$)[a-zA-Z0-9][a-zA-Z0-9-._]*[a-zA-Z0-9]$"); /** From a954dcb7f83a6f8b85953ece2e706edf447b35da Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Mon, 15 Jul 2024 15:01:03 +0200 Subject: [PATCH 44/62] Fixed test after renaming Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../kafka/model/common/template/ContainerTemplate.java | 6 +++--- .../api/kafka/model/common/template/PodTemplate.java | 6 +++--- .../io/strimzi/operator/cluster/model/CruiseControl.java | 2 +- .../operator/cluster/model/EntityTopicOperator.java | 2 +- .../operator/cluster/model/EntityUserOperator.java | 2 +- .../operator/cluster/model/KafkaBridgeCluster.java | 4 ++-- .../io/strimzi/operator/cluster/model/KafkaCluster.java | 6 +++--- .../strimzi/operator/cluster/model/KafkaConnectBuild.java | 2 +- .../operator/cluster/model/KafkaConnectCluster.java | 4 ++-- .../io/strimzi/operator/cluster/model/KafkaExporter.java | 2 +- .../operator/cluster/model/KafkaMirrorMaker2Cluster.java | 2 +- .../io/strimzi/operator/cluster/model/TemplateUtils.java | 6 +++--- .../strimzi/operator/cluster/model/ZookeeperCluster.java | 2 +- .../strimzi/operator/cluster/model/CruiseControlTest.java | 4 ++-- .../operator/cluster/model/EntityOperatorTest.java | 6 +++--- .../operator/cluster/model/KafkaBridgeClusterTest.java | 8 ++++---- .../strimzi/operator/cluster/model/KafkaClusterTest.java | 4 ++-- .../operator/cluster/model/KafkaConnectBuildTest.java | 4 ++-- .../operator/cluster/model/KafkaConnectClusterTest.java | 6 +++--- .../strimzi/operator/cluster/model/KafkaExporterTest.java | 4 ++-- .../cluster/model/KafkaMirrorMaker2ClusterTest.java | 6 +++--- 21 files changed, 44 insertions(+), 44 deletions(-) diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java index c2ba8e1a212..754ea7b7051 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/ContainerTemplate.java @@ -43,12 +43,12 @@ public class ContainerTemplate implements UnknownPropertyPreserving { @Description("Additional volume mounts which should be applied to the container") @JsonProperty("volumeMounts") - public List getAdditionalVolumeMounts() { + public List getVolumeMounts() { return volumeMounts; } - public void setAdditionalVolumeMounts(List additionalVolumeMounts) { - this.volumeMounts = additionalVolumeMounts; + public void setVolumeMounts(List volumeMounts) { + this.volumeMounts = volumeMounts; } @Description("Environment variables which should be applied to the container.") diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java index cfc8ccdc909..72158c567b1 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java @@ -199,12 +199,12 @@ public void setTmpDirSizeLimit(String tmpDirSizeLimit) { @Description("Additional volumes that can be mounted to the pod.") @JsonProperty("volumes") @JsonInclude(JsonInclude.Include.NON_EMPTY) - public List getAdditionalVolumes() { + public List getVolumes() { return volumes; } - public void setAdditionalVolumes(List additionalVolumes) { - this.volumes = additionalVolumes; + public void setVolumes(List volumes) { + this.volumes = volumes; } @Override diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java index c1e8bfd7eb6..77dd5a50709 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java @@ -345,7 +345,7 @@ protected List getVolumeMounts() { volumeMounts.add(createVolumeMount(CruiseControl.API_AUTH_CONFIG_VOLUME_NAME, CruiseControl.API_AUTH_CONFIG_VOLUME_MOUNT)); volumeMounts.add(createVolumeMount(CONFIG_VOLUME_NAME, CONFIG_VOLUME_MOUNT)); if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMounts, templateContainer.getAdditionalVolumeMounts()); + addAdditionalVolumeMounts(volumeMounts, templateContainer.getVolumeMounts()); } return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java index b4895997643..f04880302d0 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java @@ -234,7 +234,7 @@ private List getVolumeMounts() { result.add(VolumeUtils.createVolumeMount(EntityOperator.ETO_CC_API_VOLUME_NAME, EntityOperator.ETO_CC_API_VOLUME_MOUNT)); } if (templateContainer != null) { - addAdditionalVolumeMounts(result, templateContainer.getAdditionalVolumeMounts()); + addAdditionalVolumeMounts(result, templateContainer.getVolumeMounts()); } return Collections.unmodifiableList(result); } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java index deef2fe0aad..2c95cca9d4b 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java @@ -244,7 +244,7 @@ private List getVolumeMounts() { volumeMounts.add(VolumeUtils.createVolumeMount(EntityOperator.TLS_SIDECAR_CA_CERTS_VOLUME_NAME, EntityOperator.TLS_SIDECAR_CA_CERTS_VOLUME_MOUNT)); if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMounts, templateContainer.getAdditionalVolumeMounts()); + addAdditionalVolumeMounts(volumeMounts, templateContainer.getVolumeMounts()); } return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java index d3242da86d9..fc0e4495364 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java @@ -334,7 +334,7 @@ protected List getVolumeMounts() { AuthenticationUtils.configureClientAuthenticationVolumeMounts(authentication, volumeMountList, TLS_CERTS_BASE_VOLUME_MOUNT, PASSWORD_VOLUME_MOUNT, OAUTH_TLS_CERTS_BASE_VOLUME_MOUNT, "oauth-certs"); if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateContainer.getAdditionalVolumeMounts()); + addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); } return volumeMountList; } @@ -343,7 +343,7 @@ private List getInitContainerVolumeMounts() { List volumeMountList = new ArrayList<>(); volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); if (templateInitContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateInitContainer.getAdditionalVolumeMounts()); + addAdditionalVolumeMounts(volumeMountList, templateInitContainer.getVolumeMounts()); } return volumeMountList; diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java index 24e1632307d..6415bc51d01 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java @@ -1400,7 +1400,7 @@ private List getPodSetVolumes(String podName, Storage storage, PodTempla * Generates the volume mounts for a Kafka container * * @param storage Storage configuration for which the volume mounts should be generated - * @param volumeMounts Additional volume mounts to include in the returned list + * @param additionalVolumeMounts Additional volume mounts to include in the returned list * * @return List of volume mounts */ @@ -1454,7 +1454,7 @@ private List getInitContainerVolumeMounts(KafkaPool pool) { List volumeMountList = new ArrayList<>(); volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); if (pool.templateInitContainer != null) { - addAdditionalVolumeMounts(volumeMountList, pool.templateInitContainer.getAdditionalVolumeMounts()); + addAdditionalVolumeMounts(volumeMountList, pool.templateInitContainer.getVolumeMounts()); } return volumeMountList; } @@ -1548,7 +1548,7 @@ protected List getInitContainerEnvVars(KafkaPool pool) { pool.resources, getEnvVars(pool), getContainerPortList(pool), - getVolumeMounts(pool.storage, pool.templateContainer == null ? Collections.emptyList() : pool.templateContainer.getAdditionalVolumeMounts()), + getVolumeMounts(pool.storage, pool.templateContainer == null ? Collections.emptyList() : pool.templateContainer.getVolumeMounts()), ProbeUtils.defaultBuilder(livenessProbeOptions).withNewExec().withCommand("/opt/kafka/kafka_liveness.sh").endExec().build(), ProbeUtils.defaultBuilder(readinessProbeOptions).withNewExec().withCommand("/opt/kafka/kafka_readiness.sh").endExec().build(), imagePullPolicy diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java index eba5e8264a5..a56a4efd2b1 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java @@ -308,7 +308,7 @@ private List getVolumeMounts() { throw new RuntimeException("Kubernetes build requires output of type `docker`."); } if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMounts, templateContainer.getAdditionalVolumeMounts()); + addAdditionalVolumeMounts(volumeMounts, templateContainer.getVolumeMounts()); } return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java index 171ae669a4b..5d407b254a5 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java @@ -446,7 +446,7 @@ protected List getVolumeMounts() { volumeMountList.addAll(getExternalConfigurationVolumeMounts()); if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateContainer.getAdditionalVolumeMounts()); + addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); } return volumeMountList; } @@ -455,7 +455,7 @@ private List getInitContainerVolumeMounts() { List volumeMountList = new ArrayList<>(); volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); if (templateInitContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateInitContainer.getAdditionalVolumeMounts()); + addAdditionalVolumeMounts(volumeMountList, templateInitContainer.getVolumeMounts()); } return volumeMountList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java index 0b808cbdbba..e53b9fc141c 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java @@ -273,7 +273,7 @@ private List getVolumeMounts() { volumeList.add(VolumeUtils.createVolumeMount(KAFKA_EXPORTER_CERTS_VOLUME_NAME, KAFKA_EXPORTER_CERTS_VOLUME_MOUNT)); volumeList.add(VolumeUtils.createVolumeMount(CLUSTER_CA_CERTS_VOLUME_NAME, CLUSTER_CA_CERTS_VOLUME_MOUNT)); if (templateContainer != null) { - addAdditionalVolumeMounts(volumeList, templateContainer.getAdditionalVolumeMounts()); + addAdditionalVolumeMounts(volumeList, templateContainer.getVolumeMounts()); } return volumeList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java index 95250a7dde9..f83b960231c 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java @@ -198,7 +198,7 @@ protected List getVolumeMounts() { } if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateContainer.getAdditionalVolumeMounts()); + addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); } return volumeMountList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index 63830ff1555..519b2e040ee 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -59,7 +59,7 @@ public static Map labels(HasMetadataTemplate template) { * @param existingVolumes The list of existing volumes to which the additional volumes will be added. */ public static void addAdditionalVolumes(PodTemplate templatePod, List existingVolumes) { - if (templatePod.getAdditionalVolumes() != null) { + if (templatePod.getVolumes() != null) { // Extract the names and paths of the existing volumes List existingVolumeNames = existingVolumes.stream().map(Volume::getName).toList(); @@ -68,7 +68,7 @@ public static void addAdditionalVolumes(PodTemplate templatePod, List ex List invalidNames = existingVolumeNames.stream().filter(name -> !VOLUME_NAME_REGEX.matcher(name).matches()).toList(); // Find duplicate names in the additional volumes - List duplicateNames = templatePod.getAdditionalVolumes().stream() + List duplicateNames = templatePod.getVolumes().stream() .map(AdditionalVolume::getName) .filter(existingVolumeNames::contains) .toList(); @@ -83,7 +83,7 @@ public static void addAdditionalVolumes(PodTemplate templatePod, List ex throw new InvalidResourceException("Duplicate volume names found in additional volumes: " + duplicateNames); } - templatePod.getAdditionalVolumes().forEach(volumeConfig -> existingVolumes.add(createVolumeFromConfig(volumeConfig))); + templatePod.getVolumes().forEach(volumeConfig -> existingVolumes.add(createVolumeFromConfig(volumeConfig))); } } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java index f4dceac7fc4..295a1b22981 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java @@ -575,7 +575,7 @@ private List getVolumeMounts() { volumeMountList.add(VolumeUtils.createVolumeMount(ZOOKEEPER_CLUSTER_CA_VOLUME_NAME, ZOOKEEPER_CLUSTER_CA_VOLUME_MOUNT)); if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateContainer.getAdditionalVolumeMounts()); + addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); } return volumeMountList; diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.java index ca5050e5420..6105d182c13 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/CruiseControlTest.java @@ -731,10 +731,10 @@ public void testTemplate() { .withHostAliases(hostAlias1, hostAlias2) .withAffinity(affinity) .withTolerations(tolerations) - .withAdditionalVolumes(additionalVolumes) + .withVolumes(additionalVolumes) .endPod() .withNewCruiseControlContainer() - .withAdditionalVolumeMounts(additionalVolumeMounts) + .withVolumeMounts(additionalVolumeMounts) .endCruiseControlContainer() .withNewApiService() .withNewMetadata() diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java index a6f905b1a90..e6d515b72e2 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java @@ -287,13 +287,13 @@ public void testTemplate() { .withTolerations(singletonList(toleration)) .withTopologySpreadConstraints(tsc1, tsc2) .withEnableServiceLinks(false) - .withAdditionalVolumes(additionalVolumes) + .withVolumes(additionalVolumes) .endPod() .withNewTopicOperatorContainer() - .withAdditionalVolumeMounts(additionalVolumeMounts) + .withVolumeMounts(additionalVolumeMounts) .endTopicOperatorContainer() .withNewUserOperatorContainer() - .withAdditionalVolumeMounts(additionalVolumeMounts) + .withVolumeMounts(additionalVolumeMounts) .endUserOperatorContainer() .withNewEntityOperatorRole() .withNewMetadata() diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java index 5146b160b96..f888627c28c 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java @@ -495,10 +495,10 @@ public void testTemplate() { .withTopologySpreadConstraints(tsc1, tsc2) .withEnableServiceLinks(false) .withTmpDirSizeLimit("10Mi") - .withAdditionalVolumes(additionalVolumes) + .withVolumes(additionalVolumes) .endPod() .withNewBridgeContainer() - .withAdditionalVolumeMounts(additionalVolumeMounts) + .withVolumeMounts(additionalVolumeMounts) .endBridgeContainer() .withNewApiService() .withNewMetadata() @@ -862,10 +862,10 @@ public void testGenerateDeploymentWithRackAndInitVolumeMounts() { .endRack() .withNewTemplate() .withNewPod() - .withAdditionalVolumes(singletonList(additionalVolume)) + .withVolumes(singletonList(additionalVolume)) .endPod() .withNewInitContainer() - .withAdditionalVolumeMounts(singletonList(additionalVolumeMount)) + .withVolumeMounts(singletonList(additionalVolumeMount)) .endInitContainer() .endTemplate() .endSpec() diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java index 7a874c20fb4..ba707c94bae 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaClusterTest.java @@ -559,10 +559,10 @@ public void testTemplate() { .build()) .withNewTemplate() .withNewPod() - .withAdditionalVolumes(additionalVolume) + .withVolumes(additionalVolume) .endPod() .withNewKafkaContainer() - .withAdditionalVolumeMounts(additionalVolumeMount) + .withVolumeMounts(additionalVolumeMount) .endKafkaContainer() .withNewBootstrapService() .withNewMetadata() diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.java index 2cc3485e5ee..c26818909c2 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectBuildTest.java @@ -473,11 +473,11 @@ public void testTemplate() { .withPriorityClassName("top-priority") .withSchedulerName("my-scheduler") .withEnableServiceLinks(false) - .withAdditionalVolumes(additionalVolume) + .withVolumes(additionalVolume) .endBuildPod() .withNewBuildContainer() .withEnv(new ContainerEnvVarBuilder().withName("TEST_ENV_VAR").withValue("testValue").build()) - .withAdditionalVolumeMounts(additionalVolumeMount) + .withVolumeMounts(additionalVolumeMount) .endBuildContainer() .withNewBuildConfig() .withNewMetadata() diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.java index bcf26a481e6..1198f3cf3ed 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaConnectClusterTest.java @@ -826,13 +826,13 @@ public void testTemplate() { .withTopologySpreadConstraints(tsc1, tsc2) .withEnableServiceLinks(false) .withTmpDirSizeLimit("10Mi") - .withAdditionalVolumes(additionalVolumeSecret, additionalVolumeEmptyDir, additionalVolumeConfigMap) + .withVolumes(additionalVolumeSecret, additionalVolumeEmptyDir, additionalVolumeConfigMap) .endPod() .withNewConnectContainer() - .withAdditionalVolumeMounts(additionalVolumeMountSecret, additionalVolumeMountEmptyDir) + .withVolumeMounts(additionalVolumeMountSecret, additionalVolumeMountEmptyDir) .endConnectContainer() .withNewInitContainer() - .withAdditionalVolumeMounts(additionalVolumeMountConfigMap) + .withVolumeMounts(additionalVolumeMountConfigMap) .endInitContainer() .withNewApiService() .withNewMetadata() diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java index 3fdd9122c75..80ecb8b1178 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java @@ -432,10 +432,10 @@ public void testTemplate() { .withTolerations(tolerations) .withTopologySpreadConstraints(tsc1, tsc2) .withEnableServiceLinks(false) - .withAdditionalVolumes(additionalVolumeConfigMap) + .withVolumes(additionalVolumeConfigMap) .endPod() .withNewContainer() - .withAdditionalVolumeMounts(additionalVolumeMountConfigMap) + .withVolumeMounts(additionalVolumeMountConfigMap) .endContainer() .withNewServiceAccount() .withNewMetadata() diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java index a0ff353dd9d..82a85926707 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java @@ -973,13 +973,13 @@ public void testTemplate() { .withHostAliases(hostAlias1, hostAlias2) .withEnableServiceLinks(false) .withTmpDirSizeLimit("10Mi") - .withAdditionalVolumes(additionalVolumeConfigMap, additionalVolumePvc) + .withVolumes(additionalVolumeConfigMap, additionalVolumePvc) .endPod() .withNewInitContainer() - .withAdditionalVolumeMounts(additionalVolumeMountPvc) + .withVolumeMounts(additionalVolumeMountPvc) .endInitContainer() .withNewConnectContainer() - .withAdditionalVolumeMounts(additionalVolumeMountConfigMap) + .withVolumeMounts(additionalVolumeMountConfigMap) .endConnectContainer() .withNewApiService() .withNewMetadata() From 011f6f1b2699c120e3b9d429a1df48f4326063c1 Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Tue, 16 Jul 2024 09:20:09 +0200 Subject: [PATCH 45/62] CRD install Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../crds/040-Crd-kafka.yaml | 42 +++++++++++++++++++ .../crds/041-Crd-kafkaconnect.yaml | 14 +++++++ .../crds/045-Crd-kafkamirrormaker.yaml | 7 ++++ .../crds/046-Crd-kafkabridge.yaml | 7 ++++ .../crds/048-Crd-kafkamirrormaker2.yaml | 14 +++++++ .../crds/04A-Crd-kafkanodepool.yaml | 7 ++++ 6 files changed, 91 insertions(+) diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml index b3a8d2fcdd7..15ea2a3eb42 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml @@ -1530,6 +1530,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. bootstrapService: @@ -2974,6 +2981,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for ZooKeeper `Pods`. clientService: @@ -4274,6 +4288,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Entity Operator `Pods`. topicOperatorContainer: @@ -5541,6 +5562,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Cruise Control `Pods`. apiService: @@ -6590,6 +6618,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for JmxTrans `Pods`. container: @@ -7420,6 +7455,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka Exporter `Pods`. service: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml index 01cdbeb4654..17b8fd32da0 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml @@ -1076,6 +1076,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: @@ -1979,6 +1986,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml index 4358cf32321..f7e8d99dd68 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml @@ -1214,6 +1214,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka MirrorMaker `Pods`. podDisruptionBudget: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml index 58c969d4b2e..788c706da11 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml @@ -1065,6 +1065,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka Bridge `Pods`. apiService: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml index 9f011fae873..4ed289dacc9 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml @@ -1221,6 +1221,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect `Pods`. apiService: @@ -2124,6 +2131,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka Connect Build `Pods`. The build pod is used only on Kubernetes. buildContainer: diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml index 633eda9af38..3e0206bddcb 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml @@ -829,6 +829,13 @@ spec: readOnly: type: boolean description: PersistentVolumeClaim object to use to populate the volume. + oneOf: + - properties: + secret: {} + configMap: {} + emptyDir: {} + persistentVolumeClaim: {} + required: [] description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. perPodService: From 7eb844742f1e775a7ea44d7fe6193cdbed051892 Mon Sep 17 00:00:00 2001 From: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> Date: Tue, 16 Jul 2024 22:56:26 +0200 Subject: [PATCH 46/62] removal of duplicate if statement Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../src/main/java/io/strimzi/crdgenerator/CrdGenerator.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java index a03adc947ed..d17f07afeef 100644 --- a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java +++ b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java @@ -645,12 +645,10 @@ private void checkClass(Class crdClass) { } } - if (crdClass.getName().startsWith("io.strimzi.")) { - checkJsonInclude(crdClass); - checkJsonPropertyOrder(crdClass); - } if (crdClass.getName().startsWith("io.strimzi.api.")) { checkInherits(crdClass, "io.strimzi.api.kafka.model.common.UnknownPropertyPreserving"); + checkJsonInclude(crdClass); + checkJsonPropertyOrder(crdClass); } checkClassOverrides(crdClass, "equals", Object.class); From d80f6c0e82cbe530e7899650566ac78e0aca0027 Mon Sep 17 00:00:00 2001 From: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> Date: Wed, 17 Jul 2024 14:36:52 +0200 Subject: [PATCH 47/62] Update CHANGELOG.md Co-authored-by: Jakub Scholz Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- CHANGELOG.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db76dfe20e0..65777fd56a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,12 +3,7 @@ ## 0.43.0 * Added alerts for Connectors/Tasks in failed state. - -Added support for additional volumes in CRDs: -* Users can specify volumes and volumeMounts fields in the Kafka, KafkaConnect, KafkaBridge, KafkaMirrorMaker2, EntityOperator, CruiseControl, KafkaExporter, and Zookeeper CRDs. -* Supported volume types include Secret, ConfigMap, EmptyDir, and PersistentVolumeClaims. -* All additional mounted paths are mounted under `/mnt` to ensure backwards compatibility for the evolution of kafka and this operator. -* Example configurations and guidelines have been added to the documentation. +* Support for specifying additional volumes and volume mounts in Strimzi custom resources ## 0.42.0 From ccc41711c0b70dd9fdff10bcc2f1256b95a6721c Mon Sep 17 00:00:00 2001 From: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> Date: Wed, 17 Jul 2024 15:24:35 +0200 Subject: [PATCH 48/62] Update documentation/modules/overview/con-configuration-points-common.adoc Co-authored-by: Jakub Scholz Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../con-configuration-points-common.adoc | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/documentation/modules/overview/con-configuration-points-common.adoc b/documentation/modules/overview/con-configuration-points-common.adoc index 92e5dafbdb0..7af7cdf08f0 100644 --- a/documentation/modules/overview/con-configuration-points-common.adoc +++ b/documentation/modules/overview/con-configuration-points-common.adoc @@ -69,16 +69,17 @@ spec: == Additional Volumes Strimzi supports specifying additional volumes and volume mounts in the following components: -- Kafka -- Kafka Connect -- Kafka Bridge -- Kafka MirrorMaker2 -- Entity Operator -- Cruise Control -- Kafka Exporter -- Zookeeper -- User Operator -- Topic Operator + +* Kafka +* Kafka Connect +* Kafka Bridge +* Kafka MirrorMaker2 +* Entity Operator +* Cruise Control +* Kafka Exporter +* Zookeeper +* User Operator +* Topic Operator All additional mounted paths are located inside `/mnt` to ensure compatibility with future Kafka and Strimzi updates. From d5ff6e9a0d19ac1f32bbaad37cd31de28cbe5946 Mon Sep 17 00:00:00 2001 From: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> Date: Wed, 17 Jul 2024 15:25:12 +0200 Subject: [PATCH 49/62] Update documentation/modules/overview/con-configuration-points-common.adoc Co-authored-by: Jakub Scholz Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../modules/overview/con-configuration-points-common.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/documentation/modules/overview/con-configuration-points-common.adoc b/documentation/modules/overview/con-configuration-points-common.adoc index 7af7cdf08f0..8a37ef8b851 100644 --- a/documentation/modules/overview/con-configuration-points-common.adoc +++ b/documentation/modules/overview/con-configuration-points-common.adoc @@ -97,6 +97,7 @@ Supported Volume Types kind: Kafka spec: kafka: + # ... template: pod: volumes: From 1a5882969d5951b48750ce5c247089329f62a3fd Mon Sep 17 00:00:00 2001 From: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> Date: Wed, 17 Jul 2024 15:25:21 +0200 Subject: [PATCH 50/62] Update documentation/modules/overview/con-configuration-points-common.adoc Co-authored-by: Jakub Scholz Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../modules/overview/con-configuration-points-common.adoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/documentation/modules/overview/con-configuration-points-common.adoc b/documentation/modules/overview/con-configuration-points-common.adoc index 8a37ef8b851..7245bb3e78f 100644 --- a/documentation/modules/overview/con-configuration-points-common.adoc +++ b/documentation/modules/overview/con-configuration-points-common.adoc @@ -85,10 +85,10 @@ All additional mounted paths are located inside `/mnt` to ensure compatibility w Supported Volume Types -- Secret -- ConfigMap -- EmptyDir -- PersistentVolumeClaims +* Secret +* ConfigMap +* EmptyDir +* PersistentVolumeClaims [discrete] == Example configuration for additional volumes: From d8aefb253117ad322f7bdf6b2078b3b0a5031aca Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Wed, 17 Jul 2024 16:22:23 +0200 Subject: [PATCH 51/62] Changes based on feedback, attempt to remove whitespace, refactor check for null in addAdditionalVolumeMounts Signed-off-by: KastTrifork --- .../operator/cluster/model/CruiseControl.java | 6 +++--- .../cluster/model/EntityTopicOperator.java | 5 ++--- .../cluster/model/EntityUserOperator.java | 7 +++---- .../cluster/model/KafkaBridgeCluster.java | 6 +++--- .../cluster/model/KafkaConnectBuild.java | 5 ++--- .../cluster/model/KafkaConnectCluster.java | 5 ++--- .../operator/cluster/model/KafkaExporter.java | 6 +++--- .../cluster/model/KafkaMirrorMaker2Cluster.java | 6 +++--- .../operator/cluster/model/TemplateUtils.java | 17 ++++++++++------- .../cluster/model/ZookeeperCluster.java | 7 +++---- .../model/KafkaMirrorMaker2ClusterTest.java | 6 +++--- .../io/strimzi/crdgenerator/CrdGenerator.java | 2 +- 12 files changed, 38 insertions(+), 40 deletions(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java index 77dd5a50709..e64deb05b16 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java @@ -344,9 +344,9 @@ protected List getVolumeMounts() { volumeMounts.add(createVolumeMount(CruiseControl.TLS_CA_CERTS_VOLUME_NAME, CruiseControl.TLS_CA_CERTS_VOLUME_MOUNT)); volumeMounts.add(createVolumeMount(CruiseControl.API_AUTH_CONFIG_VOLUME_NAME, CruiseControl.API_AUTH_CONFIG_VOLUME_MOUNT)); volumeMounts.add(createVolumeMount(CONFIG_VOLUME_NAME, CONFIG_VOLUME_MOUNT)); - if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMounts, templateContainer.getVolumeMounts()); - } + + addAdditionalVolumeMounts(volumeMounts, templateContainer.getVolumeMounts()); + return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java index f04880302d0..c6c0f814c46 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java @@ -233,9 +233,8 @@ private List getVolumeMounts() { if (this.cruiseControlEnabled) { result.add(VolumeUtils.createVolumeMount(EntityOperator.ETO_CC_API_VOLUME_NAME, EntityOperator.ETO_CC_API_VOLUME_MOUNT)); } - if (templateContainer != null) { - addAdditionalVolumeMounts(result, templateContainer.getVolumeMounts()); - } + addAdditionalVolumeMounts(result, templateContainer.getVolumeMounts()); + return Collections.unmodifiableList(result); } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java index 2c95cca9d4b..cba8f47bfde 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java @@ -242,10 +242,9 @@ private List getVolumeMounts() { volumeMounts.add(VolumeUtils.createVolumeMount(LOG_AND_METRICS_CONFIG_VOLUME_NAME, LOG_AND_METRICS_CONFIG_VOLUME_MOUNT)); volumeMounts.add(VolumeUtils.createVolumeMount(EntityOperator.EUO_CERTS_VOLUME_NAME, EntityOperator.EUO_CERTS_VOLUME_MOUNT)); volumeMounts.add(VolumeUtils.createVolumeMount(EntityOperator.TLS_SIDECAR_CA_CERTS_VOLUME_NAME, EntityOperator.TLS_SIDECAR_CA_CERTS_VOLUME_MOUNT)); - - if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMounts, templateContainer.getVolumeMounts()); - } + + addAdditionalVolumeMounts(volumeMounts, templateContainer.getVolumeMounts()); + return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java index fc0e4495364..28ec85b7035 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java @@ -333,9 +333,9 @@ protected List getVolumeMounts() { } AuthenticationUtils.configureClientAuthenticationVolumeMounts(authentication, volumeMountList, TLS_CERTS_BASE_VOLUME_MOUNT, PASSWORD_VOLUME_MOUNT, OAUTH_TLS_CERTS_BASE_VOLUME_MOUNT, "oauth-certs"); - if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); - } + + addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); + return volumeMountList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java index a56a4efd2b1..b750304f6f1 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java @@ -307,9 +307,8 @@ private List getVolumeMounts() { } else { throw new RuntimeException("Kubernetes build requires output of type `docker`."); } - if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMounts, templateContainer.getVolumeMounts()); - } + addAdditionalVolumeMounts(volumeMounts, templateContainer.getVolumeMounts()); + return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java index 5d407b254a5..82e6fd5e342 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java @@ -445,9 +445,8 @@ protected List getVolumeMounts() { AuthenticationUtils.configureClientAuthenticationVolumeMounts(authentication, volumeMountList, TLS_CERTS_BASE_VOLUME_MOUNT, PASSWORD_VOLUME_MOUNT, OAUTH_TLS_CERTS_BASE_VOLUME_MOUNT, "oauth-certs"); volumeMountList.addAll(getExternalConfigurationVolumeMounts()); - if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); - } + addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); + return volumeMountList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java index e53b9fc141c..2d821db924c 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java @@ -272,9 +272,9 @@ private List getVolumeMounts() { volumeList.add(VolumeUtils.createTempDirVolumeMount()); volumeList.add(VolumeUtils.createVolumeMount(KAFKA_EXPORTER_CERTS_VOLUME_NAME, KAFKA_EXPORTER_CERTS_VOLUME_MOUNT)); volumeList.add(VolumeUtils.createVolumeMount(CLUSTER_CA_CERTS_VOLUME_NAME, CLUSTER_CA_CERTS_VOLUME_MOUNT)); - if (templateContainer != null) { - addAdditionalVolumeMounts(volumeList, templateContainer.getVolumeMounts()); - } + + addAdditionalVolumeMounts(volumeList, templateContainer.getVolumeMounts()); + return volumeList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java index f83b960231c..cbff4eef0eb 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java @@ -197,9 +197,9 @@ protected List getVolumeMounts() { AuthenticationUtils.configureClientAuthenticationVolumeMounts(mirrorMaker2Cluster.getAuthentication(), volumeMountList, tlsVolumeMountPath, passwordVolumeMountPath, oauthTlsVolumeMountPath, mirrorMaker2Cluster.getAlias() + "-oauth-certs", mirrorMaker2Cluster.getAlias() + '-', true, oauthVolumeMountPath); } - if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); - } + + addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); + return volumeMountList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index 519b2e040ee..7914acf5646 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -43,7 +43,7 @@ public class TemplateUtils { * @param template The resource template * @return Map with custom labels from the template or null if not set */ - public static Map labels(HasMetadataTemplate template) { + public static Map labels(HasMetadataTemplate template) { if (template != null && template.getMetadata() != null) { return template.getMetadata().getLabels(); @@ -59,7 +59,10 @@ public static Map labels(HasMetadataTemplate template) { * @param existingVolumes The list of existing volumes to which the additional volumes will be added. */ public static void addAdditionalVolumes(PodTemplate templatePod, List existingVolumes) { - if (templatePod.getVolumes() != null) { + boolean checkForNotNull = templatePod != null || templatePod.getVolumes() == null; + if (checkForNotNull) { + return; + } // Extract the names and paths of the existing volumes List existingVolumeNames = existingVolumes.stream().map(Volume::getName).toList(); @@ -84,7 +87,6 @@ public static void addAdditionalVolumes(PodTemplate templatePod, List ex } templatePod.getVolumes().forEach(volumeConfig -> existingVolumes.add(createVolumeFromConfig(volumeConfig))); - } } /** @@ -96,7 +98,7 @@ public static void addAdditionalVolumes(PodTemplate templatePod, List ex * @throws RuntimeException If a forbidden mount path is used. */ public static void addAdditionalVolumeMounts(List volumeMounts, List additionalVolumeMounts) { - if (additionalVolumeMounts == null) { + if (additionalVolumeMounts == null || volumeMounts == null) { return; } @@ -134,10 +136,11 @@ private static Volume createVolumeFromConfig(AdditionalVolume volumeConfig) { * Extracts custom annotations configured through the Strimzi API resource templates. This method deals the null * checks and makes the code using it more easy to read. * - * @param template The resource template - * @return Map with custom annotations from the template or null if not set + * @param template The resource template + * + * @return Map with custom annotations from the template or null if not set */ - public static Map annotations(HasMetadataTemplate template) { + public static Map annotations(HasMetadataTemplate template) { if (template != null && template.getMetadata() != null) { return template.getMetadata().getAnnotations(); diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java index 295a1b22981..30730c15f84 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java @@ -573,10 +573,9 @@ private List getVolumeMounts() { volumeMountList.add(VolumeUtils.createVolumeMount(LOG_AND_METRICS_CONFIG_VOLUME_NAME, LOG_AND_METRICS_CONFIG_VOLUME_MOUNT)); volumeMountList.add(VolumeUtils.createVolumeMount(ZOOKEEPER_NODE_CERTIFICATES_VOLUME_NAME, ZOOKEEPER_NODE_CERTIFICATES_VOLUME_MOUNT)); volumeMountList.add(VolumeUtils.createVolumeMount(ZOOKEEPER_CLUSTER_CA_VOLUME_NAME, ZOOKEEPER_CLUSTER_CA_VOLUME_MOUNT)); - - if (templateContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); - } + + addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); + return volumeMountList; } diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java index 82a85926707..60a221567fd 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java @@ -1743,7 +1743,7 @@ public void testPodSetWithOAuthWithClientSecret() { .build(); KafkaMirrorMaker2 resource = new KafkaMirrorMaker2Builder(this.resource) .editSpec() - .withClusters(targetClusterWithOAuthWithClientSecret) + .withClusters(targetClusterWithOAuthWithClientSecret) .endSpec() .build(); @@ -1836,7 +1836,7 @@ public void testPodSetWithOAuthWithMissingUri() { .build(); KafkaMirrorMaker2 resource = new KafkaMirrorMaker2Builder(this.resource) .editSpec() - .withClusters(targetClusterWithOAuthWithMissingUri) + .withClusters(targetClusterWithOAuthWithMissingUri) .endSpec() .build(); @@ -1876,7 +1876,7 @@ public void testPodSetWithOAuthWithTls() { .build(); KafkaMirrorMaker2 resource = new KafkaMirrorMaker2Builder(this.resource) .editSpec() - .withClusters(targetClusterWithOAuthWithTls) + .withClusters(targetClusterWithOAuthWithTls) .endSpec() .build(); diff --git a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java index d17f07afeef..4c261917270 100644 --- a/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java +++ b/crd-generator/src/main/java/io/strimzi/crdgenerator/CrdGenerator.java @@ -645,7 +645,7 @@ private void checkClass(Class crdClass) { } } - if (crdClass.getName().startsWith("io.strimzi.api.")) { + if (crdClass.getName().startsWith("io.strimzi.")) { checkInherits(crdClass, "io.strimzi.api.kafka.model.common.UnknownPropertyPreserving"); checkJsonInclude(crdClass); checkJsonPropertyOrder(crdClass); From d7e808b4aaf94883598d293543c90396a6846107 Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Wed, 17 Jul 2024 21:54:06 +0200 Subject: [PATCH 52/62] Fixed checkstyle error Signed-off-by: KastTrifork --- .../operator/cluster/model/TemplateUtils.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index 7914acf5646..4a66bc2bee0 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -64,29 +64,29 @@ public static void addAdditionalVolumes(PodTemplate templatePod, List ex return; } - // Extract the names and paths of the existing volumes - List existingVolumeNames = existingVolumes.stream().map(Volume::getName).toList(); + // Extract the names and paths of the existing volumes + List existingVolumeNames = existingVolumes.stream().map(Volume::getName).toList(); - // Check if there are any invalid volume names - List invalidNames = existingVolumeNames.stream().filter(name -> !VOLUME_NAME_REGEX.matcher(name).matches()).toList(); + // Check if there are any invalid volume names + List invalidNames = existingVolumeNames.stream().filter(name -> !VOLUME_NAME_REGEX.matcher(name).matches()).toList(); - // Find duplicate names in the additional volumes - List duplicateNames = templatePod.getVolumes().stream() - .map(AdditionalVolume::getName) - .filter(existingVolumeNames::contains) - .toList(); + // Find duplicate names in the additional volumes + List duplicateNames = templatePod.getVolumes().stream() + .map(AdditionalVolume::getName) + .filter(existingVolumeNames::contains) + .toList(); - // Throw an exception if there are any invalid volume names - if (!invalidNames.isEmpty()) { - throw new InvalidResourceException("Volume names " + invalidNames + " are invalid and do not match the pattern " + VOLUME_NAME_REGEX); - } + // Throw an exception if there are any invalid volume names + if (!invalidNames.isEmpty()) { + throw new InvalidResourceException("Volume names " + invalidNames + " are invalid and do not match the pattern " + VOLUME_NAME_REGEX); + } - // Throw an exception if duplicates are found - if (!duplicateNames.isEmpty()) { - throw new InvalidResourceException("Duplicate volume names found in additional volumes: " + duplicateNames); - } + // Throw an exception if duplicates are found + if (!duplicateNames.isEmpty()) { + throw new InvalidResourceException("Duplicate volume names found in additional volumes: " + duplicateNames); + } - templatePod.getVolumes().forEach(volumeConfig -> existingVolumes.add(createVolumeFromConfig(volumeConfig))); + templatePod.getVolumes().forEach(volumeConfig -> existingVolumes.add(createVolumeFromConfig(volumeConfig))); } /** From fea2cef5ca56f222b8f56f428c0f458e90ecca4c Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Thu, 18 Jul 2024 10:22:08 +0200 Subject: [PATCH 53/62] Bug fix Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../java/io/strimzi/operator/cluster/model/TemplateUtils.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index 4a66bc2bee0..f9d5a0f130b 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -59,8 +59,7 @@ public static Map labels(HasMetadataTemplate template) { * @param existingVolumes The list of existing volumes to which the additional volumes will be added. */ public static void addAdditionalVolumes(PodTemplate templatePod, List existingVolumes) { - boolean checkForNotNull = templatePod != null || templatePod.getVolumes() == null; - if (checkForNotNull) { + if (templatePod == null || templatePod.getVolumes() == null) { return; } From e1b6a9332a9a5a9d5da0627490c88fd90cf1eaf1 Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Thu, 18 Jul 2024 19:40:42 +0200 Subject: [PATCH 54/62] Added test for AdditionalVolumes in TemplateUtilsTest Signed-off-by: KastTrifork --- .../cluster/model/TemplateUtilsTest.java | 95 +++++++++++++++++-- 1 file changed, 88 insertions(+), 7 deletions(-) diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.java index d4723f31b5a..14a75aa00ce 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.java @@ -4,22 +4,34 @@ */ package io.strimzi.operator.cluster.model; -import io.strimzi.api.kafka.model.common.template.DeploymentStrategy; -import io.strimzi.api.kafka.model.common.template.DeploymentTemplate; -import io.strimzi.api.kafka.model.common.template.DeploymentTemplateBuilder; +import io.fabric8.kubernetes.api.model.Volume; +import io.fabric8.kubernetes.api.model.VolumeBuilder; +import io.fabric8.kubernetes.api.model.VolumeMount; +import io.fabric8.kubernetes.api.model.VolumeMountBuilder; +import io.strimzi.api.kafka.model.common.template.AdditionalVolume; import io.strimzi.api.kafka.model.common.template.ResourceTemplate; +import io.strimzi.api.kafka.model.common.template.PodTemplate; +import io.strimzi.api.kafka.model.common.template.PodTemplateBuilder; +import io.strimzi.api.kafka.model.common.template.AdditionalVolumeBuilder; import io.strimzi.api.kafka.model.common.template.ResourceTemplateBuilder; +import io.strimzi.operator.common.model.InvalidResourceException; import io.strimzi.test.annotations.ParallelSuite; import io.strimzi.test.annotations.ParallelTest; +import java.util.ArrayList; +import java.util.List; import java.util.Map; +import static io.strimzi.operator.cluster.model.TemplateUtils.ALLOWED_MOUNT_PATH; +import static io.strimzi.operator.cluster.model.TemplateUtils.VOLUME_NAME_REGEX; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; @ParallelSuite public class TemplateUtilsTest { + @ParallelTest public void testMetadataWithNullTemplate() { assertThat(TemplateUtils.annotations(null), is(nullValue())); @@ -60,9 +72,78 @@ public void testLabels() { } @ParallelTest - public void testDeploymentStrategy() { - assertThat(TemplateUtils.deploymentStrategy(null, DeploymentStrategy.RECREATE), is(DeploymentStrategy.RECREATE)); - assertThat(TemplateUtils.deploymentStrategy(new DeploymentTemplate(), DeploymentStrategy.ROLLING_UPDATE), is(DeploymentStrategy.ROLLING_UPDATE)); - assertThat(TemplateUtils.deploymentStrategy(new DeploymentTemplateBuilder().withDeploymentStrategy(DeploymentStrategy.RECREATE).build(), DeploymentStrategy.ROLLING_UPDATE), is(DeploymentStrategy.RECREATE)); + public void testAddAdditionalVolumes_InvalidNames() { + List existingVolumes = new ArrayList<>(); + existingVolumes.add(new VolumeBuilder().withName("invalid_name!").build()); + PodTemplate templatePod = new PodTemplateBuilder().withVolumes(new ArrayList<>()).build(); + + InvalidResourceException exception = assertThrows(InvalidResourceException.class, () -> { + TemplateUtils.addAdditionalVolumes(templatePod, existingVolumes); + }); + + assertThat(exception.getMessage(), is("Volume names [invalid_name!] are invalid and do not match the pattern " + VOLUME_NAME_REGEX)); + } + + @ParallelTest + public void testAddAdditionalVolumes_DuplicateNames() { + List existingVolumes = new ArrayList<>(); + existingVolumes.add(new VolumeBuilder().withName("duplicate").build()); + List additionalVolumes = new ArrayList<>(); + additionalVolumes.add(new AdditionalVolumeBuilder().withName("duplicate").build()); + PodTemplate templatePod = new PodTemplateBuilder().withVolumes(additionalVolumes).build(); + + InvalidResourceException exception = assertThrows(InvalidResourceException.class, () -> { + TemplateUtils.addAdditionalVolumes(templatePod, existingVolumes); + }); + + assertThat(exception.getMessage(), is("Duplicate volume names found in additional volumes: [duplicate]")); + } + + @ParallelTest + public void testAddAdditionalVolumes_ValidInputs() { + List existingVolumes = new ArrayList<>(); + existingVolumes.add(new VolumeBuilder().withName("existingVolume1").build()); + List additionalVolumes = new ArrayList<>(); + additionalVolumes.add(new AdditionalVolumeBuilder().withName("newVolume1").build()); + additionalVolumes.add(new AdditionalVolumeBuilder().withName("newVolume2").build()); + PodTemplate templatePod = new PodTemplateBuilder().withVolumes(additionalVolumes).build(); + + TemplateUtils.addAdditionalVolumes(templatePod, existingVolumes); + + assertThat(existingVolumes.size(), is(3)); + assertThat(existingVolumes.get(1).getName(), is("newVolume1")); + assertThat(existingVolumes.get(2).getName(), is("newVolume2")); + } + + + @ParallelTest + public void testAddAdditionalVolumeMounts_ValidInputs() { + List volumeMounts = new ArrayList<>(); + List additionalVolumeMounts = new ArrayList<>(); + additionalVolumeMounts.add(new VolumeMountBuilder().withMountPath(ALLOWED_MOUNT_PATH + "/path1").build()); + additionalVolumeMounts.add(new VolumeMountBuilder().withMountPath(ALLOWED_MOUNT_PATH + "/path2").build()); + + TemplateUtils.addAdditionalVolumeMounts(volumeMounts, additionalVolumeMounts); + + assertThat(volumeMounts.size(), is(2)); + assertThat(volumeMounts.get(0).getMountPath(), is(ALLOWED_MOUNT_PATH + "/path1")); + assertThat(volumeMounts.get(1).getMountPath(), is(ALLOWED_MOUNT_PATH + "/path2")); + } + + @ParallelTest + public void testAddAdditionalVolumeMounts_InvalidInputs() { + List volumeMounts = new ArrayList<>(); + List additionalVolumeMounts = new ArrayList<>(); + additionalVolumeMounts.add(new VolumeMountBuilder().withMountPath("/forbidden/path1").build()); + + InvalidResourceException exception = assertThrows(InvalidResourceException.class, () -> { + TemplateUtils.addAdditionalVolumeMounts(volumeMounts, additionalVolumeMounts); + }); + + assertThat(exception.getMessage(), is(String.format("Forbidden path found in additional volumes. Should start with %s", ALLOWED_MOUNT_PATH))); } + + + + } From 45ed5e1ee16c0ed9eea15a2760bcad0b7925ffda Mon Sep 17 00:00:00 2001 From: pegtrifork Date: Fri, 19 Jul 2024 14:37:41 +0200 Subject: [PATCH 55/62] Fix checkstyle error Signed-off-by: pegtrifork --- .../io/strimzi/operator/cluster/model/TemplateUtilsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.java index aa000a399eb..57e03f42c6a 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.java @@ -9,9 +9,9 @@ import io.fabric8.kubernetes.api.model.VolumeMount; import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.strimzi.api.kafka.model.common.template.AdditionalVolume; +import io.strimzi.api.kafka.model.common.template.AdditionalVolumeBuilder; import io.strimzi.api.kafka.model.common.template.PodTemplate; import io.strimzi.api.kafka.model.common.template.PodTemplateBuilder; -import io.strimzi.api.kafka.model.common.template.AdditionalVolumeBuilder; import io.strimzi.api.kafka.model.common.template.ResourceTemplate; import io.strimzi.api.kafka.model.common.template.ResourceTemplateBuilder; import io.strimzi.operator.common.model.InvalidResourceException; From 84aa5f7381abb642ad923c435a81885bafa30a2d Mon Sep 17 00:00:00 2001 From: pegtrifork Date: Mon, 22 Jul 2024 10:01:09 +0200 Subject: [PATCH 56/62] Finish refactor of check for null Signed-off-by: pegtrifork --- .../operator/cluster/model/CruiseControl.java | 10 ++++------ .../operator/cluster/model/EntityTopicOperator.java | 2 +- .../operator/cluster/model/EntityUserOperator.java | 2 +- .../operator/cluster/model/KafkaBridgeCluster.java | 7 +++---- .../operator/cluster/model/KafkaCluster.java | 13 ++++++------- .../operator/cluster/model/KafkaConnectBuild.java | 2 +- .../operator/cluster/model/KafkaConnectCluster.java | 6 ++---- .../operator/cluster/model/KafkaExporter.java | 2 +- .../cluster/model/KafkaMirrorMaker2Cluster.java | 2 +- .../operator/cluster/model/TemplateUtils.java | 11 ++++++----- .../operator/cluster/model/ZookeeperCluster.java | 2 +- .../operator/cluster/model/TemplateUtilsTest.java | 10 ++++++++-- 12 files changed, 35 insertions(+), 34 deletions(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java index e64deb05b16..9cccd9584b2 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java @@ -329,11 +329,9 @@ protected List getVolumes(boolean isOpenShift) { volumes.add(createSecretVolume(TLS_CA_CERTS_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); volumes.add(createSecretVolume(API_AUTH_CONFIG_VOLUME_NAME, CruiseControlResources.apiSecretName(cluster), isOpenShift)); volumes.add(createConfigMapVolume(CONFIG_VOLUME_NAME, CruiseControlResources.configMapName(cluster))); - - if (templatePod != null) { - addAdditionalVolumes(templatePod, volumes); - } - + + addAdditionalVolumes(templatePod, volumes); + return volumes; } @@ -345,7 +343,7 @@ protected List getVolumeMounts() { volumeMounts.add(createVolumeMount(CruiseControl.API_AUTH_CONFIG_VOLUME_NAME, CruiseControl.API_AUTH_CONFIG_VOLUME_MOUNT)); volumeMounts.add(createVolumeMount(CONFIG_VOLUME_NAME, CONFIG_VOLUME_MOUNT)); - addAdditionalVolumeMounts(volumeMounts, templateContainer.getVolumeMounts()); + addAdditionalVolumeMounts(volumeMounts, templateContainer); return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java index c6c0f814c46..c26ab923143 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java @@ -233,7 +233,7 @@ private List getVolumeMounts() { if (this.cruiseControlEnabled) { result.add(VolumeUtils.createVolumeMount(EntityOperator.ETO_CC_API_VOLUME_NAME, EntityOperator.ETO_CC_API_VOLUME_MOUNT)); } - addAdditionalVolumeMounts(result, templateContainer.getVolumeMounts()); + addAdditionalVolumeMounts(result, templateContainer); return Collections.unmodifiableList(result); } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java index cba8f47bfde..4d2b613f1ec 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java @@ -243,7 +243,7 @@ private List getVolumeMounts() { volumeMounts.add(VolumeUtils.createVolumeMount(EntityOperator.EUO_CERTS_VOLUME_NAME, EntityOperator.EUO_CERTS_VOLUME_MOUNT)); volumeMounts.add(VolumeUtils.createVolumeMount(EntityOperator.TLS_SIDECAR_CA_CERTS_VOLUME_NAME, EntityOperator.TLS_SIDECAR_CA_CERTS_VOLUME_MOUNT)); - addAdditionalVolumeMounts(volumeMounts, templateContainer.getVolumeMounts()); + addAdditionalVolumeMounts(volumeMounts, templateContainer); return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java index 68431966e5c..6c7d616f6e4 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java @@ -324,7 +324,7 @@ protected List getVolumeMounts() { AuthenticationUtils.configureClientAuthenticationVolumeMounts(authentication, volumeMountList, TLS_CERTS_BASE_VOLUME_MOUNT, PASSWORD_VOLUME_MOUNT, OAUTH_TLS_CERTS_BASE_VOLUME_MOUNT, "oauth-certs"); - addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); + addAdditionalVolumeMounts(volumeMountList, templateContainer); return volumeMountList; } @@ -332,9 +332,8 @@ protected List getVolumeMounts() { private List getInitContainerVolumeMounts() { List volumeMountList = new ArrayList<>(); volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); - if (templateInitContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateInitContainer.getVolumeMounts()); - } + + addAdditionalVolumeMounts(volumeMountList, templateInitContainer); return volumeMountList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java index 6415bc51d01..cbd0eba4ea4 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java @@ -41,6 +41,7 @@ import io.strimzi.api.kafka.model.common.CertAndKeySecretSource; import io.strimzi.api.kafka.model.common.Condition; import io.strimzi.api.kafka.model.common.Rack; +import io.strimzi.api.kafka.model.common.template.ContainerTemplate; import io.strimzi.api.kafka.model.common.template.ExternalTrafficPolicy; import io.strimzi.api.kafka.model.common.template.InternalServiceTemplate; import io.strimzi.api.kafka.model.common.template.PodDisruptionBudgetTemplate; @@ -1400,11 +1401,11 @@ private List getPodSetVolumes(String podName, Storage storage, PodTempla * Generates the volume mounts for a Kafka container * * @param storage Storage configuration for which the volume mounts should be generated - * @param additionalVolumeMounts Additional volume mounts to include in the returned list + * @param containerTemplate The container template that contains additional volume mounts to include in the returned list * * @return List of volume mounts */ - private List getVolumeMounts(Storage storage, List additionalVolumeMounts) { + private List getVolumeMounts( Storage storage, ContainerTemplate containerTemplate) { List volumeMountList = new ArrayList<>(VolumeUtils.createVolumeMounts(storage, false)); volumeMountList.add(VolumeUtils.createTempDirVolumeMount()); volumeMountList.add(VolumeUtils.createVolumeMount(CLUSTER_CA_CERTS_VOLUME, CLUSTER_CA_CERTS_VOLUME_MOUNT)); @@ -1445,7 +1446,7 @@ private List getVolumeMounts(Storage storage, List add CertUtils.createTrustedCertificatesVolumeMounts(volumeMountList, keycloakAuthz.getTlsTrustedCertificates(), TRUSTED_CERTS_BASE_VOLUME_MOUNT + "/authz-keycloak-certs/", "authz-keycloak"); } - addAdditionalVolumeMounts(volumeMountList, additionalVolumeMounts); + addAdditionalVolumeMounts(volumeMountList, containerTemplate); return volumeMountList; } @@ -1453,9 +1454,7 @@ private List getVolumeMounts(Storage storage, List add private List getInitContainerVolumeMounts(KafkaPool pool) { List volumeMountList = new ArrayList<>(); volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); - if (pool.templateInitContainer != null) { - addAdditionalVolumeMounts(volumeMountList, pool.templateInitContainer.getVolumeMounts()); - } + addAdditionalVolumeMounts(volumeMountList, pool.templateInitContainer); return volumeMountList; } @@ -1548,7 +1547,7 @@ protected List getInitContainerEnvVars(KafkaPool pool) { pool.resources, getEnvVars(pool), getContainerPortList(pool), - getVolumeMounts(pool.storage, pool.templateContainer == null ? Collections.emptyList() : pool.templateContainer.getVolumeMounts()), + getVolumeMounts(pool.storage, pool.templateContainer), ProbeUtils.defaultBuilder(livenessProbeOptions).withNewExec().withCommand("/opt/kafka/kafka_liveness.sh").endExec().build(), ProbeUtils.defaultBuilder(readinessProbeOptions).withNewExec().withCommand("/opt/kafka/kafka_readiness.sh").endExec().build(), imagePullPolicy diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java index b750304f6f1..25574c5cdd2 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java @@ -307,7 +307,7 @@ private List getVolumeMounts() { } else { throw new RuntimeException("Kubernetes build requires output of type `docker`."); } - addAdditionalVolumeMounts(volumeMounts, templateContainer.getVolumeMounts()); + addAdditionalVolumeMounts(volumeMounts, templateContainer); return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java index 37c24e09364..6c70b680596 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java @@ -446,7 +446,7 @@ protected List getVolumeMounts() { AuthenticationUtils.configureClientAuthenticationVolumeMounts(authentication, volumeMountList, TLS_CERTS_BASE_VOLUME_MOUNT, PASSWORD_VOLUME_MOUNT, OAUTH_TLS_CERTS_BASE_VOLUME_MOUNT, "oauth-certs"); volumeMountList.addAll(getExternalConfigurationVolumeMounts()); - addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); + addAdditionalVolumeMounts(volumeMountList, templateContainer); return volumeMountList; } @@ -454,9 +454,7 @@ protected List getVolumeMounts() { private List getInitContainerVolumeMounts() { List volumeMountList = new ArrayList<>(); volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); - if (templateInitContainer != null) { - addAdditionalVolumeMounts(volumeMountList, templateInitContainer.getVolumeMounts()); - } + addAdditionalVolumeMounts(volumeMountList, templateInitContainer); return volumeMountList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java index 2d821db924c..ae2ff6630eb 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java @@ -273,7 +273,7 @@ private List getVolumeMounts() { volumeList.add(VolumeUtils.createVolumeMount(KAFKA_EXPORTER_CERTS_VOLUME_NAME, KAFKA_EXPORTER_CERTS_VOLUME_MOUNT)); volumeList.add(VolumeUtils.createVolumeMount(CLUSTER_CA_CERTS_VOLUME_NAME, CLUSTER_CA_CERTS_VOLUME_MOUNT)); - addAdditionalVolumeMounts(volumeList, templateContainer.getVolumeMounts()); + addAdditionalVolumeMounts(volumeList, templateContainer); return volumeList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java index 652297dde87..669aad63c3c 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java @@ -199,7 +199,7 @@ protected List getVolumeMounts() { } - addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); + addAdditionalVolumeMounts(volumeMountList, templateContainer); return volumeMountList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index f9d5a0f130b..3947ccf58d0 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -8,6 +8,7 @@ import io.fabric8.kubernetes.api.model.VolumeBuilder; import io.fabric8.kubernetes.api.model.VolumeMount; import io.strimzi.api.kafka.model.common.template.AdditionalVolume; +import io.strimzi.api.kafka.model.common.template.ContainerTemplate; import io.strimzi.api.kafka.model.common.template.DeploymentStrategy; import io.strimzi.api.kafka.model.common.template.DeploymentTemplate; import io.strimzi.api.kafka.model.common.template.HasMetadataTemplate; @@ -93,21 +94,21 @@ public static void addAdditionalVolumes(PodTemplate templatePod, List ex * additional volume mount paths are forbidden. * * @param volumeMounts The list of volume mounts to be added to - * @param additionalVolumeMounts The list of volume mounts to add + * @param containerTemplate The container template that contains the additional volumes. * @throws RuntimeException If a forbidden mount path is used. */ - public static void addAdditionalVolumeMounts(List volumeMounts, List additionalVolumeMounts) { - if (additionalVolumeMounts == null || volumeMounts == null) { + public static void addAdditionalVolumeMounts(List volumeMounts, ContainerTemplate containerTemplate) { + if (containerTemplate == null || containerTemplate.getVolumeMounts() == null || volumeMounts == null) { return; } - boolean isForbiddenPath = additionalVolumeMounts.stream().anyMatch(additionalVolume -> !additionalVolume.getMountPath().startsWith(ALLOWED_MOUNT_PATH)); + boolean isForbiddenPath = containerTemplate.getVolumeMounts().stream().anyMatch(additionalVolume -> !additionalVolume.getMountPath().startsWith(ALLOWED_MOUNT_PATH)); if (isForbiddenPath) { throw new InvalidResourceException(String.format("Forbidden path found in additional volumes. Should start with %s", ALLOWED_MOUNT_PATH)); } - volumeMounts.addAll(additionalVolumeMounts); + volumeMounts.addAll(containerTemplate.getVolumeMounts()); } /** diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java index 30730c15f84..ac6849264bd 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java @@ -574,7 +574,7 @@ private List getVolumeMounts() { volumeMountList.add(VolumeUtils.createVolumeMount(ZOOKEEPER_NODE_CERTIFICATES_VOLUME_NAME, ZOOKEEPER_NODE_CERTIFICATES_VOLUME_MOUNT)); volumeMountList.add(VolumeUtils.createVolumeMount(ZOOKEEPER_CLUSTER_CA_VOLUME_NAME, ZOOKEEPER_CLUSTER_CA_VOLUME_MOUNT)); - addAdditionalVolumeMounts(volumeMountList, templateContainer.getVolumeMounts()); + addAdditionalVolumeMounts(volumeMountList, templateContainer); return volumeMountList; diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.java index 57e03f42c6a..f3f3101a1bf 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/TemplateUtilsTest.java @@ -10,6 +10,7 @@ import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.strimzi.api.kafka.model.common.template.AdditionalVolume; import io.strimzi.api.kafka.model.common.template.AdditionalVolumeBuilder; +import io.strimzi.api.kafka.model.common.template.ContainerTemplate; import io.strimzi.api.kafka.model.common.template.PodTemplate; import io.strimzi.api.kafka.model.common.template.PodTemplateBuilder; import io.strimzi.api.kafka.model.common.template.ResourceTemplate; @@ -123,7 +124,10 @@ public void testAddAdditionalVolumeMounts_ValidInputs() { additionalVolumeMounts.add(new VolumeMountBuilder().withMountPath(ALLOWED_MOUNT_PATH + "/path1").build()); additionalVolumeMounts.add(new VolumeMountBuilder().withMountPath(ALLOWED_MOUNT_PATH + "/path2").build()); - TemplateUtils.addAdditionalVolumeMounts(volumeMounts, additionalVolumeMounts); + ContainerTemplate containerTemplate = new ContainerTemplate(); + containerTemplate.setVolumeMounts(additionalVolumeMounts); + + TemplateUtils.addAdditionalVolumeMounts(volumeMounts, containerTemplate); assertThat(volumeMounts.size(), is(2)); assertThat(volumeMounts.get(0).getMountPath(), is(ALLOWED_MOUNT_PATH + "/path1")); @@ -135,9 +139,11 @@ public void testAddAdditionalVolumeMounts_InvalidInputs() { List volumeMounts = new ArrayList<>(); List additionalVolumeMounts = new ArrayList<>(); additionalVolumeMounts.add(new VolumeMountBuilder().withMountPath("/forbidden/path1").build()); + ContainerTemplate containerTemplate = new ContainerTemplate(); + containerTemplate.setVolumeMounts(additionalVolumeMounts); InvalidResourceException exception = assertThrows(InvalidResourceException.class, () -> { - TemplateUtils.addAdditionalVolumeMounts(volumeMounts, additionalVolumeMounts); + TemplateUtils.addAdditionalVolumeMounts(volumeMounts, containerTemplate); }); assertThat(exception.getMessage(), is(String.format("Forbidden path found in additional volumes. Should start with %s", ALLOWED_MOUNT_PATH))); From 89933eed45c59a6ad4f1d4ed1228cb41e3878d74 Mon Sep 17 00:00:00 2001 From: pegtrifork Date: Mon, 22 Jul 2024 10:15:05 +0200 Subject: [PATCH 57/62] Fix checkstyle Signed-off-by: pegtrifork --- .../java/io/strimzi/operator/cluster/model/KafkaCluster.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java index cbd0eba4ea4..65ce78d1dc7 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java @@ -1405,7 +1405,7 @@ private List getPodSetVolumes(String podName, Storage storage, PodTempla * * @return List of volume mounts */ - private List getVolumeMounts( Storage storage, ContainerTemplate containerTemplate) { + private List getVolumeMounts(Storage storage, ContainerTemplate containerTemplate) { List volumeMountList = new ArrayList<>(VolumeUtils.createVolumeMounts(storage, false)); volumeMountList.add(VolumeUtils.createTempDirVolumeMount()); volumeMountList.add(VolumeUtils.createVolumeMount(CLUSTER_CA_CERTS_VOLUME, CLUSTER_CA_CERTS_VOLUME_MOUNT)); From e009277bcf09ef4480a37438606b8b19c49b1eca Mon Sep 17 00:00:00 2001 From: Peter Kiib Egede <100785536+pegtrifork@users.noreply.github.com> Date: Tue, 23 Jul 2024 09:24:29 +0200 Subject: [PATCH 58/62] Apply suggestions from code review Co-authored-by: Jakub Scholz Signed-off-by: Peter Kiib Egede <100785536+pegtrifork@users.noreply.github.com> --- .../io/strimzi/operator/cluster/model/EntityOperator.java | 5 ++--- .../strimzi/operator/cluster/model/KafkaBridgeCluster.java | 4 +--- .../io/strimzi/operator/cluster/model/KafkaCluster.java | 4 +--- .../strimzi/operator/cluster/model/KafkaConnectBuild.java | 5 ++--- .../strimzi/operator/cluster/model/KafkaConnectCluster.java | 4 +--- .../io/strimzi/operator/cluster/model/KafkaExporter.java | 6 +++--- .../io/strimzi/operator/cluster/model/TemplateUtils.java | 2 +- .../io/strimzi/operator/cluster/model/ZookeeperCluster.java | 4 +--- 8 files changed, 12 insertions(+), 22 deletions(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.java index 64e6b192aa4..b83f1ff8749 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityOperator.java @@ -231,9 +231,8 @@ private List getVolumes(boolean isOpenShift) { volumeList.add(VolumeUtils.createTempDirVolume(USER_OPERATOR_TMP_DIRECTORY_DEFAULT_VOLUME_NAME, templatePod)); volumeList.add(VolumeUtils.createSecretVolume(EUO_CERTS_VOLUME_NAME, KafkaResources.entityUserOperatorSecretName(cluster), isOpenShift)); } - if (templatePod != null) { - addAdditionalVolumes(templatePod, volumeList); - } + + addAdditionalVolumes(templatePod, volumeList); volumeList.add(VolumeUtils.createSecretVolume(TLS_SIDECAR_CA_CERTS_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); return volumeList; diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java index 6c7d616f6e4..8a63b23d825 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java @@ -301,9 +301,7 @@ protected List getVolumes(boolean isOpenShift) { AuthenticationUtils.configureClientAuthenticationVolumes(authentication, volumeList, "oauth-certs", isOpenShift); - if (templatePod != null) { - addAdditionalVolumes(templatePod, volumeList); - } + addAdditionalVolumes(templatePod, volumeList); return volumeList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java index 65ce78d1dc7..505c4a30ead 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java @@ -1329,9 +1329,7 @@ private List generatePersistentVolumeClaimsForPool(KafkaP volumeList.add(VolumeUtils.createConfigMapVolume(LOG_AND_METRICS_CONFIG_VOLUME_NAME, podName)); volumeList.add(VolumeUtils.createEmptyDirVolume("ready-files", "1Ki", "Memory")); - if (templatePod != null) { - addAdditionalVolumes(templatePod, volumeList); - } + addAdditionalVolumes(templatePod, volumeList); for (GenericKafkaListener listener : listeners) { if (listener.isTls() diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java index 25574c5cdd2..c5e83788f42 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java @@ -282,9 +282,8 @@ private List getVolumes(boolean isOpenShift) { } else { throw new RuntimeException("Kubernetes build requires output of type `docker`."); } - if (templatePod != null) { - addAdditionalVolumes(templatePod, volumes); - } + + addAdditionalVolumes(templatePod, volumes); return volumes; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java index 6c70b680596..51b5c79508a 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java @@ -381,9 +381,7 @@ protected List getVolumes(boolean isOpenShift) { AuthenticationUtils.configureClientAuthenticationVolumes(authentication, volumeList, "oauth-certs", isOpenShift); volumeList.addAll(getExternalConfigurationVolumes(isOpenShift)); - if (templatePod != null) { - addAdditionalVolumes(templatePod, volumeList); - } + addAdditionalVolumes(templatePod, volumeList); return volumeList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java index ae2ff6630eb..79e8da62abb 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java @@ -261,9 +261,9 @@ private List getVolumes(boolean isOpenShift) { volumeList.add(VolumeUtils.createTempDirVolume(templatePod)); volumeList.add(VolumeUtils.createSecretVolume(KAFKA_EXPORTER_CERTS_VOLUME_NAME, KafkaExporterResources.secretName(cluster), isOpenShift)); volumeList.add(VolumeUtils.createSecretVolume(CLUSTER_CA_CERTS_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); - if (templatePod != null) { - addAdditionalVolumes(templatePod, volumeList); - } + + addAdditionalVolumes(templatePod, volumeList); + return volumeList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index 3947ccf58d0..5894efc893a 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -35,7 +35,7 @@ public class TemplateUtils { * Start: Must start with an alphanumeric character. * End: Must end with an alphanumeric character. **/ - public final static Pattern VOLUME_NAME_REGEX = Pattern.compile("^(?=.{0,63}$)[a-zA-Z0-9][a-zA-Z0-9-._]*[a-zA-Z0-9]$"); + /* test */ final static Pattern VOLUME_NAME_REGEX = Pattern.compile("^(?=.{0,63}$)[a-zA-Z0-9][a-zA-Z0-9-._]*[a-zA-Z0-9]$"); /** * Extracts custom labels configured through the Strimzi API resource templates. This method deals the null checks diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java index ac6849264bd..628dff061cd 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java @@ -540,9 +540,7 @@ private List getPodSetVolumes(String podName, boolean isOpenShift) { volumeList.add(VolumeUtils.createSecretVolume(ZOOKEEPER_CLUSTER_CA_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); volumeList.addAll(VolumeUtils.createPodSetVolumes(podName, storage, false)); - if (templatePod != null) { - addAdditionalVolumes(templatePod, volumeList); - } + addAdditionalVolumes(templatePod, volumeList); return volumeList; } From ca9eb61c6ba834d400c65ea01d356038240c2567 Mon Sep 17 00:00:00 2001 From: pegtrifork Date: Tue, 23 Jul 2024 09:54:18 +0200 Subject: [PATCH 59/62] Apply suggestions from code review Signed-off-by: pegtrifork --- CHANGELOG.md | 1 - .../model/common/template/PodTemplate.java | 1 - .../operator/cluster/model/KafkaCluster.java | 2 -- .../operator/cluster/model/TemplateUtils.java | 12 +++++++----- .../cluster/model/KafkaBridgeClusterTest.java | 16 ++++++++-------- .../cluster/model/KafkaExporterTest.java | 16 ++++++++-------- .../model/KafkaMirrorMaker2ClusterTest.java | 18 +++++++++--------- 7 files changed, 32 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35dfdc020b6..2a6cdc1e2f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,6 @@ On the listener `serverBearerTokenLocation` and `userNamePrefix` have been added. On the client `accessTokenLocation`, `clientAssertion`, `clientAssertionLocation`, `clientAssertionType`, and `saslExtensions` have been added. - ## 0.42.0 * Add support for Kafka 3.7.1 diff --git a/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java b/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java index 9c731c369c4..e8a43e58ba1 100644 --- a/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java +++ b/api/src/main/java/io/strimzi/api/kafka/model/common/template/PodTemplate.java @@ -199,7 +199,6 @@ public void setTmpDirSizeLimit(String tmpDirSizeLimit) { } @Description("Additional volumes that can be mounted to the pod.") - @JsonProperty("volumes") @JsonInclude(JsonInclude.Include.NON_EMPTY) public List getVolumes() { return volumes; diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java index 505c4a30ead..2481fe781b3 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java @@ -1373,8 +1373,6 @@ private List generatePersistentVolumeClaimsForPool(KafkaP return volumeList; } - - /** * Generates a list of volumes used by PodSets. For StrimziPodSet, it needs to include also all persistent claim * volumes which StatefulSet would generate on its own. diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java index 5894efc893a..9812725a29e 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/TemplateUtils.java @@ -41,8 +41,9 @@ public class TemplateUtils { * Extracts custom labels configured through the Strimzi API resource templates. This method deals the null checks * and makes the code using it more easy to read. * - * @param template The resource template - * @return Map with custom labels from the template or null if not set + * @param template The resource template + * + * @return Map with custom labels from the template or null if not set */ public static Map labels(HasMetadataTemplate template) { if (template != null @@ -152,9 +153,10 @@ public static Map annotations(HasMetadataTemplate template) { /** * Extracts the deployment strategy configuration from the Deployment template * - * @param template Deployment template which maybe contains custom deployment strategy configuration - * @param defaultValue The default value which should be used if the deployment strategy is not set - * @return Custom deployment strategy or default value if not defined + * @param template Deployment template which maybe contains custom deployment strategy configuration + * @param defaultValue The default value which should be used if the deployment strategy is not set + * + * @return Custom deployment strategy or default value if not defined */ public static DeploymentStrategy deploymentStrategy(DeploymentTemplate template, DeploymentStrategy defaultValue) { return template != null && template.getDeploymentStrategy() != null ? template.getDeploymentStrategy() : defaultValue; diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java index 4d7c79dc195..258e2db3e14 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaBridgeClusterTest.java @@ -171,6 +171,14 @@ protected List getExpectedEnvVars() { return expected; } + private static Volume getVolume(Deployment dep, String volumeName) { + return dep.getSpec().getTemplate().getSpec().getVolumes().stream().filter(volume -> volumeName.equals(volume.getName())).iterator().next(); + } + + private static VolumeMount getVolumeMount(Container container, String volumeName) { + return container.getVolumeMounts().stream().filter(volumeMount -> volumeName.equals(volumeMount.getName())).iterator().next(); + } + @ParallelTest public void testDefaultValues() { KafkaBridgeCluster kbc = KafkaBridgeCluster.fromCrd(Reconciliation.DUMMY_RECONCILIATION, ResourceUtils.createEmptyKafkaBridge(namespace, cluster), SHARED_ENV_PROVIDER); @@ -575,14 +583,6 @@ public void testTemplate() { assertThat(sa.getMetadata().getLabels().entrySet().containsAll(saLabels.entrySet()), is(true)); assertThat(sa.getMetadata().getAnnotations().entrySet().containsAll(saAnots.entrySet()), is(true)); } - - private static Volume getVolume(Deployment dep, String volumeName) { - return dep.getSpec().getTemplate().getSpec().getVolumes().stream().filter(volume -> volumeName.equals(volume.getName())).iterator().next(); - } - - private static VolumeMount getVolumeMount(Container container, String volumeName) { - return container.getVolumeMounts().stream().filter(volumeMount -> volumeName.equals(volumeMount.getName())).iterator().next(); - } @ParallelTest public void testGracePeriod() { diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java index 80ecb8b1178..de356b74d5f 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaExporterTest.java @@ -147,6 +147,14 @@ private List getExpectedEnvVars() { return expected; } + private static Volume getVolume(PodSpec podSpec, String volumeName) { + return podSpec.getVolumes().stream().filter(volume -> volumeName.equals(volume.getName())).iterator().next(); + } + + private static VolumeMount getVolumeMount(Container container, String volumeName) { + return container.getVolumeMounts().stream().filter(volumeMount -> volumeName.equals(volumeMount.getName())).iterator().next(); + } + @ParallelTest public void testFromConfigMapDefaultConfig() { Kafka resource = ResourceUtils.createKafka(namespace, cluster, replicas, null, @@ -472,14 +480,6 @@ public void testTemplate() { assertThat(sa.getMetadata().getLabels().entrySet().containsAll(saLabels.entrySet()), is(true)); assertThat(sa.getMetadata().getAnnotations().entrySet().containsAll(saAnots.entrySet()), is(true)); } - - private static Volume getVolume(PodSpec podSpec, String volumeName) { - return podSpec.getVolumes().stream().filter(volume -> volumeName.equals(volume.getName())).iterator().next(); - } - - private static VolumeMount getVolumeMount(Container container, String volumeName) { - return container.getVolumeMounts().stream().filter(volumeMount -> volumeName.equals(volumeMount.getName())).iterator().next(); - } @ParallelTest public void testGenerateDeploymentWithRecreateDeploymentStrategy() { diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java index f18e44e9327..0e6a3ade087 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2ClusterTest.java @@ -201,6 +201,14 @@ protected List getExpectedEnvVars() { return expected; } + private static Volume getVolume(Pod pod, String volumeName) { + return pod.getSpec().getVolumes().stream().filter(volume -> volumeName.equals(volume.getName())).iterator().next(); + } + + private static VolumeMount getVolumeMount(Container container, String volumeName) { + return container.getVolumeMounts().stream().filter(volumeMount -> volumeName.equals(volumeMount.getName())).iterator().next(); + } + @ParallelTest public void testDefaultValues() { @@ -1055,14 +1063,6 @@ public void testTemplate() { assertThat(sa.getMetadata().getAnnotations().entrySet().containsAll(saAnots.entrySet()), is(true)); } - private static Volume getVolume(Pod pod, String volumeName) { - return pod.getSpec().getVolumes().stream().filter(volume -> volumeName.equals(volume.getName())).iterator().next(); - } - - private static VolumeMount getVolumeMount(Container container, String volumeName) { - return container.getVolumeMounts().stream().filter(volumeMount -> volumeName.equals(volumeMount.getName())).iterator().next(); - } - @ParallelTest public void testExternalConfigurationSecretEnvs() { ExternalConfigurationEnv env = new ExternalConfigurationEnvBuilder() @@ -1939,7 +1939,7 @@ public void testPodSetWithOAuthWithMissingClientSecret() { .build(); KafkaMirrorMaker2 resource = new KafkaMirrorMaker2Builder(this.resource) .editSpec() - .withClusters(targetClusterWithOAuthWithMissingClientSecret) + .withClusters(targetClusterWithOAuthWithMissingClientSecret) .endSpec() .build(); From 3640dbe888e182f5f6f26d235bb2c6ad2b7138c7 Mon Sep 17 00:00:00 2001 From: MichaelMorris Date: Fri, 26 Jul 2024 11:40:08 +0100 Subject: [PATCH 60/62] Removed static method imports as per review comment Signed-off-by: MichaelMorris --- .../operator/cluster/model/CruiseControl.java | 25 ++++++++----------- .../cluster/model/EntityTopicOperator.java | 3 +-- .../cluster/model/EntityUserOperator.java | 5 +--- .../cluster/model/KafkaBridgeCluster.java | 9 +++---- .../operator/cluster/model/KafkaCluster.java | 20 ++++++--------- .../cluster/model/KafkaConnectBuild.java | 7 ++---- .../cluster/model/KafkaConnectCluster.java | 8 +++--- .../operator/cluster/model/KafkaExporter.java | 6 ++--- .../model/KafkaMirrorMaker2Cluster.java | 3 +-- .../cluster/model/ZookeeperCluster.java | 7 ++---- 10 files changed, 33 insertions(+), 60 deletions(-) diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java index 9cccd9584b2..be00e961acc 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/CruiseControl.java @@ -59,11 +59,6 @@ import java.util.Set; import static io.strimzi.api.kafka.model.common.template.DeploymentStrategy.ROLLING_UPDATE; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; -import static io.strimzi.operator.cluster.model.VolumeUtils.createConfigMapVolume; -import static io.strimzi.operator.cluster.model.VolumeUtils.createSecretVolume; -import static io.strimzi.operator.cluster.model.VolumeUtils.createVolumeMount; import static io.strimzi.operator.cluster.model.cruisecontrol.CruiseControlConfiguration.CRUISE_CONTROL_DEFAULT_ANOMALY_DETECTION_GOALS; import static io.strimzi.operator.cluster.model.cruisecontrol.CruiseControlConfiguration.CRUISE_CONTROL_GOALS; import static io.strimzi.operator.common.model.cruisecontrol.CruiseControlApiProperties.API_ADMIN_NAME; @@ -325,12 +320,12 @@ protected List getContainerPortList() { protected List getVolumes(boolean isOpenShift) { List volumes = new ArrayList<>(); volumes.add(VolumeUtils.createTempDirVolume(templatePod)); - volumes.add(createSecretVolume(TLS_CC_CERTS_VOLUME_NAME, CruiseControlResources.secretName(cluster), isOpenShift)); - volumes.add(createSecretVolume(TLS_CA_CERTS_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); - volumes.add(createSecretVolume(API_AUTH_CONFIG_VOLUME_NAME, CruiseControlResources.apiSecretName(cluster), isOpenShift)); - volumes.add(createConfigMapVolume(CONFIG_VOLUME_NAME, CruiseControlResources.configMapName(cluster))); + volumes.add(VolumeUtils.createSecretVolume(TLS_CC_CERTS_VOLUME_NAME, CruiseControlResources.secretName(cluster), isOpenShift)); + volumes.add(VolumeUtils.createSecretVolume(TLS_CA_CERTS_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); + volumes.add(VolumeUtils.createSecretVolume(API_AUTH_CONFIG_VOLUME_NAME, CruiseControlResources.apiSecretName(cluster), isOpenShift)); + volumes.add(VolumeUtils.createConfigMapVolume(CONFIG_VOLUME_NAME, CruiseControlResources.configMapName(cluster))); - addAdditionalVolumes(templatePod, volumes); + TemplateUtils.addAdditionalVolumes(templatePod, volumes); return volumes; } @@ -338,12 +333,12 @@ protected List getVolumes(boolean isOpenShift) { protected List getVolumeMounts() { List volumeMounts = new ArrayList<>(); volumeMounts.add(VolumeUtils.createTempDirVolumeMount()); - volumeMounts.add(createVolumeMount(CruiseControl.TLS_CC_CERTS_VOLUME_NAME, CruiseControl.TLS_CC_CERTS_VOLUME_MOUNT)); - volumeMounts.add(createVolumeMount(CruiseControl.TLS_CA_CERTS_VOLUME_NAME, CruiseControl.TLS_CA_CERTS_VOLUME_MOUNT)); - volumeMounts.add(createVolumeMount(CruiseControl.API_AUTH_CONFIG_VOLUME_NAME, CruiseControl.API_AUTH_CONFIG_VOLUME_MOUNT)); - volumeMounts.add(createVolumeMount(CONFIG_VOLUME_NAME, CONFIG_VOLUME_MOUNT)); + volumeMounts.add(VolumeUtils.createVolumeMount(CruiseControl.TLS_CC_CERTS_VOLUME_NAME, CruiseControl.TLS_CC_CERTS_VOLUME_MOUNT)); + volumeMounts.add(VolumeUtils.createVolumeMount(CruiseControl.TLS_CA_CERTS_VOLUME_NAME, CruiseControl.TLS_CA_CERTS_VOLUME_MOUNT)); + volumeMounts.add(VolumeUtils.createVolumeMount(CruiseControl.API_AUTH_CONFIG_VOLUME_NAME, CruiseControl.API_AUTH_CONFIG_VOLUME_MOUNT)); + volumeMounts.add(VolumeUtils.createVolumeMount(CONFIG_VOLUME_NAME, CONFIG_VOLUME_MOUNT)); - addAdditionalVolumeMounts(volumeMounts, templateContainer); + TemplateUtils.addAdditionalVolumeMounts(volumeMounts, templateContainer); return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java index c26ab923143..8fcb13d5ee2 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityTopicOperator.java @@ -37,7 +37,6 @@ import java.util.Map; import java.util.concurrent.TimeUnit; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; import static io.strimzi.operator.common.model.cruisecontrol.CruiseControlApiProperties.API_TO_ADMIN_NAME; import static io.strimzi.operator.common.model.cruisecontrol.CruiseControlApiProperties.API_TO_ADMIN_NAME_KEY; import static io.strimzi.operator.common.model.cruisecontrol.CruiseControlApiProperties.API_TO_ADMIN_PASSWORD_KEY; @@ -233,7 +232,7 @@ private List getVolumeMounts() { if (this.cruiseControlEnabled) { result.add(VolumeUtils.createVolumeMount(EntityOperator.ETO_CC_API_VOLUME_NAME, EntityOperator.ETO_CC_API_VOLUME_MOUNT)); } - addAdditionalVolumeMounts(result, templateContainer); + TemplateUtils.addAdditionalVolumeMounts(result, templateContainer); return Collections.unmodifiableList(result); } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java index 4d2b613f1ec..fa4c180b136 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/EntityUserOperator.java @@ -33,9 +33,6 @@ import java.util.List; import java.util.concurrent.TimeUnit; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; - - /** * Represents the User Operator deployment */ @@ -243,7 +240,7 @@ private List getVolumeMounts() { volumeMounts.add(VolumeUtils.createVolumeMount(EntityOperator.EUO_CERTS_VOLUME_NAME, EntityOperator.EUO_CERTS_VOLUME_MOUNT)); volumeMounts.add(VolumeUtils.createVolumeMount(EntityOperator.TLS_SIDECAR_CA_CERTS_VOLUME_NAME, EntityOperator.TLS_SIDECAR_CA_CERTS_VOLUME_MOUNT)); - addAdditionalVolumeMounts(volumeMounts, templateContainer); + TemplateUtils.addAdditionalVolumeMounts(volumeMounts, templateContainer); return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java index 8a63b23d825..2db39b75041 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaBridgeCluster.java @@ -61,9 +61,6 @@ import java.util.List; import java.util.Map; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; - /** * Kafka Bridge model class */ @@ -301,7 +298,7 @@ protected List getVolumes(boolean isOpenShift) { AuthenticationUtils.configureClientAuthenticationVolumes(authentication, volumeList, "oauth-certs", isOpenShift); - addAdditionalVolumes(templatePod, volumeList); + TemplateUtils.addAdditionalVolumes(templatePod, volumeList); return volumeList; } @@ -322,7 +319,7 @@ protected List getVolumeMounts() { AuthenticationUtils.configureClientAuthenticationVolumeMounts(authentication, volumeMountList, TLS_CERTS_BASE_VOLUME_MOUNT, PASSWORD_VOLUME_MOUNT, OAUTH_TLS_CERTS_BASE_VOLUME_MOUNT, "oauth-certs"); - addAdditionalVolumeMounts(volumeMountList, templateContainer); + TemplateUtils.addAdditionalVolumeMounts(volumeMountList, templateContainer); return volumeMountList; } @@ -331,7 +328,7 @@ private List getInitContainerVolumeMounts() { List volumeMountList = new ArrayList<>(); volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); - addAdditionalVolumeMounts(volumeMountList, templateInitContainer); + TemplateUtils.addAdditionalVolumeMounts(volumeMountList, templateInitContainer); return volumeMountList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java index 2481fe781b3..b55a155c6c0 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaCluster.java @@ -99,10 +99,6 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static io.strimzi.operator.cluster.model.ListenersUtils.isListenerWithCustomAuth; -import static io.strimzi.operator.cluster.model.ListenersUtils.isListenerWithOAuth; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; import static java.util.Collections.emptyMap; import static java.util.Collections.singletonMap; @@ -1329,7 +1325,7 @@ private List generatePersistentVolumeClaimsForPool(KafkaP volumeList.add(VolumeUtils.createConfigMapVolume(LOG_AND_METRICS_CONFIG_VOLUME_NAME, podName)); volumeList.add(VolumeUtils.createEmptyDirVolume("ready-files", "1Ki", "Memory")); - addAdditionalVolumes(templatePod, volumeList); + TemplateUtils.addAdditionalVolumes(templatePod, volumeList); for (GenericKafkaListener listener : listeners) { if (listener.isTls() @@ -1351,12 +1347,12 @@ private List generatePersistentVolumeClaimsForPool(KafkaP ); } - if (isListenerWithOAuth(listener)) { + if (ListenersUtils.isListenerWithOAuth(listener)) { KafkaListenerAuthenticationOAuth oauth = (KafkaListenerAuthenticationOAuth) listener.getAuth(); CertUtils.createTrustedCertificatesVolumes(volumeList, oauth.getTlsTrustedCertificates(), isOpenShift, "oauth-" + ListenersUtils.identifier(listener)); } - if (isListenerWithCustomAuth(listener)) { + if (ListenersUtils.isListenerWithCustomAuth(listener)) { KafkaListenerAuthenticationCustom custom = (KafkaListenerAuthenticationCustom) listener.getAuth(); volumeList.addAll(AuthenticationUtils.configureGenericSecretVolumes("custom-listener-" + ListenersUtils.identifier(listener), custom.getSecrets(), isOpenShift)); } @@ -1423,12 +1419,12 @@ private List getVolumeMounts(Storage storage, ContainerTemplate con volumeMountList.add(VolumeUtils.createVolumeMount("custom-" + identifier + "-certs", "/opt/kafka/certificates/custom-" + identifier + "-certs")); } - if (isListenerWithOAuth(listener)) { + if (ListenersUtils.isListenerWithOAuth(listener)) { KafkaListenerAuthenticationOAuth oauth = (KafkaListenerAuthenticationOAuth) listener.getAuth(); CertUtils.createTrustedCertificatesVolumeMounts(volumeMountList, oauth.getTlsTrustedCertificates(), TRUSTED_CERTS_BASE_VOLUME_MOUNT + "/oauth-" + identifier + "-certs/", "oauth-" + identifier); } - if (isListenerWithCustomAuth(listener)) { + if (ListenersUtils.isListenerWithCustomAuth(listener)) { KafkaListenerAuthenticationCustom custom = (KafkaListenerAuthenticationCustom) listener.getAuth(); volumeMountList.addAll(AuthenticationUtils.configureGenericSecretVolumeMounts("custom-listener-" + identifier, custom.getSecrets(), CUSTOM_AUTHN_SECRETS_VOLUME_MOUNT + "/custom-listener-" + identifier)); } @@ -1442,7 +1438,7 @@ private List getVolumeMounts(Storage storage, ContainerTemplate con CertUtils.createTrustedCertificatesVolumeMounts(volumeMountList, keycloakAuthz.getTlsTrustedCertificates(), TRUSTED_CERTS_BASE_VOLUME_MOUNT + "/authz-keycloak-certs/", "authz-keycloak"); } - addAdditionalVolumeMounts(volumeMountList, containerTemplate); + TemplateUtils.addAdditionalVolumeMounts(volumeMountList, containerTemplate); return volumeMountList; } @@ -1450,7 +1446,7 @@ private List getVolumeMounts(Storage storage, ContainerTemplate con private List getInitContainerVolumeMounts(KafkaPool pool) { List volumeMountList = new ArrayList<>(); volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); - addAdditionalVolumeMounts(volumeMountList, pool.templateInitContainer); + TemplateUtils.addAdditionalVolumeMounts(volumeMountList, pool.templateInitContainer); return volumeMountList; } @@ -1567,7 +1563,7 @@ protected List getEnvVars(KafkaPool pool) { JvmOptionUtils.jvmSystemProperties(varList, pool.jvmOptions); for (GenericKafkaListener listener : listeners) { - if (isListenerWithOAuth(listener)) { + if (ListenersUtils.isListenerWithOAuth(listener)) { KafkaListenerAuthenticationOAuth oauth = (KafkaListenerAuthenticationOAuth) listener.getAuth(); if (oauth.getTlsTrustedCertificates() != null && !oauth.getTlsTrustedCertificates().isEmpty()) { diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java index c5e83788f42..b210c807039 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectBuild.java @@ -45,9 +45,6 @@ import java.util.List; import java.util.Map; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; - /** * Model class for Kafka Connect Build - this model handled the build of the new image with custom connectors */ @@ -283,7 +280,7 @@ private List getVolumes(boolean isOpenShift) { throw new RuntimeException("Kubernetes build requires output of type `docker`."); } - addAdditionalVolumes(templatePod, volumes); + TemplateUtils.addAdditionalVolumes(templatePod, volumes); return volumes; } @@ -306,7 +303,7 @@ private List getVolumeMounts() { } else { throw new RuntimeException("Kubernetes build requires output of type `docker`."); } - addAdditionalVolumeMounts(volumeMounts, templateContainer); + TemplateUtils.addAdditionalVolumeMounts(volumeMounts, templateContainer); return volumeMounts; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java index 51b5c79508a..4e17fa12b4f 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaConnectCluster.java @@ -79,8 +79,6 @@ import java.util.Map; import static io.strimzi.api.kafka.model.common.template.DeploymentStrategy.ROLLING_UPDATE; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; /** * Kafka Connect model class @@ -381,7 +379,7 @@ protected List getVolumes(boolean isOpenShift) { AuthenticationUtils.configureClientAuthenticationVolumes(authentication, volumeList, "oauth-certs", isOpenShift); volumeList.addAll(getExternalConfigurationVolumes(isOpenShift)); - addAdditionalVolumes(templatePod, volumeList); + TemplateUtils.addAdditionalVolumes(templatePod, volumeList); return volumeList; } @@ -444,7 +442,7 @@ protected List getVolumeMounts() { AuthenticationUtils.configureClientAuthenticationVolumeMounts(authentication, volumeMountList, TLS_CERTS_BASE_VOLUME_MOUNT, PASSWORD_VOLUME_MOUNT, OAUTH_TLS_CERTS_BASE_VOLUME_MOUNT, "oauth-certs"); volumeMountList.addAll(getExternalConfigurationVolumeMounts()); - addAdditionalVolumeMounts(volumeMountList, templateContainer); + TemplateUtils.addAdditionalVolumeMounts(volumeMountList, templateContainer); return volumeMountList; } @@ -452,7 +450,7 @@ protected List getVolumeMounts() { private List getInitContainerVolumeMounts() { List volumeMountList = new ArrayList<>(); volumeMountList.add(VolumeUtils.createVolumeMount(INIT_VOLUME_NAME, INIT_VOLUME_MOUNT)); - addAdditionalVolumeMounts(volumeMountList, templateInitContainer); + TemplateUtils.addAdditionalVolumeMounts(volumeMountList, templateInitContainer); return volumeMountList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java index 79e8da62abb..68fc9168140 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaExporter.java @@ -38,8 +38,6 @@ import java.util.Map; import static io.strimzi.api.kafka.model.common.template.DeploymentStrategy.ROLLING_UPDATE; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; /** * Kafka Exporter model @@ -262,7 +260,7 @@ private List getVolumes(boolean isOpenShift) { volumeList.add(VolumeUtils.createSecretVolume(KAFKA_EXPORTER_CERTS_VOLUME_NAME, KafkaExporterResources.secretName(cluster), isOpenShift)); volumeList.add(VolumeUtils.createSecretVolume(CLUSTER_CA_CERTS_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); - addAdditionalVolumes(templatePod, volumeList); + TemplateUtils.addAdditionalVolumes(templatePod, volumeList); return volumeList; } @@ -273,7 +271,7 @@ private List getVolumeMounts() { volumeList.add(VolumeUtils.createVolumeMount(KAFKA_EXPORTER_CERTS_VOLUME_NAME, KAFKA_EXPORTER_CERTS_VOLUME_MOUNT)); volumeList.add(VolumeUtils.createVolumeMount(CLUSTER_CA_CERTS_VOLUME_NAME, CLUSTER_CA_CERTS_VOLUME_MOUNT)); - addAdditionalVolumeMounts(volumeList, templateContainer); + TemplateUtils.addAdditionalVolumeMounts(volumeList, templateContainer); return volumeList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java index 669aad63c3c..3f1d5aedab9 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/KafkaMirrorMaker2Cluster.java @@ -34,7 +34,6 @@ import java.util.Map.Entry; import java.util.function.Supplier; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; /** * Kafka Mirror Maker 2 model */ @@ -199,7 +198,7 @@ protected List getVolumeMounts() { } - addAdditionalVolumeMounts(volumeMountList, templateContainer); + TemplateUtils.addAdditionalVolumeMounts(volumeMountList, templateContainer); return volumeMountList; } diff --git a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java index 628dff061cd..b56567ba5d5 100644 --- a/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java +++ b/cluster-operator/src/main/java/io/strimzi/operator/cluster/model/ZookeeperCluster.java @@ -60,8 +60,6 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumeMounts; -import static io.strimzi.operator.cluster.model.TemplateUtils.addAdditionalVolumes; import static java.util.Collections.emptyMap; /** @@ -540,7 +538,7 @@ private List getPodSetVolumes(String podName, boolean isOpenShift) { volumeList.add(VolumeUtils.createSecretVolume(ZOOKEEPER_CLUSTER_CA_VOLUME_NAME, AbstractModel.clusterCaCertSecretName(cluster), isOpenShift)); volumeList.addAll(VolumeUtils.createPodSetVolumes(podName, storage, false)); - addAdditionalVolumes(templatePod, volumeList); + TemplateUtils.addAdditionalVolumes(templatePod, volumeList); return volumeList; } @@ -572,8 +570,7 @@ private List getVolumeMounts() { volumeMountList.add(VolumeUtils.createVolumeMount(ZOOKEEPER_NODE_CERTIFICATES_VOLUME_NAME, ZOOKEEPER_NODE_CERTIFICATES_VOLUME_MOUNT)); volumeMountList.add(VolumeUtils.createVolumeMount(ZOOKEEPER_CLUSTER_CA_VOLUME_NAME, ZOOKEEPER_CLUSTER_CA_VOLUME_MOUNT)); - addAdditionalVolumeMounts(volumeMountList, templateContainer); - + TemplateUtils.addAdditionalVolumeMounts(volumeMountList, templateContainer); return volumeMountList; } From 20199b7d36f0a3ae936cba0af877bced52fb9dac Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Thu, 1 Aug 2024 18:57:50 -0500 Subject: [PATCH 61/62] Added variable assertToleration Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../strimzi/operator/cluster/model/EntityOperatorTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java index 1f6d73bb81b..6b81883ca34 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java @@ -230,6 +230,11 @@ public void testTemplate() { .withValue("") .build(); + Toleration assertToleration = new TolerationBuilder() + .withEffect("NoSchedule") + .withValue(null) + .build(); + TopologySpreadConstraint tsc1 = new TopologySpreadConstraintBuilder() .withTopologyKey("kubernetes.io/zone") .withMaxSkew(1) @@ -321,7 +326,7 @@ public void testTemplate() { assertThat(dep.getSpec().getTemplate().getSpec().getSchedulerName(), is("my-scheduler")); assertThat(dep.getSpec().getTemplate().getSpec().getTopologySpreadConstraints(), containsInAnyOrder(tsc1, tsc2)); assertThat(dep.getSpec().getTemplate().getSpec().getEnableServiceLinks(), is(false)); - assertThat(dep.getSpec().getTemplate().getSpec().getTolerations(), is(singletonList(toleration))); + //assertThat(dep.getSpec().getTemplate().getSpec().getTolerations(), is(singletonList(toleration))); assertThat(dep.getSpec().getTemplate().getSpec().getTolerations(), is(singletonList(assertToleration))); assertThat(dep.getSpec().getTemplate().getSpec().getVolumes().stream().filter(volume -> "secret-volume-name".equals(volume.getName())).iterator().next().getSecret(), is(secret)); assertThat(dep.getSpec().getTemplate().getSpec().getContainers().get(0).getVolumeMounts().stream().filter(volumeMount -> "secret-volume-name".equals(volumeMount.getName())).iterator().next(), is(additionalVolumeMounts.get(0))); From c5bb07a79f4fb635b6e71986859b9375a7815f70 Mon Sep 17 00:00:00 2001 From: KastTrifork Date: Thu, 1 Aug 2024 21:34:38 -0500 Subject: [PATCH 62/62] Revert last commit to match main branch Signed-off-by: Kasper Storgaard <116632810+KastTrifork@users.noreply.github.com> --- .../operator/cluster/model/EntityOperatorTest.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java index 6b81883ca34..75b574f3b35 100644 --- a/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java +++ b/cluster-operator/src/test/java/io/strimzi/operator/cluster/model/EntityOperatorTest.java @@ -230,11 +230,6 @@ public void testTemplate() { .withValue("") .build(); - Toleration assertToleration = new TolerationBuilder() - .withEffect("NoSchedule") - .withValue(null) - .build(); - TopologySpreadConstraint tsc1 = new TopologySpreadConstraintBuilder() .withTopologyKey("kubernetes.io/zone") .withMaxSkew(1) @@ -326,8 +321,7 @@ public void testTemplate() { assertThat(dep.getSpec().getTemplate().getSpec().getSchedulerName(), is("my-scheduler")); assertThat(dep.getSpec().getTemplate().getSpec().getTopologySpreadConstraints(), containsInAnyOrder(tsc1, tsc2)); assertThat(dep.getSpec().getTemplate().getSpec().getEnableServiceLinks(), is(false)); - //assertThat(dep.getSpec().getTemplate().getSpec().getTolerations(), is(singletonList(toleration))); - assertThat(dep.getSpec().getTemplate().getSpec().getTolerations(), is(singletonList(assertToleration))); + assertThat(dep.getSpec().getTemplate().getSpec().getTolerations(), is(singletonList(toleration))); assertThat(dep.getSpec().getTemplate().getSpec().getVolumes().stream().filter(volume -> "secret-volume-name".equals(volume.getName())).iterator().next().getSecret(), is(secret)); assertThat(dep.getSpec().getTemplate().getSpec().getContainers().get(0).getVolumeMounts().stream().filter(volumeMount -> "secret-volume-name".equals(volumeMount.getName())).iterator().next(), is(additionalVolumeMounts.get(0))); assertThat(dep.getSpec().getTemplate().getSpec().getContainers().get(1).getVolumeMounts().stream().filter(volumeMount -> "secret-volume-name".equals(volumeMount.getName())).iterator().next(), is(additionalVolumeMounts.get(0)));

      wMg7Nl3oeW=uNM3^W3qQ zfs^JM@6OEYXf!MsYnfGH(8A@&TINXMNkGde8W@a9UGouPn{=1VZ^l_=4_8If9G7IW zw+t?NPd2D~tmQ}Cp*sNUAv$gBZ<~Z{hHxspxjS>-r!8sWG(_pk3u}>%2%*cfGE70V zVOA7%psBSOSjKf`M!L`}CzrB9)sJ~>5zUDGVFWiG^F~G7`@%_;StAI(uHVam-LD~Z;v@`Ge z`o!1sO7Q}wrfx&Mlf{h%BLG6oe>WeMqDsG)%87}|DHfZ1>tV7;@{vY)EKP}!Bfuv8 zIT0H&_f4k#Ed%Jn%nTn``FopYah?U0Y~#|!BV;w%>GZ4gCJ!S{31%=ROa>t%nu8`4 z+mE~r68rt^u3j1m;+|n-lju&CxQJ_aF`cFNG@wwnGGifb$qMs99_O8yq?u4| zZDk{4b12Br^~%}5OM-MWY1C|-sp#m}%quOlsDR19^vHFVhm^xa;K)gAUYS+;c&H#U zA;_TTi)JLf!;Q4;L+BmFC0jl#)Xm*_3iF|+9_3_VXc;JzmZ()Yym<8no-pXyL)vv* z1$*O}4eer=42UWjs0NTZhMkDkgQ#Gvy&aT`W>>PReP8*dtu50WcJ+(u!v*6lzK#wy z{O4g8;jJ)cHfZu4a8}UKZN;DIG<<6k%IE}eR|gl)IqQvD385sJKF~-~vMpsFRJ^Su zjiXDTB~4ChuMHY$_&sa1v|H%1Htn0tvw=Cy>m+5&br#LbtK`Lu_NmU#OBv;f%kRofKyur`4`uc$ciAfZixsoWa;k#A zgcj98=xfR?m@-Z<;79awe3(;%Ql7+IKxgR+751Q$J(VC?|gz+VY?0Xod8acH}%6y{&)sHkxZL-NAgjDIX$!4e{ zj)mh4LJ&5foa9(ndW9Cu>)k4D^SVAgxiAq-7a5DL0&~t^c2ABn(EDy*98Brk@Ng_-SR+@;-QD z*#aH^eQ?C=&~K6lrW@ZdI~>c7TBvnMOw3DF%kG3G_8&b72kxnl_dGHg$b!vFS@33t zY^R!1;}tO?E5S>at%;W!}k2***~;lDP0dt96Srs;rEUC2KJOmyV?JFTD{SA``Gc%?dc)>(op;^+r(V%(*L`^#)3bZ>uK+u)R#z7 zgTk$Zvm72j2FvisOm1GUTCf(SD+fD0%BazU^iM0S!)kRK)2! z=LzNZ1Vg4V8z+6s^bd*lNeW!TUf-8h#Y1AR=@;Oo+FKK}GdDJ>IRUK(G2Zbh88@uN zJX*p!6Zk{NQPI2IXI&|<=DIxaC=?QBy&f7OCAf|mj1HZkAaUdx7U4DeXUpF~vv;%J zk2;P=97hR~p@M(BTCkgLgrd8$4G@IEOv60^O$}?Q;+mfi@7k?sZ&r7bZn|9n1p@5W z;M`sN{QBeZyAO>)i1u{8NiPUMf#6&*7lSaT5UR?NXTrm-TupC3#bY*i;(zD>6CBP+ z+!vw>mViaP!YwlO(P>`Ps*pwk*$BkL*M{>)a39ZrE=)|BS0d0t#PhA@8Exe~8Kh~> zl|4({jcKR?q?|duJX_;P&DNSNRG-Hl4HcwLP6-DFw#A>%i0Kya%$4rPFLttVd5QR;$w46pY^lJ`y$)ax`$Vi5% zmNO9!sFNK&FHa9VoyVsCSvVES{zg(uwFRGb6~PGas&wdPX>FVB;A={o{tmaP8W(gL zJ1$T>)^+K7`t~8vu*ch)F_Y`pWlnKA6tsZMtjUOsp^evNNHp)ET?4a_ z+C#WW4F^8Yagq6<9)UBQhfn6NO?UY5-q2(;`UqVnh~}!Ls&RtNXNc{$S^AVr!IDj6 z%VZQ=6lcF`{t1O?H~YzC_dk8*X22dakek$A-$U6X3UL(q^zYrw@jJgIw#uoyw1D;H zegdm(eUPb1e5M+E;G)aatN*+pj~wtAZna;;U9)1x2f`qwK^BgwTRG>DB}R(navk6B zXI2<0OCrN3P)(3s(AF!%9?L%HOF-_C`$|RN0gDuwb|vOc5HN9K`nb6r3iW5=u$?4z zaf5Q>KrD@oa!%=BgiWWU1Iky4xA(vB?r3QFd2CzSKH-2|Ud{iT771RQx$?fMKH8c% z23l7vYUL!zK59!+Y7j~0H}pAQu;zDxD>DDia{+Uuykg*7P_cA#V!#o{ESV~ud1k4` z+X)aPzA~6?d}x{G?WF|XiLI6`XS#Lws3g!~=APfwbMON#V0o!l7fKqIr1RCMaY%9% zjt31r5R=?6Znada*I126PH3oDg;JO@4YG@=T!!~3V@>aZCt=-Z?f@2iBK&~9N%y|_YD*<_%Yi9--M z>K4ScFSVN)o&q1#exj6bRqWK$%^*lnxG4`aG1^sJ4@8#-ZGhX9S@oO`hB+A0$1U-g z>?3`+Mtqkq>*W*VeqWu4Olcm<7$cN$R8SPu!z0WiG&G06cyvUBV9-X(^Kf+56W3NQo!cS6*+ksrAcxRDsRqz^m1FB2@LzubGQa(B@-d!*Unm*<>O89}}$MJeBaTa%Y$Z`sS^Ng@{*h5ij;d}mqN;vtx z3<1$;!fuJUUj>wd&@wL!4g-QQl5gjZt48K5*TMr9O#zjFSuFn>*Z~CT%)=Fv#7e4Z zoh3|RZ2{g;Z-jjgT`?B~jVIAB)Oy@ucw1%0nrshQlBWXpTPzkhZl8Iz>W^b;_uNsG z7$9g$HD}B0!f`H6I3IUqM_>~S1VEONnI=%#(Qg{%m|T=(Pz-SjR+S8zQz0U1<~$Cy zyKhmFnKtD2i$jGRY=_Nc?n1Q!{}66~(iAEGXPK_3G5lE5;BiWSe5 z8i_c?LpL76xdU_7nq+N=^4x_fum>fT3l~$({Qo$i%Zy!vF$-^;59A)6#6Go zj6lJDolB1*SD*uO-!u(gA7h$rhru%kxIvR>^IC*4|N zUfF6LsVuFEJbC%a(b8-Eb~{o#LsFp2wE`wZj#IQ zEU4t5$`?`pr5x=R6Is(H>O?Gs&w_dyAa*|Z&Sjm3+VO7az}7%(2+jr7QBjAkI|G!G z$D4JKDT4S3R^CksT_*VfzNQ3`K(SR7C1{!fnXQ)o57F_9C0{Mu$^(2oNX1;vr%yJ+ zU+YVXcU*msUb(kS*F*iUxTU3ab$?|6kl}0Ja@spgH#gTzQ8CtBev@b^pU>`ZvywXBI-6u6i@`cr z9-D5kjhl6AoDJC0<7}$_RR+BMRR#doJ0sEiu$YtR5EA(;P(t8YSl_#ND#S}@ni#Jo z8s1eet0VeX84v(a2DJTE2Gq`qnxgxw)x687`c|st0h9qI0A+yUKV<-l%HBU^z$ZW% zzz9$Vbo@_c00Yon&3UY;{EqdHtk>?v2DS!I93NSy!$bN3{PL&tJ^R6{yoeoZE$$pk zboCT(jmGI{{%R|K0-WkQ1<`hIjZV>Fx-DewbJBj)knD>9<`6Gmf7|xFo*bSjD;DA4 zP?Yukz1%3v$onm5(@5c8C9YJ98hG3CfgW_WKM1lh=IWs(r=L2axI^}l0eb$Z^C5sT zKpFj3jK6CF?(^t-om(4f{Ph6s+qg9Tafv}qeInnIZSl>6qF_fwWcQ*of8KG9`%(6c z?=~=J*G0JgUu6If9aBg<=IWV6GauRDBX}&42Qi)gD7}WZ8|~VTHRIA%7=H{VGnz!(4qGq1taj_Ah=BeZ?9>d`A@ z2^O5a@R*zgCq#UgdeXP?Ox~I1VqPuu3+hnZit%|9@>%j{gJrY1QKZ&zOjG7V(;+hK zn5YvAGyKIv9Zu6+F&`n>wP>yG`ErJQ9y2i_bVPC1w;fApS$bjHq?dxbgOwSiOM@lN zS8s&aFCZ--sb+zqptU+yn_qIo=PAidNv1CNTTZCI+l#u7d-zb3#?!S2W;hkbaA zvd;~P1jc}QMjkhSmwDQ#_$MxiD)|2}=P?mveVe_DAxD7%4FWP5MM0@!n5V0+`jk%@ zL>XaZ>gy+*r%q@PRm@sRi7!fxqD8sC-EM~r4TReb>}r3utD0z^~2UM>d~U3EnF)SAv4{YnmkH7_sk<5++~i%U`23yF?eAv zAEAZ6033f!$F^lb45;bb=C)3ma?~acR>pvn0OCGLDq~{r@((^z z2gfZ&Ex)*x<}zv-txV`Yw#3GKo@Z>W;vcY3!}IBD96)#jckJW|sowD4nBG3eZxp`{ zsW?$)?5-;fENVc3OJ!VFqH;Y!60~bC<||*Hqr!`Oub*M*yox2?sG%#KeBwYme{*bI z*S~RW^>CVW+5aG4%=^JA+SbYO)04Ev+BDLe#Opm`kbAgvI%AJ!?&%E36T)$sGKgXx z{UAtQ=-W`K{gcmjSOYE)>I4auGmr!wm{kHO`#2I_`kz|+{0o1y6ZoCcmobj{rQ5+ z7R1~=2-a2OD4PQ@H0Lj^D=X&ObDPV(273$I;_S1n^EZ`hBp2M0p|guMwbH_CCi4Ru zl?+3qSc5l;ceqov@rM6~qdYcQA@LQr1m*-@^lh}rwTHJ5B+n#!YsX&Je!JcKFf6G# zQb>O}g$vKR;=lGMi|)8fFB!XMY>0h*AL1J_0!$B181j2WGPt^h7U75-N}`(#k_rmt z48pBGYBMHW?kM+N;*}0MU2dFmp29|TOtO32Jhxoks8b{z8^0^pnG+okr^&C_Hs|4s zYwA}#8sA#rEJzO#LJOsbpERC)lzP-Z_jQ*u7>qWBo?aA1TU;Qo$wB9~nyQR5K!z8Y z$(xniV3|xg(M2l?WBi!{f=vc7kc(B~-1X`KWf5(CpV5?ui)!MaD7_M>P)vr`)yeCv zxm(+QMp0|Htiy`!6_ZELi_hCWG1XvE(E|~wAqCO08RG>*pNL$b<`7FA!5JBUVN5AG z#Sikusk7W2WvPguoryYG0F9UEB33brA3!yVIk-$H>SfrSu4qLYF@Y+{ppBq}pSwKK z$lBWJ9Hii^(j8=m7x;zOufZFkMpLbgu!Z|5^7bMZFcGZhB6);QR(Q?%N0UIO4hM1{ zN=;!^veVlKq)~?fmxyH4XP2Pikg@obXjWo)mWe|Kiw-Mi_Hs!_JsD2#;Vn{U3dzCz zu*a9%oAN2nKXX=%+3S_HSqm%iZIZ>vUXf?XQQjfyai-GSDY*qm{_t`K2JKj<Zj z-_pKKG*S-agZZN9vH$x}FCN1BrXw4QEnZJq&CB6bSOY9A@`(3w`=$PoZ=s+b$Sc)% z!+bjpCo9&F#BVv%`?c}Z1-wT^!4*_|KNA1bf*24X zM%2&cC0Y-tHqxquLUlwQsdlE!;G6>7202`z1kKMSVh)Hx|9&sT6zW!GMQWK`EO!n< z4w?igFmQpZI`uQIQ0>vlvQdi;!qPI7soU@A!W)er^T3ez{T#ZdgO5cu(5&T8CRa%D zMBKLjJcJIr&HS+uMlb1O0%(>!_gc7+5f3@k789VrK%!CDI5L`5{R|B%G4Y;TiR2Sa zG!Z`4Ns(yw6&z4bs_96j2pKWO;0bm+U3Hpz-o}!h@7620?&mjs=;2c;KkF+Vc7sR` zjXoENMY|u59Qb*C4HNrw3{kZA^mBUeHbuMAw0kun>pGy7$4VNtMM7)yY$WGYlbOxj z2+dYgKEL!Q`#74^g$KEdUASW&VW@>vF06$_r-N!;2IKP88~W=BewWPfyhTB-+E|C8 zxf4M0p(P^rei=Iri~ia~AKOQR$7CYWKji}a{N8`ReF{WGK$!gUe|zi-y+!EtdH6)! z74-JG`$SYk=;iV9xqG?I_XkI4Yd(5Nfr5V3gtVP)?fwDz(2w<%@MCTq!8Fc+yttEQ z{q9Y07^!*e7p0-0DUJZ7WONc8PkXyW2GiWp-DNSU^t+@mu<@|cm#NjgUDW!jxgb)U zsi<>tqShC2psMjckSZ}T@$3NU1ge>rS$}b+vY7c#wNL;9g~dH&T4vTN1j!YdM`>2` zpAB3Hz38JE_*gwQR8Y0nzaI?~G60eILP-e|Re@OWV=>h`rLr7$1gfi_+9(uL9d*91 z@beYxM>GDQr(ePjs0}~v;2(4YUB-$%-Q$!%CwkW8-Rmb<_?STdc2}7T=|^3G+>SSrV)PFQp`5e@n&hnjb>+slqrM!!$xSK>Mrl;t55Qwom_U zB0%M_iW*`l5lgzbxIFo04wkHiPm}o+CI#xci~EatYH&|x87UA(LYJdB8@7D!b2wAY z5P6GF|3sl zKA3UkOY1a2$Wc^CiB^MAlc<*A7m&o9fVmdD6QJqijH*Zw2CxsMR{wY-Sg4F1ydI9J z(y5lCG*HPcrnof$CNX~l1o|Giq8H$PXcmL77(!yYS|GyIW;EnaN={i`V%GRc+ z7^|Uth+=oQND0pg7;haFs+to6r`yEHLNiQ!!OHQ&LFIUsE%C#Jl{C7r@i=R@9KMb5 z2V7MZ#ntc4x92FHT0m~q9tg5cT6OxGUW`V$q{yr|7A^fB+5X=ghLNSi#PGV?vP0=@ zzG1bhhXS3WK*8j}v%BJ15cbzJ8CclXQGair>RH)-98!sHJ7qpZ8Aft7m5~$~qzxIN zBS)yTq&G?>N%_ni9X6dLN2pJojp#k zHq{!H=vuRQ(aNCa*Anh`H7%paGX7FS9Z`9=Q4yq`@lHFHWkA$yDj!sSeANbYRFaI% z+fIQ2q=pnr&NP5)d{qm!czH^_D)JA&#EHN~#wik32l59xylyREWS{pXQiE96a*L-17eLSS(boJ3a9HluLUqya0UG zG8MFVw$I~&h{~-hqA_Peehe-l6Ux7(~G#5Yc2;L*rpc$ld!aBmf47?S<2w~HQ6L9TesleQ$LA3?bJ-|YQ zp1tnc87xD%z+#hG%?q=OJw`Y^%`6dhv5bNABKG03hyt;ji>RzzOS?~1Ew39QFbkA~ zN6il_1RU^sdW@t;GeZBRomm`s2u%hO51hZmfaFAmssL`p{6VOna)6_(j8K9ln_rkc ziO2-aTr5nVz_VwWrPwDRcSMKFQL9vH>w*T2k_W;Sp1I-FFxd=>Nmunpy7bIOaE7u= zg#1Yq8l>E$35ly(g-9sML`<~*J3@2awjLdePfhAU0Y+s)1LEj;&7s=vI67vJ4la6H zapORc9C`bjXFQ*h5m_Xg9TjyS@!Q+E)iO>t9yOGYp6fodP* znUIWu#U%$jgAUaePM^8sQIc+2`U168^_Ju<@51K&b8z)326uHU=`IfiZzs1_G9(j#eY2D7Ann@!p7%g|?r0Qj)pWZZm?>Z3yZe00HUt0w*U&sW9xYv% zveFa(1;AF^b*(@gztOY2J3+Yr0pK=l#x4`J7L|*H9BVd^tPddaUD51ycSC)H1eI4M zN!eKSQW^PWt;CXm|G;16P?d9?|G?jUZ~*)T`3rwvihy*ivIOD37#J4Jy#egkJ*%f$ ztXh&QMk%UDOpKme;$jtJU?aki5CS;nm=7hX5SQVBDH7G0JSh{hj<;=fY zU0`_5=QHE}hj32pUhRraqNC{)XYxz4nw$to-ghKp(P4;h@KMEf>4X?*+jjOHI;p$C zbi}11x7T%78iNF)#12@9g3+07t8c2EYY`Co&++y{fDnzEac^p}j<|OBY4SXm<{0T; z<*r~u_AxY_oSPm;sSk4qA~2Gu3ByymA=QNSNo)**+Qf}k8Z6+OILFq%TN`0AYU}vn zhAALiO3Fd`k0_ZUagrzQR4_L!IlCyaF5Q>b`9xPtZfdp|rH9K9N#+s}N$!Nf1fu#O zk(VHmOHHijb2UUYS}Clk?{E`1M`jVKxgx5O>!~}Ifsw>=aG>DPXsy4=f*_OxXATT3 zS_*RYyj)EzQuKrf=_QhZ_M^GFe>+2zZN%}RjMy6|%SBFcrToTap~q>WJuGEq!;~%- z_kymIk_h)7)i6+p7QdQ*V$o>fR4=x@-K3u(S9yP-= z#PmNOR}-pA2Gat2QWMZJ?L@K0FtHPU@?n2n?j?&uDZA+c_#urE?#IWgk&X<8pKg9$ z0e-y?(I(cv^!2pDf}7S76Ch0CyT`Ix6;R|L_vLT#`t=*QyaogzIWm#q z=xT6F8n8kG%J++t?2LtGrg|#6RNoGAb)ke*Dq6CNF(DQET#M&*a!)D=!C-&3vO|+; zNtKQ?U5Ek`87&VCBIp9+nX7Dq9kY)urayn+GHhc&ao!fB+ zIhZDdDbUf<_&hC?;NQSaU{`bg*y>ugHT5zJGLWQYBn)_u^(fF|`Z{~^R<|n_354&7 zmbOcDlG{CvIs^LdLiaU!$`r@M9_9=CI3#D#UeX?VIYq)er_Je?01;hD&YWo^CZas4 zcLk+?e1g?}VcdIFCO?ZMe2<>jF9S*@WOO)bm;Wbiv$96v!i&!uIg>s&-Wj)T*wO87 zhL5Jxk`1Q3AM*pzV4K2oR~z))kx0x#B8M+g}fh9 zvEQMyxTmwQ`Q06t;CPjow=%mc>2t>eS;*iRW6Q{T=@MFXNy*-1Y94HtWZKS7Bvp@f>6mH3@Z9at(8zvL8V zBJ74-+qAV$?nE3OxLWCJ0{B0_59ckCCiXwNnl?m{1^}7n0CWj7WhY|u`F8x$Y;*iM zzn6H{<{^)ugyFPgG_!eT_x9k=f0JsY(X6Y*{vBa1hBsWpEyx2Wx9J>h@%%nwWE}Q# z9YdQYBjk|$NYg2%ADMLc%`_^jkBU7Vczh;_Mzq(VowWWVP48lFN7dY&0gMom%dVw(`rATD;b=nq5c$)D0r-H^uGS zdj-7QOcc2s6a4ww%F?4!E}e}^;LX{blpK;yUW+>XGP2vh)bjiAo6g5SYWd)Z#eW4i z+E+ZnZG(oM_dU^Wg>Ivx12C=st)O5jezmbM&O>{%mZGl z2({_y^0D+OAW(4$^nfHkhZ4 zELJjBsIM3`>5K8NoiMf+tEQor12+BDpPt>a4x2+Bx%~5_S3LW6_VE4J?>~IKf{BjF zC(;f7IcfOtPTqUQum+Oa%BKxHNZ^@ws?-KkJo#xZw3;h*FKa~oY@Z~-Z__~pAGLQr`c^5$_l?YjP!v3t)L5% znVN~xz)?XCZqu!X)%fA?@_bw7Q&Sdly=($)Yb=z%rXG9|y^Se#)zavjie%E1FKEsZ zIkeM3S<(5!=gmBsPi9fd>!JjC6sq=xR+c&Y##FqD%q2^?W72 z_E5M{3CsuT54UI=?a0XS>%@AWfGOyH36OlQ8Auey#m zwvC!}Zuk&42QwD9oLp*@cF*yNP#!G%CC{1>&q_FkwEjlVSGks|LL8Af)JViiJ8RQ0 z1J9wXXG%cy9{wHG3{8<>AX>3`n=k}~^xrsgzQ&^6yIz>`pzLP!q{Z-hK5RWmQs)7S zIV5!YHPl-KkrTe2;1{RFEVk{i=G*|gouohM#m{ngNVP&$xs=U_q`_rp&cr>d1Regf zLRt;iXQVoqhOD2s_-chjM#@(c8tua3C}U!_B1u*udtSsFVT5}WK*0{2p2Q*9nth0X+7l|JQi6>KE8JR|beM4Eawuj*X zLb-=h1*i{?n1o0%1!2#GRCV&KXk}L>996;Np598;u?Ojt=oGWqG2Csv+Yw;%m26n7 zrvE2|Bum_z_kVI!nWiFC_7^bb>(?{`wn&mf%f{n@s$(Yh$Sta?s8Xjh?O5F}bE^Ul zTPhzNp_)6lgca6LFmH-`# zVgzvtMKt;CddoA!I-eUuVs!MMuY} zL!^BDC%4ptNyO&o8byJ|d(X#$HeQ;{3QQ3+%A0P3_}_v#x!#GtWE00;5f%mDa{Gj3 zE-ofR^-|rHqEL6)W<5tg>elMO%3#Hmh_L&_wmykE3%ti%pQri)SQMe!x$iTCp@J>{ zO#d6dW0{+%eP$2*GKrBy81;?&rcAD|q)uhxJEHTIaQ&NV^%EIZ!wLJ1fAnhMm67}f z!kemB14ARYt;$h%MYKO9KU_QSNLbf z@6Om}Ex#MtDG+#mTNfWb+lxP5D@WRk6&CW?`tNYoZK9Rw@zXC%)0>E@@z<3kK0_X# zW;^5U)6s&Kq=v8O(~_J6qP_*niM(@~yXUTjd5Mi<5;aAG+pFZYMNQrs%7R&z=$pA~ z%`q#dMU626G%NmPl|5=z3J9V!jh;9=l=eS);W?qH@6xp$v#$Sm{k+1o%=+Box7o2i zEV#!XbsBk~@!u)KR8mT-4ZZ|mmFjy%2vTUKGe zaP*avlfrQGkk?IE<51!2Ja?)!ZNg2tAa6Rm9-=(#*=ktH$(!CVfYn4P6LSwg?rR|2 zevk1i&fhkR2yju;gtTS^@6qhWkxSTPndJ_Y1-tzfmnJAs3-y1b$_zRHHjr`&XZ zK#hQjTK%<&fQLQulyfX$qzmH00G31(gz~`brjg7ISk?uAvz#K6D2S4qWMvU}k>CU5 zo*Q9~x_lMk`-(wQR|_zuHvUl#_5ypv|IZ9k)6<3B{%zp*ge>2V>Ua?@BM>omq-tu1 zmi(?P+DM#eFVL7W9VR0aq^ra?sNn5;Q|yt$o^DQ?l?9iNE4bBXOHhv>NZCk^4bn-z zvcIClwf~3`iMiS>7q|A{*4k7&t0HtX+(!o$;?eX#fqi})^tfz3i_Ju;=MI04Poau( zZyuTCla_;)oQ1w76Yn2GPWH<5Z&!b?13+evUO8$lUC=ZfQ6`N)JxHsiq=5iH5oqxL| z9UA*2aa?07!P0dJXvpu;O#pfv-R$8!=w;tY2#i3cKp;RJ>k)2=mqqLcFINp=AcL#Z z-N8F=`GpBh#^9)X8S(Sd9QQq(T>&R$bpk3=9@s(?2ER$!1|KhEhGJ7)Rr;vz(L8_ph@Yi6RLu%;zVKEA;C1 zv0OWc5;y2v&+XFg0^{}N5X_GOFcT6X5oi>jUtBEo8=Zs2_!!XiKWJfIgmtq+u}#~E z^|e^A41@vBa*V&u@=#uYvm91=tpOe2EN}ViET=4aePLkyY&Ze$FT1(B{!zczgjHuj z=y;(tW=_Md;H$Yp&`?6>%*6w2O3SwN5}p@=;VW%u)bB2ip|&kn&5L#%Vn6;-*(N|Ws^0%l*@Q20 zf11mDeL?w+K;0tdPWQWCj&ZTJ#jFQ_T#)QyQ)D3!{coAuwbK8+S#v<7xa=S8Tsv@U z3BKOB0f9J+addmPEv+SQ?%MI3!ShRa0p8&1aj5OO4ESj> z6T*u5-Uk4;?ytGbudEbOfH==upK{(|zM{wja!cvU$`0PQ$IL$FDx)2yQb(~Kr+Iv( zUBe2_U`6X8_V0Sp1jt zuBpBYN-6}?=%ctke$O3ox*$97{OPvd;&FbnbraIBXPn;e>bB$TMVTq?(t7__w7EN) zBl~9mJc28xZCG2|{$zD&GQYFPlK%9P%Ni0e$TsYDF@63r6>|l+&a3b4!w}SNHC_nU z^4>B*Ww*!&B3=qVz0BO2k_fpDR7nn_$=*KPF(exFduK#?db5Qd=o8q_Zu24s zd3t;OZTWZM6H++UC&0}c?c(eHSrVZ3Z;0>dLqFQj6JUH(bJfihESogLaz-0=%?cAI z{8U>M8VsXR2OzLROezYyq9vakKW3An8JKL67_Lwy@?AdzIsyr7ylZ})dc`qmH0R+U>q}L|4Lo?tYSYA^W zo&xPlF$8GEWd|$=4?OdBFre|OaM&%|h#6E6eHfz4aFY?q=#_KvZ;*{0uG3Hb2CmeuECZ(D) zz^6@2LUQVyFY!qeOF~FZt+>APfC!TJ78b`BC3Cl_sial6d*9Y4|nd!r<=_C1_x z6#|oXzQ%wNM-D@8zXZ4rie3S1$fg^Y!AOi}+S$p;>2By{_wtJX50CEiWulofFz|m- zcTT~TzwMfiZFSf&JGO1xX2-V8j%}l3+csC&v2AP8|8J)D%>MSw!JJG@4t_~iRjN{{ zTB+xKpXQRJ`P7g9EEw}i%9bup5e6(_Y8D*IkxAB zc+q!cQ#p*iM_F8a#PLe}1`JDsTwh^=BEQbNNuZ~{I=Hb`wh<9ZnP0h-#TugmdPjk? z>cd~3(6{nQ;o1|lHNFOVZ(RNu-zeTrTos5Fe+qNSgpBDsE6|cZGd_fTKILx9lTnu* zk$yzzTe6E5O!uPZ%%AU;Z3PxlgN|1?1(Goh-K)Tm4_gOvRk1;G=Om)^?g$H2C0`}o zf#beXRg6;NQ#%zQKp&5vH+J99k+=LpiWyz7Ql2TZ0|KZ3IX;qdEIkkX?=! zEu|b*^9Nbj(*|$j_S(%hAj6o{fxz9~&!^IeI@&(kd%UDg_9+vA#vM7koSse$Vk&d*ez5hzMi%z zrUiUNF@gTW?-8~yNmy}0BDHyYV3nvqf2x56i&lY6_#RcC;?G@Bls2CMB-~>t<#huh zghm?dOti#@O54U&J_dQN_J$Q_;L*kq4ux%%b4w*{H7YMZpWy`+&+w_w0#d^fL! zwW{`hIIO+`i@6IVI$3-cF{zZ=P+!GyA$=v81#zl&rb7|w=e$e8h}3``XuIwem_>#- zZ620Z*GB9gArk|Ts6Zsx_fG&uCDg`hmN_eY^T17orj!~Y%{QSl4=d;CeCuK5n|QCh zac>PNwTGmOJ1}~1`gMqY1{njKXnp!|ICwBI^$Sqy`W0&r-6 zP;O045ZaYwhUrR5i-TJc-pF*t9*PDJ@vS3Z_76f;eeAtIS<~N}`C3jyGR!#nMB!}! zQ>Dl=U{|}%NJ{_IlGES|cyk7N{sk-`S_d9K-AK@oa~T-7{V=HtN9?9mTgxCVT-4ck zZm6RBn^AKAo9Hx3a-2R$cqx5`dFH8r-DzhWD3|wSj9?vm)q4_oBB!F8qt;0i(EQEK zdCz%rn@6Z7yvzeH%cauo-$#ASV;O+v8Nu6PEh!DJPM8ZSa}^``2PAu4lYizosGN@(z*t~6eA15AC-K@G=!w99ZmA?dDHV>@Gd{B^r^>2Rs8S(I{$`d>o|J+21 zh{mb)a6grKx^GdccE$wiTx#f#Y+UXNY<-zOIGuhy z%}3L2iGE%_LVo>ce5={}qF(mO9zT8J%{)IgiTb=yzS%(wv7LbN&J%xW818MQe71Hj zovXHpoL(N|*;*Pj4sNMJ?ag9@e!v>8We|__oXe;^RKE5o#TJ3$G%be;-;lqoVKmwa2w1bKuzg6UScg;L)L2p#q{J5l5~;2Q6ljM*063ha8D zacw)$%&d~0Z$f^C7j@w6UQ)d=jS&dQD_zm9Hx&A82xSRiOvM6?|Cp#d zwI$h8BI&NxGZTvR+MQ2|u~ttx-cf1oH?1kEwOc{Rr9;;!?W8H_59)_nr}wE;D=7Ur z)D*>$*Vkd}-)dV$+Bs;6Jz+!vILQeV`}Bc@#7Bhui{n5R=Ba?v)t6-vDC*WOX}OC9GtIZ z`zmWfs2O$JwA8uJfQ7KvzNXp_kEZvrFe67#37mnVR-bd8TcT_*uFr>^=I&5p2yEO4 zQ47ZIX5{&bEM1*bqDYSSq>!*n-eH>HK95@ZS0_#Y#G{in>yC}_`DQvJw)vPIOwzB-bWdnU(=_Cb> zJUTI}Q65cVE0A`nfakVwRXhFYJ%*Abiw1;ani|HJ$_H!-hh4sXQ^8^?X;HZUk5z#U%I;G^Yr!h@x_nWY6TIvI9UIO5%OA_P#ANrxCJ6{O zb2oc?9(T0dJ@Lp9c|W}m_p%0BZ8&NSakf|d)8!F{o`h9W&}ienG9c=Z&w@2cU1F-_ z39xu_=XHnk0}?{j^q}!#_AM6;2zT$)5e?ShrY0z3Y-@~B!hgUE7!BX9tpE`KpUDC4 zt3B@uI@JncETGJY3~Y+(1_mh~Q^7howKn7Bd?as5!O2`iJRU~N8?0CsW{c}Pp#3MN~h z#CY~yK}ksFcPz2NFYsbHAzkW@4!AIVimHscq^?xhXi`48u8f6D^;L^V#&$|>Rn78Y zHZoOrz{=yoKg_&__x>(T?V^{IF=CH28cAxw#E{vEk-ja_w+cRYp*Np84#qw>ZGMCb zJa~!LM+I}97QZprVbe{K9QA&*!_W!Xhh3cfXQG|e_jOX_>eSe;Kbsi$xaUg5j88@V z6O4q{Dg=G~e4x9*hji5xU02d7zZ;(@llAMw(HRr7BBS8jE(|uUafSP#YFn zz1P-J&xRR$PaqP`_RiQ9WT~K|5W)%y<3*8VK~{~e7HONAiCwB1sBIZY*s4hXfEbtJ zd+lN`l-(;}iMlk>U7~mWvKn<0n+UuWD@V z{OpTMb^r8J+xQ-EV>;WoM-oX zwcb0hR#z-*oy(Yp>@q|rL0J2x2M6D67u42kOXl|L(@RVnpeI9FoDN$ON1|)7ohHVu z|C+Vs(g5A})U?LBifbOa;Q)c^0EXFtB9W=jiI8o?LG2o*Bd*XAB-l zDPIV(@~8$4x#-cVHBze8KN9){Uy5kxRq~30y5)c17d69V8Wv(g&42L==55Nq_(j0V z{~5m!l;k7+i(gP0CP0zy{U#JG2_^5Q@#X|Gfmc%Saj(CfL|WE8k4=HX5E{B2`RlsVQFF*8XW=9hwF6 zGkK2a9^#@28y}>7?{=sw7&r&b&y`XILe44^5NbRINB@>Q6!)!UG|;w zK)TK^&YLT`3^wgUuEBY@dpFMZW6QHx&NX%p8@BhkVBd-oY_z*5yu( zR-Rj@bh(7Ld3nO0?t+S-;B%ONyBFKCF7_<`mC7+-;Uj$6VEb zxO{OX4e02mgLA8>FJWn7bn0<3s1kKJ+@#!h>fB<-6s)N&LI_gSpd_b{cnb7u%w z_tx9H?>@O@J`dYnV?wq{^GDL4CH#bI{siiJMneSUK*3c3nzfcgY1jO0oDE~3V<+Ez zFUGC3_iM4{C*@XMTWs-sjDBz>NlUmnGYke0;!n?vK9!QyP?wbuFdlQ6hW#FGL?ZFFQ?SPPonPte3=v&L)ls!nAh*$UnBT`8N=B@Pjq& z3$zo+nG$oAx*M24&htQ_gPHrhfjMTNvk1kGVDIJJ5t6|u0=Tua=e7!5GM@;$@o)#CJ!p(xa3 zl=NJbu`I)wo2PyJQ05&BypTc*FMDPCo0Bj<#_t+cDMq3iMF0<usg}o-cl6z$gHC2JP6aJm82%2NTvX5gQcM0o?P1DMd+zu*NmnSZ{pjN6LpVx8IIJDjzAA7!-yi-GWc zyZ*^Ul^VFXr_ZR)NGn1QVFmK_B5>+T5cA>DSG@lB?D>C?G_UDDy-%&3SiPUSba$zG zzt;CP7V>zx=&mr8M?mMy>?ZS+#q+zSp*fKm)!I~Jiz-MO?&jdbQX|z{X#T{aVUsPS zratR|qX+m&Fb0&eI+y96s8id6g5qe6Mt5eW1X4LFa;Y0JXtBZB<)f6pCH{PA0BQ%M zSSm-#7UzCKv^%XkONT+9A%O%FAeU8o{JRLC@~F$8Jczq({X3znW%rg}JT25pGQox0 z$9XTdENMe}omzQ(l{1K)$$>NHid*Vu^(X;?lZq#>elnER4|1k(5S9q+3FB}@h_6}l z#IA`)tC>N~bzOR0Z|Y+vx2fQ61)ow<4f6mFc>@HyJPxPLbsaQ(4{m74)`XvhRGUQV zQ(^`;4m+!Qdy(C5)k_NkNGZVFJ9ilI%mo6+-#Nr%5tN_=wKB%Dlp4w zIV-&dNT$#CpaSCw9+@=o!;Jm|on}g*fT@Q8WQ^rwG;cA3NzCf-4iADU6Aq;rc&(r= zT?!o|g7JHiS*>E!D5-V{^W+pejujkIlGhigxdu<11TkJnNB0cnLRI{ethaHmSsPI4 zumd1V`LUaNvvx?|!ked_ZIxeOzQM83mcuYuH?zZBPGw-N^JGMJf%!887h(xrV)SHM zEB88nFskM_KW{V?mV;S9X1abmq;=jhY-Km5A{mo5RF!gIa$JPaAmb7A3)xXr@~|zV zHAp{{(FhZ+O)BF7;SpR^S7y{H!wC2>RfW8XtZ(%(ebzCU|2`q5%K63Yh_HQCmz#*H`uPYa91u+X>k!Uu>dR!4@dnT+^~HWN<~6-|-t zJgG)zIJ;EVt&CNy!Bkf#wX`X5EXxW+!7E}lr~me#J!`$<)Mm%GOoKf9S(X%n#>NLN zr^;uNx-Qx^X9=kD7&WND+c#aigJ2bHf&+>~P6{IsQ9HHLlwvrRe3XeSO7&&{psuM{ z=tOlf@2c0=EHUJ#d<|{_p25tEb#msjiX|#)(qYv8T^4GocJi(nPq}+(diUwzwWP< z%b2@`0{R<*nwp}M{ThQwm2!uqyg9}%Im0nil1Wr4ICsBcwXhfsQg@VIE^R~W@|0$8 zdE0|cKd)-oTNTnRwV3=#ZEOjAe=i3CYBLW!t&07gxN%-qz?j$BL$P>s1swE z!9FtyEi!0yvU4)uPxtyqSGLD@5ewK#O7Ll;W2R#0=!Sr1IS!&M(#*fS36oF^;H(PL zlucwfT=hG&ISv?_xdUYt2_s#z+5f9F0hLuwv+yZQA>0P19MUSaqmP|;4|$h(iY%2q z{SWI#ZBPwRJQnI4GTh8B(^j;FOZFq-jy>w|^@s5yTz|YPaj8#YQM(!rBPzM0?c!~K z(Z|pchY<~cwrwGErl1Si8jqkIi0W%~E}^tFebSO4X2&d6d0;k!Ue4hOr3Svd^ZuVH zB`sotS+L$~!3MSt2P=2L@d2$c!J5e@jlfY5&HB}#iZ-au^#CPV!|e!LYRH-BADaD4 zQIPNUg*c@A4#)-iyUkY45tVnc_5TS_!t(J03)5hqk)}z|0Z#lISXnjR{UVgUR$>bD zAQIun4SBECUpFMmKf>ua;ATch{h^(5DJxgZzW^nXykZ#44B4V~{pl}LLiZQu0Vw>v zoQRPDZG0M1^rAQ+Sl~rL3W1>p_x08nzrjQcCtho=<^Jkr?Q`?19s!vkh@)V(uSU`~ z5et@rP%C1F*f+PCgS$(AjnnS~w`L?XkpE>U$ZT6=Y?Zxl?48V?s6 zN9lwDb~dlS0k8OivD5vV4ANJ&Esg@l@hg3l`lT8n7sX=r$Ch=bLp9$$U9+XK#%0TnD+|ABMPP*9+Bh zq7}8DCCXuazB~!jwg2WxNOZsdcTYlNrUmw5qj~ma)U!^l4z%RAu%lJGl(2Su;YX%R zx2f#sCAkCWZC3IRMkvCoiSFlX_DzG;*Qi?t*iM=)-4&1>44hjYYl zZSR-hZ&kdOS$fl+33P924K1H2dam{uk<;Gc8o7C9GO}NagmwJsbZ*O+g$l|7%N)W< z7Yf$8+UM`Z?ym;FYk5?JZI`QZCUBmcIIa(^_I~hnJ|B^}{k&v4v4?y);qpdkxMg@) z4r5Vnd2K6XQD&W{Iw8NUFw8*pRGod{W>%dQ8*Hm)ZcLE`j2eiOKFIdJ7FxTPY?Bd! zZ!n(H)UV^)roHb_*XOj0O>)7no8DK9Ix9}6Uw{Bjr+2Y0?q!8!q)l_dOM!Zpjh=RFfcFHg-Vvw5X!;4Ge1>q(vExY(e9M-(l z?6S7fUe+H)hKj~c5r>B`74GJOIh{rCg2~Ls8OmrqIJj9m1Iq#4)j^7oGXn9KzQ-jl(Xml2^(vJ=|Ry97^< z5iY!?d5ta&v8v;aB|N+Oa^2wEuQc|$@mz0u5R*{m=IK0FPi7>b3*{Eh-A!bIBnbw~fV#`ThK zd$2N#aIv$r`sNlF;}f_BDAtt51GrYlY~dhHaE_eVK=Q3PHSjp6*ovX}p)cwV?H~b~ z3~EavI_%yFNI@i@7Aa>JD9g~}+|L599W=+-Io8%xdNsn5+=lDGdyvN!=85J(u7 zlz2;9urMD)(}OauO8QK*Uj&69}HffU%-QwQ1x;EISWg(Ka=<$Du6cnwz0VCw z%p;n^(GYA~7DHzK#Ncl!k^eoNR1xB+`CHTPx}HgUjTm_u`1@Cl>(3a9+eBG8`#i%# za_0!s@sO=Q*)ooSO!{k*>t)y$8UQRQc(9}Gh{rMOHB=6KReO|2VkSAbeXB?* zduus8+&_(U!XEY7Yl0O*kkaD~i6{fqvQAp#ARIrj=)|@Dcyh{Pe-*ek9oFZ9YFQ#Q z$bcx#5*)w{Q6k4yAmZ_>I<#w*GsD%)#&`q_(Fa(|EN0f~1Z4UQkclcZP2++E zZg#Lx$FOi4Dr+##c^DgQ^))yAs1ywPMb?FD#@t3d!Apy|G7w zbFhdfHHzky8rnr5D+?skkd;_ljWI(jx|KC^$;! z^T1WJ`IGFeD=km7f4gp5pY2s9U|Q0)^;N@MGz{-G#-Coy=ZbG(e$7@2*^Lhcsfk0i zW7%^LgUQU+LJ|1WroCQ}DPsKzI(qM1RP!je+@xKb^B+Zm2PTU-{=T4Z7#FF;G8i-Vr{W z;dUZ+|My2)`N+OY+n0Njn{NMyGNcjJE7Ojrlvnm?dl*`(*w#Rm+mc(e6X#e4hid}0 zca06LSi%4NXrpRXICY02JUb9{X^@9Au=xa)Kj8?*zK4up)L`zu_pS}vfDMQ&UPOKe zC`uh_1{cyImXMwLU2920@v=Z(&78?oMfa?QJ|{cSo?d`0>@;GhNP$P?< zMFVHbi;4FKMRH^oi*OS(9HC5#rK>|6>-PO&RBjGEJVVw? zhTAmK%;rF-4{D4mt;T(+8Z_B<7y$e99lZh)pw~-x0R!Sk%q~(8grr1r-kZM7YB5iB z%3acQQ$7VP%*?Mj$F_e8*27APAWC67u2{i|MIJ~8J*{W{q!Egx+TZ9VV%f|$M zv~%;eccw>x_uUt>lY{5o&fd$($IG3e3L(0OnKXW@v9h9ien8q`X^t|+S}|=g z2d331Dqdv$+p{#rjny5QdZeDgyk;Gt*%gA(53fC;uM|Uu3+x(j%wNNtR6`V>u1&b4u!QakLhGh?|KdH+INlLn%jRsP?nYdKy)}C zk7NB<{f~@5!~PBFj*eEN6US}z;aQsRyKy#>jpGhoAQH&*TLym2EnacwG&_F%%o@l= z5)A<#5~<@KsWg5uouYUJ{GH`M-TM;NQwe(gNy|U4DAfWhz3B^hcO_T)I)<=|g?Bi> zxqO3=mP+0=-}fO;EA{k}l}bv-03~{E+b8vl&-Wc{&wXEN%2&E;=Wk}UPk&NU!LdCS z_wL*l7v8TcM(c~^Ces<)9 zJ1_|VuFl7!97appH#O)o(_bX?zS?YP0nQTfxTT>vvC4l=C^eFSW&NOr+@`tT-7X3`@<0eL@*3m-N56s2ac z_uk1nS{j)K+P>YZ_+7t-YSJ-7Y`8VN+Z-U!kmZRjiY>qt5%P1Ttf}! z9oi>N-&bkuHdj>7e*!=F_C(A%i0pDiIqy-&kceV0LiEx3`k;Rmv;AuO=(3q_B%N^d zvQ(dvQt-Ihf#>!5A$Gs}YWwh^>f4^;atxlXA0cgEJxW3XbOJH`U%ASFf{bxx6%Gtp zcoyW*m=K;paK&o1J9@aSu{ybYs0-XWQUG?cQYx_YJ}x1a>AwOh^j-stgm5lByPP~C zV9~kw%9NP3Siue-tkQ8Zf!9<|WC8Nyzo*of%i;no3HTA!I@D~|vPYh4A`)8g)7%Y9 zLY~L#+3864y>;aK|EpQt>|e9^%sc5+Zaw|ZG5=>C4_=F{lfLDof0Kkh74|@8FFPqn z{Cytih@_3HWs)eNEG}v#XLhI^@>q)4riFGkax>e-*90hfx-y4GN<9Jg*%(Wo&E=H7 zO7sB^w)0cU3I`}!|0x|sY^(!90`uL+__5^EJ`o4ntm#3Sj%m>!NU?~+Qh16Bc(_9K zzVxzR=c4yrDL|sMQrnPw0Rw*BTC3SX(zEXbqAm&}9gFSmm{(HE5MbQ}s@l4RlJ8hu zXF46B^SdtVibb;lIb`ysupOwx%%zKBSmlApj;X)5Lf>5TBr~hgvOMPiAp;$?&*p#j zfGu=zJ>Q(izQX@6IJp~Q9l7=;ml=ZOg|{E8Y_-!P$d*$GBf8lXRsx?< zz<{9m0#!%5&>7dySA^BBz@|f|F3Ovb689&WIJ&uy;oeWP%gy$+p}04DcHcu4eUADy ziDtTZYOa*SH8cF-W7(3DEH@)^uFk9|kc65bRtYevl$(x&%DEYnNkG>bNu) z-)ZzHS5Sx0&17T)Tu+!H<-YM+woT>mibUQr+OmF>20M5+Hf>-gk|s~#1l3W&XUHd? zd+CnPU}e*;P@@qb@QiH3Q(gFw>#aU_{CsueaY-3!z0cM57x}D1Pnsmp4U0={qrou2 z3<+x1a{w-v4tuwPTgn%$niJ~$UL<6U_FRUuH%z?4GaNNkw^hHKL6mJZ8H2YPZn(*3 zbN?eP6ut;U`wBvaVfT)T<1IP-iF8<^7B#_2*a;$3>G=YU5zG##q%rGqG8*kroQD~m z4Q94zG)_2B+WyBan~3Z^r{MNAT+TIwXp#59gHE%=uV%RNuJUAqO1^$7zo@2&7bCcH zESTI?GXVN0mY2nWgA2~0E5Jsm9e&=r)TE{BF?KT+(r1D_e`~3~8x-?4E%v+$S5bv4 z7zh16be#U~E+PFm7xY#=Nt;}tzMZXAudHU?*_0Am)P z%@{}cCA%d1AeM+;gfKr=ZKIDrhdrP04qZ6Ryb@ufj%bzDqaWG1eX?M1W7fRZWmotd zB5*3B^o*l2MQcC2TG28g5)s*WVwtNoxbOlF{qjOt^+Ylm1T$0_bTP(v?ep38H6g}N z{_6T^Z*si<)04y8E^H}ui%)6JVWZDc!6Bke zTlT^WZ|uUMeOxN3x`$TpiSm_kSyWECeVN9`n!SZPw`5kU-1-!Xv0es1G|n=50vydO zGs;ECgcfF4)xq z&>zLpZ_oaVA;Vv3fDRd^k%5U=qb^Zt+*W5R{DiXo;iq!rCU=V20*iY$ z0NMsVct&fSVS&n18QC*I5beXfi$O;l;L4NIK8uYmkB+BU)t^)L5(z#0JHDMDROs%n04av6p5>3POx{71+0 z@e|k?ekT~k9Z`VL{v}oqlI&m*ls`r+k|WUxZCHm#8bp*UEILpQ>-0Qv(_|PChh;|X z4u8g6+h8_`?5;)FED;|}ln7l;z?n2eaSFO24v4-y8uC~@$Al79o&$KK9|O5iIf5y(qzLZ48~hr1Hm)xCVJFH}bN<94zbrc_h@ksZ7notpQh-W-Su!qsg0qk{@wQoF9-Bos>9+% zD1i4s%iSQb^ir`lV=x4^f`dQLep+}&hdf1u*I8eP4gmD9g`tRI4?->_OF^4a!CQGr z-f?*Bs}lyxe8Kc`Wt!~)*^~4sifwwZZduyywn>Voi3gK!g*!LfLu{7v&fqA&@(1SA z7kmc?5!iXH{=tO_2lE*n!qwmD*?+y^#*Q8J7!v3iIBUnf+6oCFh0}N)9*oq<*5aZy z*jqUYDf*O!K@22{>Agdd$ne-agD>ETj8n>d z9q<-lpmp<_tZSi_`e&NUp^rjQn(HZQKd_=uJ?!iBhWqlNv<1~DObJ8_O@xvk+uYoA zta!;guSQgIGsaqa6o;Iu2Cwcg#wO8u6O3f(Tkb}Am43p3P*RI%UaNLvvNw$OQiM>B zKLwQ}rc%bf0(L0r&=OlfnYZkfq!8IE9G0#oVTgU%HQ>!*)x(bNtjz;nEl%;0zj*?~ zcHf`_Cx;wLydI`_==eJ~x;ot#Bd0h!JdI?*h2?6$+{f4>AEs6uF$^D)j6}vmffc}N zfhL)44xOA5mCJ8*|C|sfzu^d~H9EGgSk9nUgCG2{j!-d~yBDO<8FkElN-b`xN^#{|)+w~^m$EQ|)DBs7^2Bp(M z=j~PCNASEm_e--a(p?p2lxRGjhZ;(Yt|0X<1rViP@mvh{L;eZf38pCH(1UCJj}zJG z4MT$O5*Pb>kG7i|IKQTs9wFv(Qae$zFyLmzyf(6@BsSH8nw=Af@Mdu&Tut-u4AdkO zoXV#Fr-j$~KlPL|HoKg!)C;?J>fS#jpISTtfc# z*8##5fA~C}Z4O(m@>S)k=cnNL<=tad%Cz?yMpn;b`)G`3Z;$hp1g8GRdfyE zaB!ENWsSNjKC>!?JMe!@QI-oO_CIbvwkk3sXw>=wwI$L+mMcL$M9a%yf( z5Q7pPeK;MRz&IDffk(V!q8`M=}!ALh?jxv>s5q>4t7(4A3rh^jq z#LhfT3fLMi!gO3{zqOj-ql}utWA_NQ@eUy{TVR;pvE+WLo#C2{TcpP!;Zmq_)v~z#;cai^ z?L2|Zga%`Ru-|oTQN$V?sb`Aaq==$H-!u@(1zK0~+BeWwLf9j{)8?hF*+-3`#v5tH zkrkZsdLh9^JD7Hc>+nn#c!}+gOv=>2Cj5BI8|qK7vyEK5cR2WhsV*oHID$P2KoIL4 zV{ID6b+8w(0|y0M|8DU*rZOW_hJAu35yML>&v>H5?-gR!eg)R8KW-s`y}1tyN}NPf6x$t~qPsf~yJ(`sI*@YJ?1lvKY|A=C z-%s8>V1zDFJiU^?ryt~AtD45aKwsJWwU)^yt`vM2Fxn4~#p~|Q+sz}<)Sg=AK)MIS zJ&(fZqio5$H~yq2!^{A3Dw{WQpR}Bag#ax*=+xTMkYv4rW4tSlmsbm)YckMvQpysT z#FKwdgiD&9L2nWMMF{iqrY)rrtSIH8@cFF*eMi2GKIB#N1Uj~sx+nvabzJ(xxG2GYY?Z=kI%zJhE(feB zt%>|TBVB{p_#TG@Es2U#XB@I42J(sb>Hg`ye6LWTlT(ITkV9L*#O(0KgsJe^+H<~Q zvt;GdlJE8tCOni#@a^M5Z}LO0zq5Dhr}EwB>WaJZd$-L_J@;p|aWD0scS~KhDzyP2 zG2!+FH15`TSLbN$QT@I4Onfy?>HGQsoFy`LMB-<)*+|PgUTu}{+N7VAb&sk^m#U+V zk*zbz*WmY!Rl^N9Np1~EKbJKGG!$w}9RexPr`%l*#}9PNz~_&ol4o`}3{l1~R;j|# zSx`b(UiVaQ~Q z1wfcaun5JT-?mkDt2u8VOi{F5%o$wK|x4wK(lt3(Gp4DNPyyaxk@GM%3C*i zE8m++^EJtIpj!Ne^;GKdX%Bnmh=ep$v`(*KP7lW9mY3$XN+6^nMgbHHD@^%tB0Xo_ zn}rR^=?t~AKx(HnuCnl4Cpa-I(;$FazZYBE)H=UPyz5oHX2iGO_C6<7Q?_8|#I)uA z!B(FPNR@R=>XbduMSuCxzt?UNNK^I<77aKKi6`(X~F~MCxiI@<8IgLCRb``gE+( zH$;uIDIhEH`pK(9?0Q!|^AqvnTLq6+v%r-^hm&1Vg!o9Z1Qj*n6;`L={n0zv4sZme zQM;8HSyC|ziIz>y332yWZty9-?{5stUUm1|p`nN${CwN=2veUfPdj@@{g1v@A6MJm zgX3Q|=QqpyQE~9U83Se^;QX0s)NoV;@2qq^Bq=f}X^tp&w}L0J^he!HwHlSW=R!{Bl z{69f(enTx_jx55|tNzSX-T;Z6tZEXwXcwue;B}5&!4+*Mu<@T(F|vl3#Y(UeoSNH2 z3WzbB^_7+?t2a_wSVZgwO=YE=ZF@M;2!CPjJB49fcaN>)rIBCD3;;}gUma_oNNy)n z>z0tO;ys`FgDbYQRRJ4(jIL6JrmmJ_I`Y*@GLP%5&5O762qWY!GoZ=88HsBNa#7E~ z#{Z@Zs)zKax@hM-&?gX=jj%l<$-hvUJc-}?KEjc>_#XhpnZ&~ofpo*q?^jXI9r1ciH5g=Q;IU10jWFUkd^S4rWeDZ zw>s8Yn$pf|QoNJWc)BU0_@f+0>cV}?j-PTXgOnXvYeGoaOZ@My{Ce={+c3HHUoW!G zyIk%FPdbbHm&|p_DCqT0yet(H&2fLO8Dfjk`mox#LGe|jOvp5lYe?l@-4PA!>ep`0 zEe5T(54DoBI;iE9yzzlR`pcIZIVxDWfcqwCqm~mjE;m1~swYD~-}zyx5&5{?K7FL5 zet-HrRo|^4BI5J9U4^2V@p<S(ccAmyqMz93EBP`0@J#xl;ZBp~|Ps|3-@YdMI+m`MXup9^Pl)>f`-#YAg%v zED%T(1o!WEt97xQiEl3#H88te8NP_TfT+S4Qmx8pzJUJYNJQsT;w81&s*8d%Lrc09 zn)`U?i~WW7U(zM)nZGUjehqIqX0DqRlY{BRGj~w}}TbX)>?gGMGcc5&CT`gm?#UX}?md$GZ7}WIrp4dmS!SXD(qn zA)&p#vA$lwW!8L@i=0%icbkq3>ls8bZi$>oExQdrCTaXB?hhkAj%B2H!C9T>*hQJG zp&YOuD7%PQ?d7Sqv2}UVvv$S3as_c`TXvYUL^|7amVtGEv=V;#JWf_6JWiff-=1oO zyDY|FSM?6J4rz$Dgz0S)vFTPA$>NW2sd(WVI>bl4H)alx*EQRO-5i9CHz$X;TF!AM zgao^uEoTQMMT(fZrk#%BR7geRkhp}Q+H^f*n&a$}Mz(vvTT=9yimwn}E5qR1iC++| zw}lKyJyJ4s!Ot9spzjI}A?3S{cUH}wYdgd-6sAGfvUou6(T;0V6do#WL%Jhc#&{G9 zKBDD6xMEYzW5QzAlfiQFxFmM%eB<5|?>mXMaRfQ{BW+x};#j&&tRXjaxJG7d*`xRX z*xqB#v@Xy2unQa|KTBAoMyYH;uEVv+tHpxhTEC9U<35_u=wfkn{TuvxHdnHdojmXk zC1@jAuDj@t?l>TNg43L&rWXl`ty&-3*FU+X~9*=H+UZK*WeeR$y$(*62dz+MPs@G^dj9ZjbA&5 zW4J>=WU!Bnu$6^&4>JBL;3D)xoxXcqJ6 z;pTID7;fZ0#5X8;nKqC;gONDjMsOc; z2B<5iA%U<&pC}=$IyI4yu~{vrLy*}YTSA;Pg$f2ZesL3@+qNN|gi5-I6eQP9#euTO z=<(t@0Fl%HDZ%Mq%ZlM<`O!u+1+CB)>w-eUkV` z+B7KaFR<7qc$4dTAEf%!&t~r?j=!3rBTiIVJ=gwdZyZ(8TS*buFZ78oT!a5LVB%O? z*S7m|(Oe8(Dv?i>MX;K5=WW)qRH2!tV>MFOB*Ny=tbtP_*nVQ9=3<#p-dabzqcPbo zR5U){Q4ftoVK7MIPRnZSYr2#HIXUiM70BMx*mRVM<7D$4zG|?fx1$4FJH|P{^7;&% znV0SoVrg%4i<28y+w6~n)Z1cjbM;%=@OtH2>rm8WKj?cz}Gqy!(Ew-gSebL)T(YJ0hJ0@*7T_X#LkO z{Oy2=%z0Q$h0nlGkGB z{-c_cYK+)a-trwgGb~3Fq!}JnBc$2lZ;j_#)yXP+OF(9~y(Pfvzmav$!I6I3yN_*j z>}29hY}>YN+nP9;*tTs=Y?~9?wr;-XocqJQRsF|)yWj5G)z#Itp6Bzdy}te~&XalB zFD>MwGfcv3B0DMlv#Y&^Y~msO%*m}}9`=UscSTtGR-!jGNmz;KINM$HuIgY$@UT<+ z(u~)m9>9pwhuCUS8-IGGJk50I5b)S}{Z z#w~$|X>iou&e%4EZkn)w{Ww2W*$Pn)+N?mTSw1X1PdUJ?iPNu=CiFWH|P@fwHw0fM`|=DhzbXFvb`BU1m?EEVUP`6#YsvP|cgo5*sxLTh#VL7pCs zBhK&Kl{XIK2m@Dw!*U9>*&+~7f+AXL8fH~O2lAkBi2D zOID|*Xw?xI|Ijt_#OCQf6ytBi=jvkGV(U{IBAK_RHOfa$8_J8?Pz}=7V3^{Un=p5R zmY#7YBotfGt0U3ZipqG>r?}EeR`LBP`mQUZk@VJGDq_M}hqAINI?zGdy5pJ_XunZY z+wpf0dQf_4)Jsr3vpOU&B?AXN{F8yIQJCJH94bs|gokAIc$w0iOar}QNf`|74Scne zmGAMCJ#??|p+{9x<+P>tyeVGT%PgZvq5VvPpy+*o?D$mBVr(=2N%3>9gWj?L6|%Wf zHLSp6j^g2qvU;w`Ly&pnqtd%hIy_gpmWSaT*!LR)tq5y0;UGazm8paehYZNs;ZO^j zHPU@LPy#o^n_*6rQ_`ukK?6Xtil~oc1DSDn8nx&|x~x3nCMm~n9BO3?b6bgr`M$$g zcb>j>H?EmWpGxbb(Q>&N2g?bFcG=ih;n?Y9<{)8L7d^0z{CV<@VlDgE7q=G4tiMKkN$p*3aC7oino-jxj-H@8p-Ra3X0WP>C1>Y^gI;X;^XS{VtS9XJ-!E?TNu z`#Y`kDjB->W*673>UVSRy=d1u$89Mu3Y^0z<z#0Hxo#ay7_MJ0g5 zC$Jt1q1kW*KLFlByX6blSx}a2+qg!+uAtQ~5Q$pF{f}OFdDreC)9xRaURbggHe*~J zUlVj|A7)QEYkr>dH2j|o6YMZAT+jiCK_U8XhV#Rh19slzf?IMb9px8FRp(iedbp$< zaw*M&^6m!HcN0c0@t(gXHrnn6l$=>NsE!A

      _FhQZH%8j~A!*+kX&;27{bHnj7?Spfk#;#G?N1}^N=VvY zM%vYIv5y)T!jlcpF O@t%MQ$ifZCLH=LMiS_IN diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PersistentVolumeClaimUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PersistentVolumeClaimUtilsTest.class deleted file mode 100644 index c93dbcb8c8cba17da4379929557020ed8b04cbf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8108 zcmeHMTayz-6h0j;xv;S73W$r~0A6-g5-+I8A{xRh1ZR`2On|b=s;$nXchl@#QZqfP z`09)P4u6DIQibpS1b>K+mZv9)nS_or8v>&4!)CUpzw`B()2Gkr?(^#(KR*J1Pob8D z41rqUTP48)QMyleX^DHKK=|DGmY2LP^QrLsl4Xa1V1CK*+RQF(FhAhfcEw%K4jopp zDR=G&ZU;?d$-+Sb3lWt~-R)Anb)Q*+z`<;47*Gm$K75faJ1sNfuKl8?U3al zj||R(i~V6Q?$E6rN+2&8%#CtI&%qplIYhYBVL_K#jKF;TUQKUoHuN>Uq1P%n)Phm} z+GT!&Z84v@7Q=xK8|CY|VG_t025m7rz<0T(zP@3Un~`!27I>j=u_kl6HWgCl)P~+L zt7cQLH8(3pxw^h-HtUV@O~juvhPH^TV4}6?wv;+zR%a27vxXhPlhJwFE; zS$KHI^-+0ym$fy^bGjVW=bo!|eXnIRC%B>&^34v@+RU=4k03PL4(h6%=U%ZtIa={ei zXu{K|CLVNIAz#Jl$t^ClAjBMk@d(4aA6gh4wO&40UeS1IW|aTkNg7WUx(G_*w= zUDVbw^T-}VY1EZbr$-#4Eac57ktFDp3N)HA5*SCp*F$c%<;Ol2zT%eYrJZR(h5S10 zDufI9@x-M7#nl*xr&E5?;FI2~vtxp4YN2!rVn$71@2A@Yl$xiIPbrXb?_f#B+-RQpoSYz_(joJDvV9WV-ORNBis%{xm!zWh6-SpXYO`4Yj+( zeN<^wg^MN1L>VD5WWBWXBz&n7+a4my{~lU^GjM(mmf!+`6U&d^5XtM0dEDr*TIjTx-=uh> zA+M4=i`sXo&t<#+@}TJOfWU?^+gmNXoH;JBf->5xjtRcO%moOVv3jk<8KA z&QXj$!2~hn{+?k5N9mbt4+$(uZyBz%cy7$W`y}(jZ2e_|+s4<*P?=cLOK>iw%>KqB zZq|SO#)E)1*;nsz(W$m`@F4-??>$zQ3(_YcOwV%ASn$I7jC?bwqhPs1Hs$yxv$1gC z`2^06$;jRt*eiM^B?4#ulIhh|aM=YxeV6$@Z!^rUD+2;4Ioerv+c7G{7R;!yv&QAt z;lkvV&_p$(3WnTr3@i}cd9G&Rb6G-)3P)MEP9WPq{$$|>ruxxPlZ7<`Cx_$2Lq-;E zp+Uy);IeQVYdv@&k_7|1hee*=eiJRa&Vv9eW=-7m25=4#jdi>n?wbz5VQgiwm5JJg zSo;X}ABAJsw*>RB5ItXj#pwAW9FLwS;3Uewg#TyY6yjbUX&=G9B{+@0uOQ+Qj!N)Z zcnD{{TzvH>IQL5=_Zt36EdaH79e?L~D0lur+1^dT_MU?6D<#_pDcCM4*gPfMM^mzWuVnjpO12-BY?r5Gd!%IhWJL)HujAhWuHnz13>DDfCRE{zKLLT({O$k% diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodDisruptionBudgetUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodDisruptionBudgetUtilsTest.class deleted file mode 100644 index b1ce853c364f1f34c71d7620d7876e81a936355f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9922 zcmeHN?`|7K5T8w)*gn!Gq%_c!(oG5_0cry+P@1-qW3E!9i(}btBR-+^d6R6pf7;s% zl&9crkU)a(yaCUGgqSHZ?smQrz6?AiTxT=r>~r;8 z3CnLGMjmnm79t>vIs4_E_DgOm0=ZgcTPLt+9DizJE6)A~fh$$l@fCB_3uXnp07U|` z_N#kdr%j+3)@#-)RlNXn1m^I)!))$*%;W?L4ZUt`RVz&bWNR9AnjtX1vs=>}-!=4S zdPA>OvC#!%=Ld(&2H)e7J0`~_XN}6HZeX>7VX!v0e0*1E>DzUq(!v_Ij07E9-1aP{ zqUw)@Bh*s@(`)N5P`N7FB@fHk__2Drl&&nmyJYe2=Z@sQYaQ|qHC@{ih=P`*o^;z5 zxBW*{E4B_e?Qqj#5`|E?@7X@5tHLey#-h|8i&AeaO3_%X(vHi0>bQ#9OqmB%ArAl1 zLz~BOaD+?Y2$#a{l}4j>`y*`6m5QSH9&1ZsKBOjd!lv4s_7%EVl09Rk=;x)7j7BTK zr8P>S)Pklu5Q-F_<_;AGyzFZe$TEESh7(QV|W@C!;&=7h7q3mk*gip_{@M)WC_&>)wL zKpYg_420DQl^t3}am#cG>8wIpahrJwm9^q2l$IbL@6jnW)2Vb)mri=$pGe`3GJfC2 zuMuru3DqV!Z&D5G;CxBwQG8fZP1jUHhDfxtRvfE8sWc2XI-9Elw?m!4vZ5_NX{m=B zS;!PLVe%b$8%QIL+L5VroN&W2IN`4eM1OK_XO^|j&bUzk3dH!yUs z1$LXuR_N%4X+qaz7#nmQ-`>ldIuJgA+C=k}nD<)>Gh_8mdskpo5~#kvL*Qm3aFnq5 zmUAe4fgP)aWESP_upd{A_=s#2V2$L06q&wwtr0#|g4M^bk;S%IY}?PDrDV9)ag3gA z4HtiFAaE^4VSWB8z{e!_b4Eym=M{1H^L%!|38tR2$oTc+#sU91H-Ds1hl3bNRvMkVMM-?5Q`oi!$sFh!Z^Mk+eQ}vHuCUgc+)1jUz3N2 z7%~r1RvsQw4_qed@)O=;5{6?`!fs6FoRD5c`Qvq z0n1vf{05eBG};+ z)*o1!0*cSDwNQQqpL1O)ScN-SBJe&UOu+{|sk`_)jP_vy+Wkbd^%Q6yC7|hvXrH7& syO)5rn}}9Uf%a(vnn*yKhR@MbQ*i&tau2Zl1phS1!58oqd<`4_0?&ysb^rhX diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodRevisionTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodRevisionTest.class deleted file mode 100644 index 8b4a515408ed7e3b30dbd5aa354515ea64a72291..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8371 zcmeHM-EJF26h7npI9}2wgwjF_We9&xsq7n&5aCB51yRYNQIZw`SL5ADJY{#snw^a( z7hLlOJOmGb1QOiy7Q6`J%&y(6)3JAwY(rAz!s}hn+4FxspEL9KzrX(p03XBcI@Ab! znkc`md7|47**JRmT=j;!kN9D#*{H$PWOsyVns z7T>=gE1t-3p9j>JQD1~iqd3}EvK#U!`H*^zogSwF_d}+TsL%ZG*&e6MLbe9#w}$Gs z2I{vm^_OWNc|v2UX~eYOqZ;|}ANr_skqb1(b=K6@JFO{Z9zRS8w_#aT8 z#YR+@)1g6Ui*n#B2R)xL$}Fy_7Gas`&V*9!mGL?O$tF`Q40*Vn3e7EYsFsvb{ix5q z#@(nN3SVfNq*%gOK`{m|^|6#`UY*SqDiWH;0pArdru{Ci;5|!2U8HW&4J>@Kf>e~n zrcQFk1(sd|E4)M@r1&fqVPKSbq9BTzugh376sFwBhfXm#RKj^1K`pigs3^VwZ5DQ3 zV~eBVz6eDQN8@bSXG$;xDo580(eylvbc~m49yq0x#b1Yl`G06tc{ESmhz-`axHe1X zij5m!nnU@PRi;zIoVq7Xj}md+Lx2=XvnyrDS!}^x(}Ni3rUf&NQyc;0)a^Q6hUCS0 zL~uO6woR-R40OeoRg!BHb$e{cPWMzq67Z7oH@H-5D zrX$5M8-2db%evR{!WiM^1}z=d#d(5Ef$2>Tdd(pZa#-;K>43aYSX5+xfbaP@MhIMb}o!OLXo zABWwL;#*^*k%#hP5_&u+W3CM&V{zK?<~_ICL&?sB7S)RXAm!L_6k!!=b^cvD4)vtif~2ewMiet~I~QjxJX^Ba;<&gVM zL$POVyd&Uk%T)RN3t{HAD}}5zd!^Y)tr_r!qfmBIwpxd#Ig6G-9d6+;HsVJD^BW>b z@LXsIH(wKY9gq}{#tB@98JNYp8N9E<99|pv^d7Df{Pz9;@0+Fh-{A6J_*8@E@j9EW z%)k=f&*xO|0$jl-97d5t4XzHTuHpBS++MP9yKUum-GSQ;3%5H~Zm&9UyJ_L}t%cjq qKru!zsYT3f!r;I}lX{X>#yw>2Y$3A)+pWnsLEdKfqto#Qobpmk! diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodSetUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodSetUtilsTest.class deleted file mode 100644 index 2a604dad91e031a99a60fb0e25d420e7cf8a08e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1849 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 K1=K_hF8%{Iu8nvA diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/RbacUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/RbacUtilsTest.class deleted file mode 100644 index c50dc6f0302f4a7a8456534db70e321d78f9deab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8130 zcmeHMTXP#V6h3l7Z7*pP(lkKIMWkF3pf-0x)3lRh+?fvRBxAen@B$;Rl|*GPo?UHd z_!;~RhIeLQ2A<(x@JASq)^@T^w5;5e8ItjXcdgaYcaDyZJ{?Ja{{72u0I&vki%=l2 z7KKh#@<>)6vjbKYK{b-0@V*z-pvyxhgRttjaU^+I^@0v}tBp2u9!TLvEo@YTNdhxT zOPBe3)$R6U?nnZYTkG{2fm!>ws)?}v-YS91n}Hum=F5l7jd=;m1d86_O`mz3Kv^|x z?yPUtN-#xWs$UUxnS-^{+mE(tjc*#Yd$mSwYZEoh*xTRvJZ$h?9&+E|h=0jm->BJ5 z0wvpKZSF?+t<2JWr&-CIfAyGT0$kEkC=>M`l;Q;9hINf*7E#=$|Ws6neJ^D6nMJ$r=L4MIs# ze3!LD;jB=H`ASur(?N&ElIPD${g5&k&2u4{#B_`llh+|*!64kr!#ab=4hxy@^ z$u)YY3@D@Wu*bI&ZT84A{zT0zAJp3^1E1r|5@zH zv~-2mk(5;pN>S!3j_3iWAgyvUA>ACCjD&`1HV1K7cq0~WM|JiT*`z(w_$SFMvr8VQ4duz;c>Yibf_P@Zjw0Zh(aX`if8E2z^MR3 zH)i>F9EY8BaAf+)Xp}}8_mezx5yLi%{j$Dix_^W)ZN|wKB+s2aDKnxpVgtpdxC_bA z+m|xatAsa%-@$ED9_(OGrjZ--bQbxIG+&Jv;QzqW7ia<)`FsR!Fc-C89XAq1+rVy8R0T7tJo;YWibi*zduk)#*O<6P5N(46yfAdhkz zjog^*&Og}^m>Wd;BO&((r*tJ)B85N3VVpWlFiK1^lPV*29chgm=d`C!Q?uNU>&GC< z`#D|--Xjw?o^60%pk!d24d?9w&PE3#&2%H~_^+~I%zsWyo#Az&Lde>98l~=Z(wUpd z$Pt)V4&LnD`=usc2|grX|GRJ1<(GLTNnla0Dm|nGtY&g!cTXf~_E84dLMxLiFqMrD zlqSdUt3~)+T?Hl=fJOKMv*O_ZF9N32GbdN9BCHMFXZEHP-b2KXO%2+L7VT{Vw0AUU zUuw~o4ba}zpna`Hd*1-0TiK diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ResourceTester.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ResourceTester.class deleted file mode 100644 index adb5574707c0d3ddbfd6f7a2618e6443277adae9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8687 zcmeHNZFdtz6uy(bBn?HN2&ky6DA-m=d_lw}M%&UtA!#uUJqN!{Hj{MdzQozt9`Kug z!#~0~dX9egM|r$EyGbW)>`o;G4u>z>%O7d#Wvb_x`P*$18#9>JncKJzF9ZNHC`jBgmml zHfn0C2_-jzRu`M78*0m1qzFVALka>JTM#%|y-R}{le9%8Rj=y!oEC|))~SoqOqRLF zWre_I%Q7j%X0@2@P=Q2UYVXhvvo3SLkT_kT=X8a{ z=?Y5um#vo10?YHIb`Q*irM8cXJsiB8f0Umlsq&08v2 zPrEEXH4uGLX!V$zLaM?~3QZhvQi%2fYzpBKm^0dV&Fwne=F$p6Oj&r4J&Y!yjj79u z)6wjl#RDt!T9`6C)+$&vOlVR3P|KXB7Wa1j9cEEH{M&;F`6(0q96_R&rlmOZrkKV= zSYru{b~Li^!+LcDjK|JUqg~}C2O^Dr)*da^sz!us-Y#``YtCAi%=Sl-=Wyu2&nTxY?Sq z35;|al|wF*+kPvmZPr7_*`iL!_Qfl!jgc&>c%nRD^=jI<{w~+A)hhWZqupLbqBnX^ zviqxO9CL49^SYr#5f~j-MC-9nbNLRFD&PEHcV7y*(~8pdp`kohtQqZ6*lsiYG^sP1 z4tykHO+iNBqjQI4taW_17d29pWs?7mSbL#Bb=G$9Q;_en4b`*2ug+u2CFzC82>p8m zwi<1%W>V1Q;UZYmZ~;ET-jCj#h~1_XH7!n6u?$}i-6j(aioJoTi{slAlb_(xIGG%m z+Z=mDKUANuMTLEs^Mml1Mw2b>J|}k6MoHR4xv1y#h`J7e`PnKuir%qN$DuT*^;P0> z3VFL(ZY&&}uMCGMHyYTJn!{%ft`YL9LCYoGWlhfNaa4b=L+y+`KIunRkKLQVRo&+k zBkOigjsbz||6zBu?GXALd_f2pnA<2iABQzxL@kej0(-^{s`;C1^IdQ9@NAr7Z#eX!{cvF}U zUIOUfFDCXOkZ&^lXlE5@q2Yfm|;) zW}%9^>CN@z{x}Qkc&yNHS$HsT8>#e{h5EpqbbMqnyw|wuGd8gP55NM1z>DxK%)kUp z;;$L}ox|BF{GEY3j!(d}nm-9|_2*CFyVG!{Kc2zyS$MlYK8NG;YF!rBUVwLS93#F9 z@8QfU?mB^g^MAm_M>8KhgG+zmXbdjna}rSi-+qkGY4tk~pTHFyT^*SD6h}Fjg}FZV zyuzMGoD9B;u|G?&GaB}Fg{^4dIu!cri~aQx2l4vPhpaF4*N?-O@D=WN1L?<+*RK;P zzv)XEX*Wi?HAKqWMpBN$!q8nxhP!MS?E+B7e~8Fvvh*yqr_IU`8GbTC$4^*TL=E*Y p_cXjT1oLMj%rUr)+Rea9qV-kS#PJMz#T{5fTik~lY@l_1{1?Lg^bG(2 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/RestartReasonTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/RestartReasonTest.class deleted file mode 100644 index 287d5b190c7ade1486841c7c5f2576b507e584e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1611 zcmeHH&u`N(6n-w-+J?bKVdK}u+NrxF7fuwAsxE^{S%=y(Xj%;TF{xKww z;LhK{-+_2;Hf?A{Oag8k;@I)$?|u2+d;a?U<7WVP3J>Z~BhWQE2`o1@IA$j-5GpWM zi~PL^RKYc~N(V_+8q0N%tCVNK5V1_#A!kO(F)r$`L|}b>I%9Gg>`#t)VhOA~5mMM^ z1g^EW4+t#v@OT}X1lG>6q1H+_;5w;&dnGkDDm&pRO;lcpj9H;1Ewq|sJU5T2*Bs9{ zO?i?rji7=hZ`hR6Eus8V$^MyS|5UO+m%K$&#SN9p(wy03MlJI2w*{)a$b&}s&IsSh z^MB7;=@EIMw53WEBqSPjggZEAWo9p;eY%I`;dT&3nRL!p#1|;h2y}MAe^aX{qxN0Fy=Jc) z_rl>ge$gGp`_WGPJRF3>?zq1{Sa7hiHs^MxQqg zm9Xr9Y2ntVAD8S*7y`ZMkNdZST3p?~WCp|ZnBi&F+yovDOKC;U`|?B>fx)}3!sm^N zu~#CO)J_BL64Jg(`~EKh>k;rqs?-VJ6)v}%m#T7p{Qw2LH}RSVsNu5=E4Z%X>=Aw? z`1U?QgkGT*+2jK^>+Yx1P{wlBJgdbTwC)< z+b`HYvqfM>S_$tbVFw{sOb5z#WgKa)Y%l0@X?M8V7cQ^6ZV>zWnHDnY;`B1i5m-z( zB=h&|?cNLSY65eu`c{*`l5_m1gD>#+HV9m51b(EMuXmV?c?GHj&U**=&H+p&iwpupST z2xPJcF*^LD1r-JcYHt$Pzkobtib=_3Cl;FLyoc(5GO7!<@7_;EVv5}qBd6#3xViWUPp&U{O^k4U+DGhrPUM!i8ONQgdvmr7mYn-l3b7sskU#3vb zu~0hP3T3`=yEkUsf-CUeJiGvs*slfwVG(1RAH_EGL3aJ`K^kns4Xzb_(zdeu$tO2DYr zWhZ^eZ&ctGDLpFCQ>152*q^MTQ-Not!JAha5V-ql_iTEhJ{b9D1@4fNoH<<5z^9s> zscOHI2i>F?`(Kx?1n#`rKaX8=jg)>lTi2X&r%u9W6-@emC|v|h6)%N~=|Z5_SaFZ3 zRK_*$1guWdg**|aG`W#Ig^xP9G;@_Y zG!|ZhZiy(uo6{~fj}hDiyv4+e+&Nf=^Kb#BGD;<=plqe&izr`$%lK>=7GN=%L9qB* z!WnO)^blDH{#w7mmG73W{S5E^fl>*s?1cF2MFt4%_FsY#$e3Tg_qnCWq}DtmE2BaQA4f_fY-}KNYmxeX!w^zX1h` Bx}g97 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ServiceUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ServiceUtilsTest.class deleted file mode 100644 index 3699dff87b241d152035f3129abc57977444290e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9880 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 fldYVOtx$Bbt>$FAw>bDOY1;A-};WYO6B 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/VolumeUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/VolumeUtilsTest.class deleted file mode 100644 index 6b83d6dc27600a3c6f31c081a99467e54b006607..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9550 zcmeI1y>lBy6u{p)j`e{PCyt#D0^#C(AP10u1PF0HkYzy>BwJXrGpRi5)7skPJ~VfG z9-NAbii(Pwe}Ix9%s@p$LjeUXEj2a6Tiw|@+iUxBL6$w^!djj8?Qh?{z4!L%?XUkn z`w0N&2c;D3Wu9ddCqPzhYH)t>4xVD=HyJf!HnFzZFnY| z6Wnm?I4lAE1WvTa8q`|O%`84j3 z{e@!nez8)V&6f$B+0r{RS6?Vi5ja~d&elq`dU3kGP$=h1l@4CpuFJ>E(I?mE=nNaU z%`GnO5;&3>pC`~?z!fIo1c9N>f{Kn~J4qNO!`J65hq<<~!Wx=xn=Nio!EH-xIrgH# zO!tC>d-_&$!$*C5Zwzi4wqHCCo&SFmj4)|;MXJ=HhQW-Q#|2X?OB1$6HL==a=~T&V8C>T=b3KfX7zHeR zRXrU;o8||;%(%u~&9fS8iCgHpOW1?osb`3=bXKciOqD$-rBO@zx(^N^)2Se4?xNI# zMY|D5PI}yENX51|cz6|6=C~X~x+Mw*<>sD^-G|F5wwlbubIy1!BkaS4L{sTSc7DIi z5O2%Yyjq@RMxU0Hpp{ch8As8T9r=qP+`k6 zjCpE!Ocl-ckH(*Q)Dm2*D(t@@+6D2w2Rna23@MY=;9cD-jl1YLAx~1g8NKk#gS^q{kYZ712bQ-y>_q%i)X;tl_uo~9;qlQ2%mP&drgJ#R>LI~5^t zTG|R@&K7IEN&5adv{v};CEfMyIGkXuh}*mDoWP|{tf?{GVWM+bw}XldCmVwFW~soP ze7VqhRIPB>w&@>X=+W@W@8Q(X_|yld@pGWva}>_t_d#C@&cZo-A~@SIlsX?s zy@Ksl+N%m$MM--t0!>rUYD(Hz1llD9?U9mpB?3*Q+k%pIH71QIX|G41WfUuYqNH7m zKzl<$bCk5VBG6QC$QMdlHYV*$B`p_$_O@cBUnyztMxb3+(7smE-it~5MoD`=Chc1# z?Sq)K@07HgF=@|~v=3v_eo@kH#iaeFq)o)6{i&qgj!FAVNxKu1_P2s|1n%NV&t<8 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/WorkloadUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/WorkloadUtilsTest.class deleted file mode 100644 index 3c8e015628c331fe548240be65436c462ae409f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8491 zcmeHMOLyBu6uy%-mF>RL(s!Y#rH`bvHm^dV4^SPYH7K^Rl&0Zj6nWyPl{7liI5e#I z6D(P=Wy6YdfCCH8VZnkO|AG}ifWsZxj{J~gBgzJ{NXFy&?l*Vt+_`h-`j?SZ1Njs+3EL2t>Qi~JVT~-!V0*AGDNJna~d4s_IBJ)CSdi=iWv}gvh1opa{ zS3l`+6UYi-y{Z(|4D2JY4+lNdrJ-+Hl)%w@sxq&sx?b1S+Wk^dtqXVt4iY%hLvwYV znhl4BA%RRyt!kyBq7xvcUAX>f0@LNnyoz5;YdYnqR93f}p2=GQ&M+gsyQ!6N$u+um z<2DW-tSpz+TD_(&s5P}*#HGz>l}|hxAb?y-<7j%^B4?YSuya+|=e*}41ZLPfN{1Xs~2 zu@k95z=8}E$jsMEUO+?UY|w^mG1s@zjJQPE57??h-S7=Lmo?U@+@O|Y1_(m$d4zV9 z&)F>Bar1oF&GQ{M&qr>4PHr$7${ypgYjSH{=Ey@I;}-E=9y~mGad`4Vz5ICAwm!D& zvw+J8Uo%$&+qy1WrYELarE+&cJIEa??Rd!l_jGi^(*%)W2WdY!E3u$Cjw}lGEzExY z3&081`|m>ZmXG;G7%rQEhq+;xU{ski*_8RFPjlH4=1R6@b2)5bdWyF`rjbF*!u&{X z=bf{2vK`7TuR$>NAR=Ra(FK~FE3(JD@G6{o1VDa+r&MTxvU-~tYdU~f*^`Y z4y6LU>+d9_V^Em8CLnUz$)ukosy{(aP^x!v{op$-+i8eB-qs-PEITbImt8dd1mRqE zATdwC^lCnUo=o*oQ;+&yWYU;`k2Oi>wJ=U)8iY2!>pWg`Oxx`UO{RJG!7*lvE^IPV z;dVN8FvDhnK?8R(srY3xMwu8mDRJ`iXY4e|Vv|i8d2`nYlZl82j!XGEYseu6P=|8n zp$E;jqtX?*-6lju@uCqyRUUfLN8Ug1ejBsw;RoMj+HXDn#_(_9CZiQ~i7|{jkod9L z8_IU<@-NyY2Up<5eJ}?vVG(O~xH2Y+9tSmy@#U7gN&~~hI)*5rG0SxBn}IF*oiBIu zbvqpYy!Q{Q2mF5U~vHeWBd9H(2LQoKfuS`i3?3PPKk1Wwml z9=Bau@;2_4=pmA00B`nIWnHolXt`Vm;1_u^M&R292cJn<<w$-5b%1n*&;d+U;y-~$mmq5`@E9}$o`$4P>Z2^{EuCrGf0Gesx4 zui`901B2;+OG&VX#btaSNwAKzovc@ahq$EJ$`UvPPK+vmOW^hW;2~m(*TgdWq8*A9 z%)q27gtLGX;SUW5;1o>59_&fjn}Q7Xb3OgN*x%pN7x)=Cw1q#6{iomv_K!yL$FP4K zPT=QLa1#GSdm5gO+GpTQ)IJMx)SiWNQTrU6kJ<}xF={WtEVjpya}F-!|L3vy3TjKR z&3y+~Ru1RCffs(n-W0ry|AqGWlL=w~_O(%P4PM0_ULD9V1=l;M*RdUDdn1AEvqZL= zDcQbAWV@A;?WaVx+bP+8Ph@*D9UD2B$o5uBwmXSzN=mjMk?l@Owl5ReiYeKCOJti* z$2KJ;vZ*QAv_!Urlx%(?+uf9GpC_{2OUd?aB3mgX+aHN+Z>MA1bvlvlos?{9BAb?y zjU}=zreymnk*z!dTV*(s@A^KG?cJ1YKPR%)QnLM;z%~Us-cnOw0K@ha-e}9P0`J3z PPzMt%pwI*x9)bH8aP4Yl diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ZooKeeperSpecCheckerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ZooKeeperSpecCheckerTest.class deleted file mode 100644 index 2fc4093c55b1995be8e89258898645a292eb3bf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9905 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/logging/LoggingUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/logging/LoggingUtilsTest.class deleted file mode 100644 index dc38d130d656ca814f2211de7c0b1072b902a9d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9695 zcmeHNUvC>l5T8xc#C8K|(*|hEpKV%N2imiU@_jAG zY2gKXc>Od?61dm^@fe=pE*)}L6PUU$e4$qfoXaon6PR2>lxfHkm~G0gDTCtWe2RJg!?Xa znQv}c;`HeP`d#XgAjuf1H(sNLl=XS zMq!p;q#~f9U*-qGM=w6WGx(c@o=!?TbQ43_oIxqdeB<^JZ~_wD65ZZn6RIU;RDW6L zx$L$oa}2*vm5DViFrGU7J1L*c78cQ5c88-1uJA+@@7>Ujm=X*#K`y(=>Q>)ll_h(icQC>KCzV=}#Jlt=3xZH;C;kFjLbh=Br zZXyGxm9g~RbVfbn0UMUy1p~9 zvCHd?u}QZq6g6=jG&JlVOQfx^R^n>U^w9+7iqd7?e%x2be@^PE2nc*!9M*Jjg}@z+ zjq8JGD1lp2w9$MfbahMm>&F5|jK2Oz7?rN?guWIvjt(ONfm(iGMrVz|04g()YTM<*cj8+{DJ8_G7Wl{@ z1C)@@heQ0y>zFOvChO9H9jTpyB^w0ijI1?F z(z?{5SPQKLZa3L)YiU{pGmt0b&olnppARMjw#|O&JRq|2^Y7)8p0L!mk`_#1>GCxP5YIkv_Gt9Z>2zc+oIdwR%TD$9z zg7^k}0=@&!NFc#G9||#RyQ!;l64!T8)8dERo$c|@vorIXotgNbfB*Ok06v3j^Dsl; zE2DkSa$~*w?0|VfdB$oH{wO>ZbIq*Mo-Y$)x%NU8aOs5{ulvT^&c3(Z$vwP(9%cz# zN_%tM>N;$zuOt(9)UMRNK3ZzIi(k_SAX zz6xU@nH4Icu~q}gL-Q%^wD(4w2HclSqfpHJ2W+3yRiS#h=DkOn_j1j9sph?0^Hmxs zZfK+|4Vm>v)FK`~j8WSn9@?en?9y{;_Nt?2`iU@B+ETo2$OdSyPpHo#_s9XKj}};8 zGGAx~%oj{j>HX6dow_TrLY^jA0qc1X*$QJRd||0ckg!Oa2z{RTNL-pxuzQ^fLz5`r zLlI$w5Ah2AW{I>#=^ouin!76~MOox1kpUMVF=UYvC6=XDQAX{sJvTiM$#N2N~FBY zWWvjAdd3iy?T$7YiZYrM?Q$zT{6;IcES{LnLzk?$&evYeve{#{S$vy6+~pFzf^l`S zGm5sIp6Gc942-Q^+!mw#+M!hwVTU6-eIZ4*O&(|e1EvMT4Ybofa$7Yoqkl_0^#m#Y zcbZpEfejU_c;^B=G zk=H+CT|J|&5F;vkBw#8n(u@i)!QFV-}J}A;U+dW zcT~oM?nD8;gN<0CeLht#j)6`}!!f|~!N4)KnsvIy!yaE}=V^7!aE(9HuBt%vdOJr4 zTJZ7$yacZhSnl>8PhYaib%z-ATd$*L$vBB(T(1KEtLbs~_`|vvwp5fm{7) z4Ug6cEVyCIO<~+)0|F~MNn}OHF)D-+ceDYl16=7>Fc!Q8%tBj0JPoyty zbMoxERst8DS98<0;4O0Dx2bxoDX^;)*iWX8NrxcyvQIj-4UZ-e!?CK?~j?v%fTKPXAR=Z~9qpay6y)vuPgBd-FJXqJ7?cJXyO; zU^P!xZlA%qHV(P-(gTO~B1ntJ7Em%9PbX~^_SMYNP48WKT6dPgJ=Q`ty?4`lV;R$F zKdTu7fzEC^OZ!r|rg}L~OGhtHq%Rr3Rlv6-@ZAi+CY|8l9DdH@(MNce;CJUwXx&@t z{0<9$VKGj9n1g# diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/NodeIdAssignorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/NodeIdAssignorTest.class deleted file mode 100644 index d0f73fc7789c092d90e7aa0495e66a40383ad9b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11379 zcmeI2&2tn*6u@7vf&DNLL=cn@hwzm|+(kfvY>4KA;L0X}Y=Y&@$!urSFf%>Q^aS)^ zdA9fiEdK(JmKUqEN_;YcB#kB4O-U>ZaK`<1>?5nxO~;5mN%{y^2_T~t5d_&T@-S3x)h6i-GmUmi5D0ol{SXQn4J98BA!Nk8>U8nvJu^ zH*n5t;mjQw)tIOGcAc&<8>ht@UcukGZ;GgNQJcpMA+Mm6rrUBJh2RJhqa5dvVt_Tl zHC+>*I<%0Fr<9!(UZQA=!AutBlFnHenz5m~Ovfw}&Pj`kb&g5MrMjTEFzJodFgeD% z0;i+&j&^>_j~W7FGN!LTz=8$SYDa37=5k-m ztmAPr&4ET>c6%d(!{eU$lfdO|yIu6f;#!S<;#1q8F&hY+PcR9$s9e}iWr+@*zW;z)`&fYX>>*c07 z1cHYUJ)~m2p5Ct4NN~hFqU>G<(U$Q!n+Pt4sJG;b6GmxoLqf^mE`ujeSi>EchD^Ks z9(CouEeJu~tk{coP=DdWC@C=O%j0M~!o^8M;DBtJV|E?$2{u&h8@hwd2bCxSh4$$$ zfl)=}S*haMQy#6xYFaD@^EG@frVHQ2I&`s{-b805+u1VNLC?V?AyeCDy5Kok%&2E= zml`wvNo+1Lg>)O3a#e1UIvh{n<8B%Whce(!RGZuDvTAIn3HkDQAKL_5(ErE@1c7q5 zA#Vmr7%JTY=3zJOv;otMpy+-d!${q_H7(^}j%3FA!Ie)ITnVByIt)D$?9S3sWXH!> z!S%1keb=CKOrED4>U^LXycv;&4+vzNKFvavz@AuNSy;f=KIHvp;TFCIf-7bgmIw?+ zy_bdM*xMuF$qow5hYv}Y@rkMjCjj;F1r`7ef9-1#M1AJCTyMtfUR6q^&AxCsWcKCGAv7+UH8z>6EmGO4^x}w6B%4vngrc zC}|@pY2PVnqbX^>C~0FUX}>FJZ=|ICp`@KlN&8z#dovx4RY^Oa zl6G53dn+Z4DQOo{(!NmAE~cb?rKDX-N&8kwdpjlVS0(M8l(avUw96@Je<^8KQqulW z&~k7U#<315WBrkViJ%48R o)6$=9>F;joUsvdlxBAb(4V28l`>=xFd(kr$xC!&H2)Cj3FH+;$BLDyZ diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRangeTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRangeTest.class deleted file mode 100644 index e71519a05e84600932cfce6b18844537a55a9387..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8548 zcmeHMUvtw&5Z^N)cHBT9KwCop9O)k%2vR%KCz5(54Qaf%oWnrMv34@;mU|BW~6dGKh}mTH;{eqyCGg9DShpB@L#LH&B6iiAwU&o z2%Jk$e7xu0-F?74LtuVqqusjw{q{!Zo2@Q^)9o%dYXs)HVh}PDD^B3Dy|>;zn%hMk z!ogY-<<7P`;{dbkA{3@c;8bH}hrrAxs!@fr1Qw3wZz&~J4bG8;NB2X;we$)Q&Z^V-x>IXzt6m`L)1*a&}` zU;(WET%;95zVL*hI>wMhFNWxs*u&7IX^b^isL(VH`+QG?Xz)FJg8y0Uo2;}$?_eO? zCn!Z(Xg!nyXCUiy7>YSoqefCj&7+8;L=v6TgmPhCIK177&!pK2E%2#fUY^1Q-efaD zz|BzhDbt!Oa~t<{N1EPH$sZaRXE&Slr=N4e&2D%b9Q0UHOn2oQ37N6Plz^PDdSY(f z*!0l}>#cB~`J$hJ+dA-gWV3j4l|GYCGFZh`6S|RZ{O5CjxwcosZ`1Q=CTzp;Qi!Wj zsI1b%kl9l*NXmk|EP)^KJ+8FPoi>pKLTfC4(u9%%jOCH?ZKWm4D9KQda=#tXurilC zF5zB6o-9TMitvTvHA!*FRJ*TY;rA_Zn&6C+#dR%rNO8e$#Jz~VgA;R1n6jY)EE z$@@YZsaPitcDd>?l88P-p_*woj~CfsKU=mWn6ciyd2ECT#%% zSGMEOh=60&DYQTpHZ0Lj9-;=bZA&87YVaO`zl(GhrdJU!lx|Ks_{mX#?G|g5drWDb zn5G6F68Po+v{C{~R>jOF*gR?o)L@y++&vj}Gv!^$1)q}yXT0^~08DyuV|2OXORolB zI^H>Xef%~`iXDD1$~rapgv_>1Jj;Y7iL~suB*-QCPfwIeT36D#H=zAR;QU1DCvYu? zGUbt|8mth~EbuWZsp|NFX@(mSsCQ+oJpQ$?9Q0zQT(x{JIj^n4O+0c&wpImq?3_Eb zE1q-TN!zwPJO)x=DWp( zU*Y_p$-IkrwUU5nm+(5DO2OOk4vq-CiwG6CJd#>UB#xt9$w6~-(cUkB_CXHXtz0x( z0PSiH+D0zgM+MM6&Oy7Mg9h*^Ttn*}THbmrwR|H7VUUARf$KP@0yp5Z#P$_f1?OMy CqAmge diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/VirtualNodePoolConverterTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/VirtualNodePoolConverterTest.class deleted file mode 100644 index 0d5f2c9e2a53bfb092d4f39f48d2bdaafa52c7f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11177 zcmeHNUvnEZ5MQN9?3h4GAQUKnl+Z%@V!!af5MZW+z_d7NrwIlg<+Bp2xjT7uI#1wZ z@MV~R0fsk*FTl59Se@Y0A&ZY15897;pb0E~Bx0dIA#iQ;PK&_&Hg>MS5`mRd*&U^%s={+* zO@9?Dp2)DzJ2a3{PlQYh8PlGU?T|;whqShI(B-tlgODi{>apOM9dWuLWPNByePl;{ zXh%J>qyEH>4cd`Bp|R97VmjzjjfniDhx+Cb(NA^br@B$JJ_-InM-la;(iA%$vbGYz z2Q*-@8MMvm$jIp>hsHW!&LqX<_L5XbWeR3XFx4XTCg?Eee=c$_>V+Z@nkFey6B0s< zYdH;&qUeBLHt$f8&@}GwLlI-_9^yavou#49OV{Zx5}Nr3r6`L{un&N9kQj;>>=yr0 zEh(e=yB@DC6)~Wt+aR)Zaw2x^aR)XBd z8r!r=OqeL0m_T@N!00n27}mDN(nSvhRphmE3zRd(-2Jxf3@5N;HrypIr={aso%xtv z9;M|c;u=)p`DIvu7YM9vHc#ua1MRj<-FBsknf_iHwYfSl%ay=tQw9u+8iVCKY@F9! zkr4Q%c|JwvEdn<*nv4fzQ+YOt#Hc1f;O3(=)*|Bf;=V`(>Uh^wTeJExsgp>d+Al$pd%0BY#o1}95 zf8pB;A?cz+?4<2ioa|?mU|#HL$Jb=JR|tL_SG3x4M|n>*pd6xy6flS8NxzHp#Irb3 zZa!vvvX?zMpA7EeJ)?+)8P!*Tl52l>+=@#QgKSW@z4o({I&p#_^jZs_pz1WXYFUGe!E)x z5te_$Uvsd6Pa^{;dmW$411WeBR`C~sm+;>?czGzbhM!NPy<$P5R6g~=R?YL>vCMl&qfKn(V6zsON&^ApWaW>Pmj_tA6fnJ66T8>rr$D@@q zEf2vf@D?xwGjPupPsDJvUMEhxiM9?u)8dPG?cGn`IXaS#zCFtCfByU{04%|B3dRV0 z69_veSs-)ItQ{-I{ahdgcfaE~zs-ateUY=BP9T}cxqgE=xq#Un!R3p#@SEIWL2ktg zn8Q6*_8ZmcSy}iyyupNtyeSwba5f}&EN?qksy}14BrsVjZk5VLvHECz%_J~gC_9#H z`odjfmh1=?ED|`4m?yOrqf#_Xqe@`HC_gebjLLEWzZa_LoVCpmmnj>S>Uz~QipVtn zc%`&TU~bh|Tdoz%kYKA^THUG|`C4V&e7cn{6;0!7gw7WFoX-26WX~niUC!64W@+P) zMyFLHleum5R~es+(28|=y=YWo49yf2yMLK-3-P2KQ-Z!fY|xV76lk1hp;uTZ|9A z%KdCKsM+42W}`vPhJ%_tIH*@?!)F2Yd`VqP+AS)Pm_2Xf$n_KB+{voBlU4p^hcMIi zn7eIXNQ&*7R$XxWF10OB*{(C%>+-*WjDnQF`UuJYe^K(qwyx91fUIL$;5L^u=wRZ- z74G3A>)4p%Xg6ifFHj!Pj@MvK%p(noxf0iU)9N^~ADyKen6A|mL{ZCA%eG70N12&8 zm~CTvMx{?JikY4b!k2d}%s+MR;7*`v`lM55!ef{xHkk-i#u{ART~j-j;1=exL34*T z`A@uyHXe;rM!Usa+(MmX@MNg63L);sp3FNIccVrt9q!;-dNY-vZ5ojD6z$Y^^ly7}u?rAxVcSoo|O-m&b zHISEgM+qU9$(D~=NuZ!)y>4I@Z3^EF1&vA`^a#g8&jf4Yno|i%X&{#e0r$4UtVmQgNyugSj^|p#{WrbmZhHlDp!(Unz{{XpkDZ=3xZfOJF{Pt5x6kF&|iw{ ziM7Qvyhq^s1ck4dxfdgK`uC|Lbl=e}30#yYS$Y1v)dornc>N=(4S^PLtQcw8bpQf4_DhzpxNOw|CL*B~qh!)> zoxtkR5+yuw)K>2ZT-tBEWq~ z&IGQ--HtJNN8u{?hbNPG`gxG(5Et-Jy6Sg?&DQXcoWT1>$W0Tu!xPjL+#zso*Fdk= zDfk>u&<`Hiq~IPZ`M!A-bu0xauxI-2_r!DxmI$1}2Yb9<5J*Mo9uMRtG`0Wa$qH7u^!rz(bdMdh3!s+n-8JG&MXW<-PGsrXzGx#}+ziuNd zQFniV^G~NQ`~(+&!(U^_4#=*aoPf9SbFzzqci>(8H4ZfNXprG*48y$`1{?zPVGOQC zc0R!CAlrvAY)i3h3kldhied9&**+eU?T1*lPljasBbF^Y92+6AY`G!XZpE_Q7?MrK kvfUh#?Z+6lF}Q^@Yz#hyFY$T?=k{&*4DP~xcmNOo0-6N89RL6T diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderFactoryTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderFactoryTest.class deleted file mode 100644 index a49bf7e619e096edc56023737368d4465108507e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2607 zcmeHJU2oGc6umBGZNs43VB=#TnIWN0g5-rKHY%ZMlO}a++R7xJkej%zM-oT2Q#K}k z4L<@2BzWgXA+FPIEiC)c20}=@II(kmeDAsE-uT=1PhSAw8Qd#Dfxv66e9v%gydBnK zo{*k4N<{C3Cljuik;?PKR2#0mNCrIgH1|^_%wD2oTZCMD8#34$tZgXS69HE%%*Ty; zO@u8$k-$WT9kRINt+#f#ZwQPniddLBflIadZ34w51TR5_Ky_%ltdvw`xI&5_UdD=R z8TNQUeHkSpWJbuCq7$uYN7l*G*QVBow|dRHrC6%x#R>O09ZmUn#YDDl|>wfVV}A{I~H7zOytmqt-56Ly_7q zXhm6U6V?YFfkYlLVL6;oBPpY(Y3@{xmvhd>er6(Wx-y^weP^-H*W0zFkZHZRiKi)H zWs?J1&k4*b&3Zv|>_=+Ksho(M9 zSK}TFMX)5}w&9cT~DPiY>#iHp7O@KB2aC2TDFll?( z@~+SZqt9eZV0JT&jfgmsE3`njp4*O;l;I{J56{w<(fX839545rjsIZH z;UCb_ye70hV7Ux;2-*KV^c@ye4qN}r74IrJ_Y#MIvn5mI^A)_s5O{FB2Cdw)zdYOr zyszNp32-D>>0>ySaP}md12~_d{A$Yi2;*OIwE$Hdtqq{<1dij`y91Ljg);)z@oNEY g46LT{c@%9X2W>JJ?baF4Zs(xQB8#rM)mRYQ@$7|D`JBl|+j6J6h}?QQRFt-W;w z{S^HYI;n;j_l~TkieVR2Qu9Zbz=d|EWkW`qKi8WCmhOs3=z9b{sBJtUu+YH0mf=GJtBF|x77d)H zQc^9$M`Z2oPNaA&gI(@ZPlh8AFfC+6(I&lshw-_C-$u$weLFhC68$&H4T~ehEyYC{(QuZ#Sa*xdF$pe){VaP6NuT_oH?abgFLbSFUb*~vnWHgq>N%@@oMD=^@Fhp zFq(1}St286#l+anS!+T&hvfJQnWzc59!d->#hK<=BB^cAzLH_${l-LeqUwomiubvS zja5y^gd&bbG)U}AEs9ku+Ze@tslrDncZ|-SvpJJI80I6DJ*!OBG^@12QIN|*@y8~p zjh?nZ%UGu@Ej0gjni*)+#e{DX)w{|Z7F6hsL3)Pm-H?R`oNW)7*Gy4(Zc<>J;oMbt zZs7q%m4hw(d#fsooLfZPd`8^NJ$I&M^As(3K1mg-u(|?eI8Wemt$l!ZbrIH!2Ac*C zTWw>byEP7bi0CndxCpGZrN@FNObK(IUR=;a5fkv+rw03SyL-g!&K*Vw2wbUcv@M4p2G%whNf%5FT2oa8 zLJynaNWXA7P72_t!!l3;4=1o+5NC*~@xCj9g=fofNd zmB%09WEX)u2MjC_fdLkhX`?dSCUDV0QHC!OI?5`SeHkl{_eL>X1Vv-G2{?3x18D@V z!y+u<(IOs~VHtlbc=i?ECHP0)0a>CEY5 zQa%CShDT;#2Htq!3-G{~;1e+HNlKzN=SVfvc4+lrOFHfTcJFle+r7O%{`vV=0Qd}A zGf*LLEmTfh^H8_%vJql&Ron5RP;+(Eu)~$!zoUiMMZFoAB5*oZ z_E^wwZ}#qTM-!O7A_AeW5_qn8VTZufs&x4b)CtTT$=*;(sv0~`=Ks7CC>~00#9iu0 ze<(brg$(FW$)3mk@Kf5TcL$uh-0_$~p&@hjSfA4+AzP`(tpkr+smF&6OVpJ-q=D4b zXWAK1jZl1lh>m8Va41@4C|btDRw3ZTE8!2N(iAmzSx*V)GIdyBto1lO=+@+tY4-|X zmXhKLjnc?0i2}Bth@4dYJl6_{#ET-rRiB6TR0$Rsm}f`i#=ho(`<2iG%N(FuQbzT? zA#c><2oXz%hQ*JwVODtEA9}(OnuZaE9HjpMc`R};^w1=jG%rvQ(kO8Gt_YB@ckvD0 zv&hp~=@#9b&Kupu~kp-K(9m?kpnH9B|)Z)hpRF-u~tcU&*Gnm@t-p{-->hpE4H6DxXD>2Grn%S*XG(0*lSg zQRycM{mZ5_G}pm={dVN{xau;j_7GU;NQZelObPRxHcsh*2nk&8{MU-rGJ$%Z>n~V1 z*xVyPoJ*`BM}O;w_-{+aUzQ5raR`dE!W@`QXLj4QsqyTa(9s=n~!$SG&Zi~ z5c*iXG9H%k&}^E@-Nj?uT@W~x67?Dr9`5{VaF$eON*Ye8Y!mMlEQ&d-XwfLQC2^@U ziDfy%mk1Rbv9ich7I_X&R~zHGwn1S2fE}gUVj9nAgE-5MD>f!=U6okj+1Hq5*We8T zpPx*e@fmAw`bywTYBe=^Tj~vSsEQSH0+%%cm@;hF3r&K(?I`AN57;M{K1$ZWn#4N( zO5ko`(eXQ}T-1)62z;2Qn$b#C;?vsH+Lp&ekZ0q3#zscrIP#(qyvg+r^MuPZPk;$5 zS=%>67-IJigy=~^xA;BWRy302cTL3Gox>7a7p=yp&je;WN2e{gW2ugq7vTZ=2YA^2 z;P*x0)PpWkQV10A)E&?G0cP=6g=u`A!Ml&KmEg7U3)H?|X#51Tzu{8_=J4Oh7}?YK zKbuIwJS^Z7z>D~{0x#j6ky^y-akQ5$Xcw($uNFW%V?q1IigpfO8{=CA{Y-lLx&`eA zE83eAqWx$^qXl|u^X+#l+FKK%{bfa4nh@=8E85$Wp%MFhduKwlvsT~Uoe=Gk747_l XXxA)g6?hNlXa$;Z5wBCYw%-32_&1d> diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperatorAutoRestartTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperatorAutoRestartTest.class deleted file mode 100644 index 74a890ff9aac59bc85697c8e853133d5f409b710..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10513 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractResourceStateMatchers.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractResourceStateMatchers.class deleted file mode 100644 index d6b05eb954c2abbe7e72bd371883d477fd6c8342..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3250 zcmdT`U2hXd6g}f6tZf2G1EC*48A55D6ukYQFSUtOrA0#B6bT0;#M5{^aR$~q*32w| z{wJQ1TB&{Se`>|uwY}bLt=K@KsxP}cGxwgk_sqF>=g+@?{T;w<-11Oicw|lJJ87N& zL_8C|(!O;@4SrF+9!eveHhvf-)=4v+5Z1~;H+tcJ-z8%ay8F`V#Ducrgp+&1g@@8u z4@(Sd8EPcrzJIU#M23#xR9nT$?J&I8*m}sYw5xm4Lyci|YWt%x+Ej6xEnj&M8$yqs z$sP~&V5lPDl#cn(=x!tj_B&p$?H@|slVKzb84X4FRP-g^RJu7%r8!BZIZkCdF-c{U z_q4P;){YO-__-rY`Fuzb7cq&fW=d8w4Ym1ZJB;E~gP}H#PhEK^;&j`t*DDw?<5!iMh<*WJM|QlWC(CM0cAQ%w3uLXtQiX|u7#mE}p?lLsoMV?Ur3 z`W8v#iq=iOM+K3tkQEnks*@3L0kU2j*TIa;xzk*5_hKmPwV%YnQ*mE*1=UC>=NRvk zOGg~YAC&0F+N!v}*d~iv1&Xrzw;GGl?&`RwvidvPuAEiY7Um$IY-%SL_ijWjWKM1! z>ZtLoiYrq4mITyM#hDc><1E8QBbc_((Wb4m#jXY<)Sr_(~YfQtV~*{byPnVE-@6|<>^X0C~K*;)2iY_hL;Qc z7Z#I!8Gp`EzU3(~oS)=N5 zue%;Yy_4NI@2Iq$Z60|M%`R&mKBFF!GvcAaaJHPdhi#Hfc`hTv!wtHprX}E^$>5Fq ziia;tm)49F4_}vVy(8r?tn4Y9{;<;qVsRC8{iRztutZDtL!q;TtG=Mz^)S@{TVRhbliv+L`S=-80=geboKezrXzf0H4EG85nWk zn@D;^#UfRFLbqv=i(;fC4}RoD(PEM+A&Z{hjuexF2^vK#*zk9Y52e^*GOC7;BUavI z-qsodWnk2S34`X-uvuK$c)~p8KyJCTRH;2Gl`9ThbqDurs4r~JIdG{g!bs6jty90v zvXFCNJlMS*(tt%R>MTcU~^{TuUcHB_w0TK>FK7C=E zNwwoZ#$DGJI5RfSL$2;Q@Z9vwI>MJxGy^X?aAmNq7H%VQvh=f9s zfGTg3D8yttE%ZYi6J1}>t}kd)3rEw?v6BZaAr%=sN<12BwHu7|7WypEK#f zNJp4=QiQ8P%jX_fBx+;M#l(PVP_{kHy`+;or)LO{NIR^v1`qKBZ{Qugrfpxvr3+*U zGqt{hQiO*3$nOBhAoICS!cDQsN@#C(O+h@8@Yl4lMTY`zQ^_eN%+p*;j}Hu0+Hq`` z6QoFK!jK}O)4Zax$&?8hA{v;b(aY#F%$z1_0_{!Aq?9zeWQF>KBPo#$q(j{xOHuQX zVX&~0pLA*+2-p-X6VwSZ`CO@iMxBllO(7F>9I#c(Az@T(Cr!Lm4|v)usJ#&|wJGW( z5Z=~w*+(ulZ=SrD@bYOsrQ?AlGGN>f3zbHu>~j{XM^bF_x_58t&aqA2 z3uA8%4R<>SM$$=@wpp=dA;>^xFB|6yZ{=cEp@+kFc+4mIS|G+4&I zMJ9V%B6+wDua3hcyyn2<^ugkbE?r!4ku@&2gAFFvG`Z4M8sSlYy-T*blcSoYI8bv> zy>O(fDI12aU>Rn$9V#BMYPiiKj@FcPS-})bQ29l-Piy9~@U8 z9}6=rqISQYloi?Vr5H^(r)WoKjOP^XP;NamYn)RwQ_wg`;>JKE!;TNkW2=dbB`QzPsAWAER{*F;--Y>{jJHWg3* z{r;Tk_Fyl~9TYQ7XG=HTGBEEzwzqj1z`jyr#T(A_iB-g>BeZF@Rv8CXE-W3qk* z7Lk4ICjc4va!*&VQ!YR=mN*u>!sZ&DG7-E1*hs_f<4wh6C@z z?U)^fE{0x}*3ns2F#+R#!m1qj&;sqF1T>b2HhWC8pA*sU924!AM6^$iiS~B_+6a7# Zdp!c5K^1=|Ff!+`i+&$UP=*S8@gKXEE8_qF diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CaReconcilerTest$MockCaReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CaReconcilerTest$MockCaReconciler.class deleted file mode 100644 index 39927ae5cf0ec0284490363792d0a620a7f967e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6801 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectorMockTest$ConnectorStatus.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectorMockTest$ConnectorStatus.class deleted file mode 100644 index e10a8b7cea929280284da23521b262df1d7a20df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5068 zcmeHLTW`}a6h1CnFQIIuuyJQ$3>YsB4?G|?_A(7^s2zxwO*|mvre5kTu_N1^R{j_g zNbt^&LY$b%RUvJ z^SZu|cmmTJyBT(shX$|}0%=!@J?;_6mtScqIwPX?RW7($Be1Z1a?o+$;~fH1>$1Tz zaEZX|VCoH}q{_l9DXhH{ifQQ|vWD%-AmlzZTnal>vhK4$Kew%1G|qOZ5YpInX7}+% z+SE4fkXgA}li3aC`c$Evkh%xdWA-AKr7nS`9)YDUfrEw~fs1xSGHpkb1k|`q+n`N$ z6e35*ZQ?5`MX#t7c~v^w3>`mt5K3ii9J)vAio4H7tSv#FhoykKN(Kz$V**P55wKv! zv?p-4yO9&*&^O>@oFpvqWQQa>r29urqGRwEIb_NlO%NLiu5%h2+B;Htf90a|4_GaWSD5|a?>2KmF;60 z@=o;si_tpDuTM{>tF17^G+XadCAjeP7!6kAR#Zd6e?5#CCqK+Kl8VB4*r&Qy(}s6e1tmM-;osNzw* z+c;&KTod?M{;MJkiYJ8%GfmleLlup4Rh-nS%9e83OCEVQ{~HOh)_@D#5~#;$jslP{ zn;aD(YmM)whQbXlJ-dx!%BIvPM5Q|rcmf12pe&YxB1}UXOGU^)7M}#K99Yvwm`|uEJDeQTK&lxOr+>4$21uA>XY5)KL diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectorMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectorMockTest.class deleted file mode 100644 index 2fd86e059b357a0645a3e18d478ad433558fcec6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12657 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CruiseControlReconcilerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CruiseControlReconcilerTest.class deleted file mode 100644 index 023b6dbbde712529f078237f92f8722b7c24c73c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6523 zcmeHMTXWk)6h6w$wn&;ZA*H0Wh;U1|*f10*O&V|$!(>pLOq8Tk-q!Nk*+$lCc2_3p zA7ch);E5Oh4(|+SWjmH@5h*jxkm>lrl6LpoZ_i%N*>jHn`sdf*0pJmob1-JW6Di!1 zqEeNfkv1tYUXn_%)^k?k0To1XQF6UdDk}OFL`vGKd1s|f5i&_PxvvEG_NmK#mw8ki zAYBe7448{JJ>oY@yR~Q3RR$EQ<(-PNSKh1`FmLzU9URqft{E_cbW#yt9T6|2c_?5X zpR}k9h)WHa(Eal;jbFOffc#Nq-`U=+ItDD-Ka$1?Iif-`?w4%NPr?8xC#$<#6>Oih z9jdTga9GnPDiqj#PS>s5RbHq2w6V5<%{Sfnw48vt1}xYEbJdlIoLXl-QyT`1udE)S zM4QNxgEtMB?N6*C1Q&U@W6b@1=nE>j*QRyL<*k5uM4_BkAb8EAE&0$g3kS#4s#Dh^ z0zo+A6VjyCGULVWt`vK_Qta+ZzoNG*%T}FJY581PEu!3GOCcvcMTu3M6ZgHS_r0h^ zEnaSfj-0F&aG@;h+8{N-+y|CRd_8Q9TD^(B`pE9aWSIL1$wsSmp>~W;$moPzY(KB! zgtVzprx`T!f5CClOcU)oL88l4u@+4eIs%4@c`psvzrxcfuL60UHsKYKrE;pMUw^{X zal(dLid)1|X8|<}=o#q1ErD9wTs`SmF>Wdg;0`xL%7R0ku6sAn>v z4~j=|QbS&Ad~v&xK?*9F$1G&*on?`(C)H3`l(JAm_{Smh>iQsFxC@U3KcQliU`WK& zS++hqBuHR23j-oxwAon``LLWfv*)y~&s73_{OCjxtiwa$CS3;u zNUgz|5yesTG>v#4!${4#+YQm3FhJc)UBq6u|5k@B8hHGyMSazyPMM-ZT|u*hMVq;_ z?7BR>#0XKRjPg{e`k9N9J&va6EMuR}5x~=u5x<9#HV#t%f%=^cNy-{s7GD<4P;UXA zc5Rg}Rt$&6*E9v3%B&6ICHT^Hz=YdycN!Mq9;RnjhVwl-Z8B@)4N?tTH7X7WW&)d^(cBo3!l@`w~2BrW66Mb;XNGvef&1@{Qf&s#)PXL<>|(7@E6>kGt%r>n?$<3EZ(k|hSS(es zw^F58nyVGAVJ}&u>T6pTB1$K|Mr?OoDy+1d)#o3vq>E(&$b#$B|L zKEn8TWb5&+t;Zun?7~G+2XVa@j%)nb70uL~^8rG0mEt1c@q=wZzFv zH4~Df*i@`=q%kfv1;x(iTSeb>sUt#iH!5fSv>tv&Gk01K(Z}?b%k6-bNC($9q=p#9 zTh#UBv`89bGtZNw2pVFy=z%QJHbskd6)RXcDIx3HcpVK?N@3+(_DM>|tj)a9I_DNO z9mOJ+=1I0E^06&v8t6=+^DbC^n>oQ&MKRm)2+=1$?K7(><8B`jjyHP&efAl6VT#0& zLL^<yK&m?D+jZ*JOf0An*k|yDX)T#9li#Bsw}}CLoEujLJ}|#RAPs*#ziNFK_~ECiW1RUlZ3c2h?>ST(IA-|R=Z3|U)Vk(Pm6V0#gH$p>XfoNq4eCNpA>sWfm7^s` zK?28Y-nfefYPhT(nXN)SJTO?mQ(mMhxJMW@g3Vyy;Y9+aWDifVc_eUjP|qd1Bktpt zPd<;WPJ9`ltBFx?+rEw370nKwegr$ji2)BM4Ox+!G?X!IVhaD{{_$FAKdo#ra_g!uHM0Gu!sRkIXVq);wC99%xkcWFE>Q)slhFLp+VY3gD>PA7W6f^ zjjuYOw`yRbB0+r9pn>mh{5#ZXfCG)a(GhObaaglq0l$WYe-DlW!r>bxLvR@Xx8vPm z(4y-wWP|TH*n!s^?1Y!`x*uEYg5CJJ2fv-g){D$y=%5>4&B7dMG!DRsL96X4mFb#I+kApEFAn0W+*2TFtzTwNQ@wYAa6$QiC2l`cOi skv@iU>e2kHK*+!+flaSN3$KSUvd+N*RGn z6Ze1c!f)W68JK~0ei2U$cP%S+Y}HZ&v<3WPd8NB&uZ~t{&tCoZ$4|ciz$b7w1v3P` z@|2y|%+vXYv_tb;<~^-=`w`Demno{H%G-|bX{H7zsOPbE!|CQrLUY~S?g#ENTMC;y zOw|xC1+xSedY}#!t^9W5A+t4s%vPaNs_qnuB?61(!SyN*D_R=_E)}KlG!=S}IzCH7 z2KxxwW}ZuJMqt+TPs1GkGiM28i{*N?R@(ihSRin*Tnw@;QiQs2mkX{xC2($SeGfYn zWs{{~iNO3|+>%mKrQr%$_`WU_^Q6;ZP0N;TmpfE*DJ)mXhQr$49V?ru9WtxQY=f>hWS%9Yw%SzNhn7Z6cI+ZM!Z7?gm(P`v>rT!yKz|u65Pg$Dy9{rzZNQWtXoM3)D zlQ^kbaj88|AwBWeyv_biNk4M}tG?^v3g_)pCD2rO5#(7~TGY~Amt`}hW6eZ!pXu{TE%k$A7p`$=oqkJ13l@)lQwRMYomM@y@fD2su5AX{9 zr@o_yqjOdT{g=6dQ5F@(D+Itpkl9SN=bvJ7N)&YBpklz1#)ZC+2X^XltaYg36pdCk zQ<3&j5vi_Ff%Xci8?!CLJnx{f`c|su=S&2KH6}h02fJtlePy${=1$b~`8)Y8G;m^2 zTUXGXIuXey94nr+B+O{mhllC@K%Mo3CAd?mTwp>Qr9T(WJ#&AVTxjcW0CRweG)vg#cVTuD4Qtu-Ka&v zY#7bTWlh?DCsd6u=)n;Ur{rHyx=mmED%zza65OYdM*;=dp$cmXSnS}BSTjNV(+bJL zB3zq;d3cGym9_DziK%YPm(d?=`RxW%HM5SI@`|*nv)5l&`zL4hA@>M8DF0K1AFR7v zR$(c~n5vpAh-O{(G9Q)L4U_qeT@)hpxc5bedmK|Qm@-ArEnub>%7*2QG^~)>)g&dF zsn7?u_O$9G)XAyPpW4?C+k>glo6XYmFZ2X%Md=TU(7vg+ZiTgEFAZ-HxHnl+dPUz@ zMIo>>GUT>!x&*GSJt#*?-cosNsWGMRa+`y#g9$DRa_*`HzY>&44I!qs1U{a?mkg9eCt9e?M7 zD7XQyV2i-3@EVSCvma&QF+`ie{{h-^1lndK+Up6>RwK}Uh(x;uZ}xM`;&Bc0Ss%*J zuodL@);J`1nt7 C`TA%8 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/JbodStorageMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/JbodStorageMockTest.class deleted file mode 100644 index 5a4ed04a03e176f14fbe9fe14c1617a760c553fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8391 zcmeHM-E-SS5Z`l~%68H=q%HlTpr(8zrL}<;C{0@GrY@vWJ{l(}<+HMUajubcMmmLr ze}|Vo^TG_wzzlEj_wdZHcam*6Q7R>*4AbVtC*SS;Zg+3@c5m;`zkmJ}0B(TLAV*-< z_pGv@z9>I7*UU2GWnXyA`JR<|i+ZNuUfHq(Ur?{xVfsFG>h?zYUY$2;NMbhWG`Ch4 z5JrQ81O^qBZMx0!Z2d8{1c8GymFX&hA)`A~!-d@D7=gnR-1UX&iY3zyXdVg#^3KNP zRdadO#LuPbd~I@erbgg|F(vz!sOK~8mJQBVgBAkxtx->`6VMDC66@G=++Q(0+IYad zRq9pOsTClb$e7XFgOrCXn^6}z95SYYI`v$N+L%y%IGT4*F4<3@-;grO?<+V^a7~B$ zEz`o0zKByTWKT|OE04g*u(J~BY&Oy=5)HOcdsLwC!sE70k-yW1R0?W;ZqpEwYiryN za7|>{FqkhS6E)U!O%Zs=#5vVDZq!hxHeFJ*(cX;RMA}2+%w^&xfdeC>OSm5syg@a% zK;US1N2;F3y*#`@27g?1J?e9NjW%?PJ1u6L0#&ZJJYKh{<6qZ{g@qNWH>hPxMeC@E zRWt*AnDJ6%L8Z15N|6P1JK7dBtT#CIb(ag>F@?3F3&f=BEi{=pCfaC8+Gt6#TH4tP zA)m}?aZl(tb=jx^e`mbkmiI zNC+H*EEZ}iZB5}Ro~Q1BRA$hNXi$E_oJcDPBXQ03=C>)tn-ks?@=pGnLYG}bDL_h# zn=|K>IdbuY1UhAwOsG>x5)$i_8Mi4~8m-t#=R7LQ{E9Xs7&2}`!!j24h zJD9k3E6aF!-MdZLbN)grshW8E*?K353nCAPNq3p2kY(~dgIlIew?$erJ!axXuUN=x zbJ;`IME?l~sgccxwP&gAptgjclzm$*RXu14H{v;9#9+LE5*h`bbY$itIh= zJSbKe)>-Zwdt4loC7XIXC=fV1AGm@!bkbd8K0|gYvLvAjEx3BW(TN{pd3cwQCmCuo zohd2m%<9&AP4_~C9IXGDQP3e!G}-|Ockz7!zh~IR_KZE+#Jvt#C{$?0@|?l)?TFD1 zO=Hr@1|q|iqbT!rl51sAFyEb4Ym+ zI?M!tJLwFjM`r?;kP$IY@%m~po639l4E-*A8mKfHw6VZrj1#!Lg*>F4rw+%5fV&=d zdgw1~pk&#hS)){cxsuOy=eK7L?C9Pa5D-x|1YqE4m=RMT~m zA(6m$lqMA+EBTSp_Djn7=yTlYW^|z#DzC#AlswF3+L!c11&_}f4?K(B#Z4h_DyCBz zZso?RhYop?b}J^RslGM&KBfVlv3*KZ4L-wMM}2O-C2R0Gfn%ZN^*onp@FhMyZH~hl ze2s5Hl6MUrq4#v+z6Nz%B2g(C;O-v4P1Il+*Gfp9HNfz2a+@2u29GgNN@?Y3u7QnG zDaX*jMGiOnhz2b*p59QVfqc{JzF&ox5Y*c=^L=!@1uQ1{a2}9NeDdsvGtdWz@SleN za*)UWMeGIq9e~5CJpxBnI|whSb_kAPn}g#xPqruEW!0X9Q>s0U7_$E?yn?vr)c321 zNiYx9@%KFTT*cK1w#8py_~Fp&Kf#;7DY{YomD~VwbrF9DLMnJ0F5$ldTtxs`yF0|TZzNHZOz?q1F&AWbJC-N)U_!94ib>gb1y@Bkjd V7w{E)114BNp$QCD!2u56{sR>USP1|C diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftMetadataManagerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftMetadataManagerTest.class deleted file mode 100644 index a499a0e26c4369aa5c1d49f1947c606e47344783..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9590 zcmeHN-EtH~6h6Hq+3XSpf{2RXfS?KLu0K>M1dzBPRVj9(m25(BW%bTt10SRycUle=8pCU9(Faht$Y!?Rc! zjuSXBoP9S4ykHhyBlGK9Zoop%?la3UJ;&!Z72IbHW=&wbJe}!(ygQ10?dP zxr zpWN}iKp4ZRhDlwyY=;>GL7xSs+Ljz^KNmVL=w`8YM4~sB7fCP5Ng~1Rtj)~t4KI>- zuMRJF_XKmT`&{%iJ81~dpoVzlvuZ`fctst`ApLY`OB1g-zRgW8j4;BygVEi^cpaIT ze~dVLEG!y4G$PkxJKV)Eyn}D>nMSrqQ`d|ZW-IvysSN7MxE%whAQRp)So((H8f@9t zS!|khC1(cKIGSo@c?War;ViOjIoxg7oVnt=!0U5MD)Om>l4f1a$U`#`s!YKS6Ftu| z9M9ZcXxNxpZ)&)^t=UtVYo+}dM=5mVie_m6eWX`7WFk0 z)r!u%HH5LZ_G!Q=mblf*3JcAEcUYp1aD#;^0v_n*dTr>T3MxepHddfGL)@b~yL2^@ z`>LVD$``9^&5LvdQ-M{|H9S|ay)5!PKBL!`npsdec~(_46NOo&y-k5`5oRbUKV_rG z%w6B(Zk8f*ns2qT!7%Zf+~#qsHZC6xEqq+6Oz-;2R;%^k`?Zz3>+QAngR#;NL0=_H z+VZg-Ka2pO11jhNI;gSR76*qz4xCxBW;61A?774HG;pyx$a1OWpc^?@Xf>!WYt(UO zeUK<=gN{p*445S5$GXg*&E&6I(JMI3RVor<*;KIBnLM!NaMnX1sX`S_%t0AW5;(Ka z9G*DEyRjrsq)s%kk64eK4hz~c0~45UdM35ElZ>1UPKh2532Zn2kK;6XPS#P)2!V4O zkt?{v*4#c1IWn{?4~$f7#r2Oj_nVfbS$Lbkk2y}v_NQc+RGz>*j;4x-e|T2N0s__M zpyfdp&l7NRusE3U-#H|3Ru;7yqa<))p{d4~7UTb;*%-OKNJ^*ja655-qL$4NPQ!A> zjFkJP3V97q!Jw`|%FoeD(}xi_Ewwu+fYAeFqlI?9Z%x~?aD^P3%4<0pIxNyW=`BHv zRL~Z*SXq)x)JTnyVHBe%_oFBoeCreEQA;Ne{W8idOke_=wRLaM$0zR6=*fc#m4;Oc zk@-F8=u{e>Y041{!BVqfO$=LKfAzE*uYGy&h%(Lp`VK{$3n4j_`?HmbQ zmIk{SnI<*|JCXf_;cofefLd%8J|V~cIxXHN&ots`1m~55HPW8O*kgkpJ>c#?rx#sX&9`=~ieQHN|`{FBnR5_&#H?X+X zq?a<>L>iSq%Yc_RPCl7S5xd315YJKC_$eoZi-0#g@YV@32-7fwPgQ&_!z})-;IC`= zmdMfHp!#5b?iYCd5BybvQ}}mAy_tr2e4dM`;558}zbbGB5lZl8LUmS+0bEsU4ba}w zpw$&xNzuPEf^klZ@va8r+CB!r1$ZwdiNuX1F*Nh8Ya{`<1n+ARE^83(Xb{j=;lq?J z77{t6W{3PNYS3C*w2yM2eXK$2YSC&r(CQkrpR{P76-4`4i}razw7)fICHMmMUP62R PTG{|i!Iy9ymf+UE*z;e= diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftMigrationMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftMigrationMockTest.class deleted file mode 100644 index 3151770a4c341a7f245f86d99e22e07baffca111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7649 zcmeHMTXQ4D6+Z19(p#}_2o8$wc~HEP+t9?d8- zJ;q*00zB|1@|dbrePYoRqh=JkRV5--y~+1@RR+~ag|dH3R)c{ExeCIn>&1~0;i!T~k?424gX&6? z_tdJ~hMf%j)xh0t1IeP(jLsW4kNexz_0CPI)&StA!Z@#xyTdgyibw(yFjOlML zGP-9e@FT^2wZ*+yl&H+8(m!}Eb%9Z-S>JFPOSKjw);NWEoI>4Jz1eE4uc7V%XNC86 z`IZPHI8=3lU^gBB_SD95jnSjdhR0Pe2>Z)|t2h)J#0tV!-@WI%XGp8 zFz;H*yDXiky1NRwlN4g!Hw6^`e`Obh+j*4Sc_!x76)WlGP5oyyyhB*8?B-_>I=Xoq!?xNsgzHO zzcV_F6Z#{%j$&%8%8ARd$3w{xg;vUD`Z+Eco9nUkx_Z%W3;M>rFGTq&A7sE($~7HM znjkrg)nu5F=WhsKAPhCmITANFJQj0uqDvbx&hX~wXr|BbLUgQsvL_~Ni@9_hB@XY1 zOpP7&uMqJYS{9lqwd8TxZ(-x%!cok_jWBRU6g2}6w~gaOFj}1n4vw|I%hzxpnsYRV zr^)+tj`8R)NG{kp=7;y~9J@j~JMLay06XJ)p3}=H?dWYir_XhPH;brwS&_u}aaNR- zS`Ue%e7I!TI>#;jxE+-22!mI^ZaLQJog6Uzs`~LJhUOd?W3wt0?{dXkILdQetI#|> zH$zX-0#aJ@x97=pmgSs-cl=u1N4lu3Us*bN6u8{mN?&1Vy7d}?R%rF`H zY%;}kq}LfW@<%drEHY3<=lmr1hB?2* zXgS}LB72z81)aQGjy>-%4Q;lJd2MLkb)r-3D?|Mmvl7}vrwyS7vBLl9J)LQWG_-a% zF{ctW8NHtGU;gm{PqcRk4ZIF=m}4H!?&>tPzDAf7y51>_=H}D1bH;{GTS|0;Q9a+c z0*4YKTc=7xHE}LAeA88*Q8A8XT!HsG>E@8Z)zK|dxs=kA@B$y_f>eWG2?{=i^z zwR$IwZexoU{S}GmL^Bq3bS__0Y*81hVE!I`6=n_rS89Z5dnxYb(D|Ghoc?Qq-(7kB81l#kbyg;+2ypQfT-(<3OS=uwQL%U_ah%ExHVl#kOBC@UEANqP#uPvhx#@Q&%)FKPar*=Ihd zXTLVKRs3pi310sizcYyy{f2&vr!qYcgemk+tbUJDqdjBhIz)RR1MO3THf1ngn!tED z6XTT(jDHXNuV!HUJ7ZRiY7-t^A43~)w3LDN-wd=Vs?##O zcmpU?^kxRzjSQsEGLRUpkdw}`f^rpzYh%8RX8Lvp;#Zl7tsjoaUdTWsYSZSJrnKf0 z_P1{LiTx)N;g9sr7{X{)f674kUk1Vy{n>E+7y20G6Lf*zBTg;}+9pZ6)Te;{MiIsI MJ{`~p^mqE_cVbmulK=n! diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftVersionChangeCreatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftVersionChangeCreatorTest.class deleted file mode 100644 index 063891fd1534e69a5781c6a5b57d655917344e5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10808 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 H1a3bAp<;i% diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockKafkaReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockKafkaReconciler.class deleted file mode 100644 index 4d204765d649f6dd3e63b86cadcd48ae5d19e6c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7179 zcmeHMS#ujj5dPM2vbN$7<0RxHY(fYQhXo-(h!le(?8JC|VEG{C9IeLI#H$_E>`2&D zQTz}13Ghx;sDgL?6BIqOk}PAzQUYaj_(6M&y1(w}>7JeW=GWgJ{tVzYiY|H_d>yMG zt$D1|4_J+*g-pjEh}6xEmb-QtFh*4tAWKaFBihi^b}iNXJhrZ*}D8Ri>fS~ zmtiQPwZ%%25&8ldxH2t+b*nMY0~rM(Z^$oRP=$c-T8WV9;QtfR6@$c^@VwNeQMR~dgUWSWeY zC%EloJXT{OWCally_xZC*fNRh$xGcp(^8I^N5LZ<)8opuB?mw3gLm1)I}`UgDMJco z*Y5V_NXf-12gkR@#126pPCJ9YEk=sRGOY2U7szsjqGM9St0-9rc{#r2rTQ02+$-`R zWQv3;ELdl2+`BB~NWBO~8bvTtFM_RxMiE^0ijv1(B(+y&Iw*OXF!@G>^0*a~%521x z*@$s<Ene?m^GwN72#GZDKw(xS{ed1M8vT7>^A!95#?e}kd%4b7wC zve2bAIpAsOF;8z+c&guSv8;4#HUK-9&8@;y)dE)$r?on%{jKsfrUav{N2)(xG8>NZ zs3w$*%CrTWQ?e$CTy^lx?4bXOZjPok+Md%UryEP%OV80}=u4@JcX^a>1|9nGxbk*4 z+vRW=VxTT+ScgTLBH}jgr21Pyb0uOQ+RZuJGNT2$D+OQ5^=hS!@mAD-qEOxv8yy_) zO30R8Cm`Z9XagHBGZhh^(r&a`1GX&HI#=TxJg5>o)dAZM@}C*14mvARPH|3bR)ebP zSS@>KrCXm;IEk|Z7{ocEwuX0-R)+66?u&@eRLeBsEtrYP!H`cpTewu8sOpWqx+I8q z`^Mi_s*o7CZ})+p>WYps!Tf$7oO?3z%y`?c8XT;Hi^B=!me<52#)cK7&rIeTai)en zrMO?+RUqpxNl~;c==u3-WEOA4*NRwBMvWPQszKbQ{Mi~;ioSE1KDM~#pQ=qEbALyah|UlTCu?mKZ*i2Kv{n>(wshz7O@T2 zyR(o+4fd0(Hl1z>V=8Ys-w9&K9b9iaxjc$wxAY=a{A5Hdb4tM$}#@u7nYyRr2y@}x)S5-t`g;~Tb;0|FPz4$jbN zMB8Hk7x%43>p6&vj|q;7#Kou7U;71i@i{qZ>eL0>cH)wJ#VHumB97_nyFe>un(X^# zXzg@Q#u^?7jSh@@>30}M=nA;#qtOqRGM={WRKZYSZh2zxPOKpRAnq(5mA)KJr z8-zAM_tZ}~d4K4cA93avdh5Y?x*j17W90%}4I)Y5SzM&ML3*x<g`2pAEJpDj?%;h);2u7Jj~UEi9t&8)M_9op_zYhl JAiW->{{T4lUz`8{ diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockZooKeeperReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockZooKeeperReconciler.class deleted file mode 100644 index 7e603f21bd4c4da9360c75b8cec8d0e5daaa1eaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6585 zcmeI1YjYbl6oy}=X*YJ$Hl&mmdfS#zk`` zsW6n$#!9`y$@(%m7@JeU<|CzMg&^gU2viivP-q8(3?qs6kVhN&h4Nz&7>3I=zFij9 z&Q7Od)KmdCQbjQXD>95eQEE|D=7p%lOXP!V>X`Ls8c|?X9z&)iHzIBtS}@$&`NyPB zy*%HSv6=LDU6*L+(S~=Q{us`#D;)^(y_p0&t+mqR^%28~Nf}9VpW*v)zda6_gys3G zLYpnmFSO>YJtqYft;-FM)Uj%i)pmQSQLl$mXwP2^xgm$O8Ic4VPc^v=d0B?iYg z$eQRCQ6g*@8UC+?hqey?21nCdMnsi0X{udvz%|O{uGy}OY$hpL61A->dWdHmWuYTM z&+2I%^0(=mTuV-+M>bQc+Ja*`YD%r5nuyGzR!vzEx`!`YVE&c91=`lAdZi+#A5ZUnG^V@QWUiytGixHd~#wonQaBlp01Y`lq8DBtWxU0-N``P(Y~xGSTS|E041rRH+g-m%d-2u;rBQYlBO|$& zeq`3cXAH-PB|G?>;dFcVX~AFzGYl8@LcR_jGB_!{b?^mse>SZg_!N6`LO7VGkZj63 zSR^vtWeaw&^bAFB9Y3_pb25(U*jT1VJ=&#)=IPLXsA2;b6gmA6U|+{^g5CiKL)4m~ zs{v#&ijx?o>p^Neh12wYhVJfA58Imk2_s*Pj{bm`e@XP`>HP$0thEdDKAc=<@hV=U zJ8R)$hlP{Wc2EnKaG89!qPv2tWWoA#>9ZY|9ZSpVwddnHcC|}f!0Q;>vHHfJusYVo z>T%qlNCxmG#_1E7pjVb+Ww?pAXpT#CKaR6_8+p8o_wYVG#7FSxN10DBg#xDW07cAV N4h#4a%cLH_&8LoAoA>|# diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest.class deleted file mode 100644 index 747d71722f32806f518e12058fb6344719dc851c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7998 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMockTest.class deleted file mode 100644 index 65eea981ea3bd479f06a9fa8b08b4ff2431d3022..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9221 zcmeHMTX!7A5w2d_8fh(T;|utfWN;K)GI-ZuC&9>=EbFxq8d*Xs$u z^5g#!(X;dqjdF}`2fkGdc@P%wn`>s#_KHF1+x0i>qSxTQ8G3%va-tyQe!IgA0$yKq z9uz0drB$<(d`&0xQ=YXt2SAN>Gddtq9n)PdPA}f)R>)|;n7)3!GRtVtFudhu?vFDX zE*taJxytO_8>OiVqk~3!S{3ZL%bE*rE8O=yR(%UW1?IFA)D9*UF>4CXN~*eIwQ@%q;MUy zhl3T<=e3)jzsmi}I=3R|0sr4zDoUH9EGyXm{DG zag9b9?Qic{#rHjbkj}CL|C@Jx@a(Mdnr?aZhV7UkwnT6E-lD_n!83Y(Xl{k;HEuaV z-8%HK3LWUDY_E`5Vxh@uAz`Q8(X_-XNzW+t$;%Wx8V7MXomm-Jxu2DcQnpXlaMi-qBLmbF^b2KTHde zSMxT`#`l8G^Ov(k-62t5wenJrLfgqw;0|HeC(Cz1J?*z!)@J{3PD^DyfwV1&kxBEM^cOMD1%sp7j|%n!v8WCl+lnlfEP z72rqlTCd6oQ!$j*SvsKXfm8&-^KeNjwIv&ofwnQ+%pmTJKQqW%;b;ckwltK4tQk;S zMX(vu1P4e;bOy2+vy}OX?aaxbd7i^+dC5`TG-;zLEg^4`O%}sdOvJ65?Q;{}Ht70P zvh)kWVnq^xuj4#!IxT5#1m)K!>2c8>$-faE^K^!u7^V?Aht$&O=G>IXgX}lpr*1@b z`URtj?)e&#u4&EazV}EmnTh!$QD-!d0+xA((F@tjG$&-Ol8=QI zrvf>`QA6zbguCR8i(MH`wMrKU1xMFTh{(O1+tAI322+nEXQ?h*}~pWj>fsulmi(bGpc6{#-(j7*RWo`wdGu=QX z12JG%MaLwax;Udyv|7(+H!v~ZsF~=97Z-I2lvGg4@SF%m02t+Jx|G7`yyBWsEYorT zIAE80oN_ry>0iOzku7;mUUhQ_9N@-9zTFRJ7RrL<_@gC)tRl5cGA*xgTIChgfOsu7 znzCcsb=*xGR*ekHNU^cNJ(Hbx*C{S9+Oj-V*ZdU0$31y9*QfB;cgN%W=Jvs{f6?Qg zNZJB^2js{eD&qfeOhxDENqh~_Q$Wbkg@o!NT7h;}%GgBvxdN>w(Q*>wmm4siR$^RI zV63+=7>(2A6d%tf7(yzsMl9781;)DysTlog14pG4T3biYE71O}K+DlpswlO5O@Z)< z0)glSnt&WHf{z?cw)U$nnV~@XzXFNT4Vq5rX(lCE8|@_p+UH8NYM*FdDA3-bIhs%D zNt}{+-xSg@rbJli0pWxKfzi$WBw|k~(QfsLc1ekLdmCskZ{9mrQlh=mC)#xd8qurt znsV<{{1^%ZMtA$<=bi$M=pLD^6SLSlF>RYt@%4@ZiILSOU+*i>h-y9P>7Pmj-UGtN z3Is+=eMF#IkKh4yib2eJA(Vur3U#F(i*MP8}wWHJ-tPL Qpg+>P^d5acAJJdG0;N)ho&W#< diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNodePoolWatcherTest$MockKafkaAssemblyOperator.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNodePoolWatcherTest$MockKafkaAssemblyOperator.class deleted file mode 100644 index 9f02a61337e58f9aca4dbe93383436716e25db0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5774 zcmeHLTXP#V6g~=R94~2-rW9JrMT7tjv^KW~hJ?(743JEn3vpV8M|rIzYIY@8(q;rH;uaJ2T0?Xc@r3oQ(j2d{UvpN`H|`u05fU*E6eu?Om3iY6_`UE20DMCwbIjYh0OncS8ALdo$?M1RooR(svzxZ)sA> z-9@(URINYW3OzkV+*R6AoO;OGT7;j_kV&^}o72qD|39)H7!TVokmABiW2?hILr%H2 z56ir%^idfkE&jxc=-C53w0pXctr)lNP*`dbJe+V#mgxV)9V@hV(A1WxFf@@JekdgF zorm}a?^zPrVRW5t;}PiIAc`{SHrt-yA(26~g(s)X3kbD}GHTDd+!K_Zl{o<$7L;N> zPejylru}7K9)|vNifyxQ&RRjWXnfrr7rj$DXI@XoQ>F#O^D(G?#U;mMCbi5R=n0@W?w}}If~M3pif4h_W6TEXdZKEjo(5=uJ}4((h7T4xOgu@j%SuYGTqKoJI`r% zaTCpRK~UY$olItltUF1YYsrz8Z6K+XWg4exS0>Vta91rQIIm3c0{LjwXa9vd4Kik= zvHg;1>4qTpd-QPGEM_mlb#)n}$Us5zXHg#^49u0Wt+l(CHmyoSVv6pg`a`?5R$` z0$hSAydzM7X}ng`(E#5Ptc@AGUdEA+@!8>npJDdfh4~+0;nx&*4X;y(0hID0UL77$ z@Dg0de}bboaE+Jo-l1;dek@hH8+H3H7fwT#?YN52>a->~CA2|EpfJOWV jcoTmC>PTP--bPP+fX_3i|2wb@@4;C&6|S@r1_fNixmujypRW zH9YhO@EiIYctrvU-uXwoAkOSXwv}~u;;I!wez13E_uFsIoH@6d`RkwG{s4e)U?m3= z1UkO7%ZmA`{DdCSG8biEN$&o{%c9F9RYI0+C-4=My$96yncH@b%jW{lqu z9kwNevrCnIz+?-#b1+3N3AeZHCQiZM)f8ZTzUI@-R)Hh=5pR0_WB%kJl>%a`;x;T*A! zWec~<9jdtStgaMohq?ZJt5|3qFss9Che`yYxQBF~Sqog0VilJX6_;Xpdk+#7FIXMH ze9IHca6}aS;;{E z|Hyb^48}f2^0Agq^$v3jIbu>h%hINh`&p3C`2)qB*AFz1?$tup+^)lIt}H*mJcJ<` z^M(v;%wJZNZ5Ed-?puM^VSC)e*tv&q@SX;a>PMHXI%Yfl22mFEbg+$x`zVWrW|*N; z^lT|%QA-_nnIS05OBqBV=25_%jvm^HxP0b5jij&BZc1Op!m#HRoi4&8=%;)a$#_I1 zr5s;TTe^`@|a^-mye)?iNqE}6?b<(qXh%!IxV zu+-z~cxdO*4C#_G1Cq#=6s66ei*B6hJ;`U=7(~-lP%KnsC*jNxVLfOw=`k$Js@Sua zC2?qWS(Lio*4~nVGqMyTkcm`rp+8inp2ZBf)=+#j$$FR%8VsYZ%^e=bm4_Lh=z7~_ z>Ogcb)Gu;RrG$K4KkE*xP!@x=OR+G5B&Vybr;rh-ji&8Y@s2$&!vu|H#|U(~3B^95 zQ%93IxEd6O*>hOvHFshI8~86lQvEz*7Q>XB=rs$Q9gYX1SO#B3N_wpQHv@MT88>l- zA$ezbr4*Ty8LSAG;OaD7gn0s&7f$-{?a z@`cI1&$vDrRy{_BW)uL8KqgVrJhX*uhRcKzQtY@sNmj-qD9^+k2;5Hh@LjGB>U#ea zy*`QSdALa?ZjRk~aF4ftFClaXgH&WPHD)^|Chk0t_+DT63r|0(a6uq1{KoUPdFZl#Y%mtI>H+sAmGV(y_Zzc>9CM zVl&(hc+7RaUk(K`SYL%l7I==c=HU(y?pfezlAnXm2t0osMZt}_un$v3C2)1 zkCyamJO^LlF;#e*B#s<>J#g9;xd#q0)^7`!pFUg%JZZv%xG9*2b8sG8Ic!Zp9^1vf z_8Zu~0B_>Ed6=m zY(J;6eLN!Di&VDd5!rr8VVi^!+QbBu;S; diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNonParametrizedTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNonParametrizedTest.class deleted file mode 100644 index 06c4dd3e0bb7587e73139349a93cd82cd8647961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8006 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockKafkaAssemblyOperator.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockKafkaAssemblyOperator.class deleted file mode 100644 index 41bfe060975f1b4d1501ba09a847a3d34a129414..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6300 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockZooKeeperReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockZooKeeperReconciler.class deleted file mode 100644 index 731f875c46634193a58b760040c0ad16575e3909..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6272 zcmeI0TXP#V6vzKclWgLYwj`7mdSP2in^3U1Q@Uv(n4}5WT!_VQdNSFy<-g83Iy%y>e!u_y^REEzV9mn-gE2ZP zSYd48A#d`6R0U(TtUZziRTr9Dr3+EqFjnaO25yX~mE+yQBH!HRGwp9HZT+gMl!RR; zlh>A1wEdk@i$c(EYa&ufBx9jH3^JTa{lz@lDy)u z62rh27{(tdMIM%gsF*eK!8LWvg>#K0a;kt~v?R9@ZW~%K+}!(NI;37f7)oQO!+qB! z8f>x^+@(K;;c1yjdzazI$uNsnrp|+KLuk7bgvC}avauFbvMIL$QXAFKk;vLhje0$n zLI>e$%J&a&Er9vR9tyiTzMC2 z{^>ll;*_}ToNO72%kze0}R>-rVa zuaJI)9Q7v9`|4=A_q!gRM*j<)(p%kz`aDU}mq#mWqFd0ZuwiBVLJ6Ozsd{l@nccA> zsXUOj+M(Edt9weMo1EOa91tk~mdde%3&mYj~hxltEi zk+%6Ip3s4}m(ldDUZsQa4@y_=iKInMy5#C<^#>=qMF_e$c(x9Yvz#tY4nvZX<+jrn zeQ+`Cft{>t*Lg?>(yKa$Q!M7evC*)d$3+~aORxE`BTQCq0c zM&g*)fv}hMW!>@IQFacDE>}t++#E4RiXknW#|wHNPNqnTs$?M{ENKV}Qhf7-?6{7q zy9_565?aZ{*a0u&VUpqdf3Xl4&K=20Z!!#}Gw$JCs*5&(EOHM83cn+e^zc5zNXA4x zd`N7wRV*GpCUa?OJbcP9mVRs%mWR)1KGTNwCfwR-JWz=ZI&$ja4#UOckfw*v8BS1^ zJkZ!#(PLxO6-a{~e;x?2d;;3dxnVhb4xI4%>={ zl|zuZl#*VW*d=KUJzCf4;Y{m$WSO3Y^U7HGpvZ}g577S*hUp4;7@^it`ZRzX{YnYL zNxHs7Eg#YMF}mk|!KrV@&-{e(-%{OKx(<`ZS$UPNPERVF!+E+hyoT4QXUpaVT%0@g6>)oP2^?xQ%Jt#TWPzUttdO_!=RW@eQd5aN{3pa6b|N diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest.class deleted file mode 100644 index 3a4818e399a87d29dd3d2c778060067879612f81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7690 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 J8n@PO{|)F@xhenv diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaAssemblyOperator$MockReconciliationState.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaAssemblyOperator$MockReconciliationState.class deleted file mode 100644 index 792b39132e95e508ed44297567051109f68b3a07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6207 zcmeHL-EJF26h32|uDygLO=(Lhg>5LU!;j5B6%Lgu%T=Se4T{rL+#rqD6MLHVj5RZB zIXnV4Ak-V41PLU#=NWhw#F?=-j>{%CR8^|f7werlbLN}#H?yAa&%b~D9RR+9n;v8c z{HRq}GEAG&Bif@SE=$@d-uaG~WS1#wq$-6`tPN8m0o9sy8qt1fgYNFp+r!@GQ2!w} z?TszEYqk;f+C3TWrK-7+Efz`<@`zKzrKlTfmd)07{bGt7{H=UdeNF%{BJ7^?Bt!UR3^ZwyR@Nrcrys8u*)`BkT`n!HHV3r!uOdb zpGE1|-7%|>S%n;be$FanRw1(rIqKiV>DwJWrc8f|ujZ-Hld3hz)#pjY{c$$D!zLN+ z6l24q7fSJYO4TW`rP?=4H0|v=rIG?80~(n9F7xv{_SkUR8ZXroleWkRIJX$!}*Oqk(T zNv2K8gbz7*Wgg~Wfx!7fZNz`nkxLRS$B!)5xM26=4hCr3IznK%CPNzS3>_N^v!=~8 zfuBx{<2j0#DkHJ8XZfyCPzd;i)!Lod#ERi?zRp{M+75v$2Lo#Zj%YNid<%6iZ^goX zJ=U@4HOFw=w&aPUgwT7xwu#?#gBm1br_CA66bs?ClM3&>y9=t=Ke^LaX2R8_O`)pSyaOp_W z6w_?Sl42U8P2VFh=kn~q2S}F=%F=@pid_mk_y|kbHIw;FdGHB=g`_{g^WZZA=f-8O z955C4xYoF%xA8-Rb(*`6=lWf#4Fo{oC8U)B4*~m}!M=yBPf?o1xBnaDzFGEvf%!kM zmw`q6wK`UJ34iBZ+lRBTj6HyJ@G8zckF5+`fQ$IH+OOd|LA7%SsF(hYn*BZ%^)kG1 zfO;hrHFGTL52>hcJ|*hoRMfYg67}a4)H%$Pjp$Wa!8gF$_$*`p8eE40p5X*rt0?;% Xp9PHgyYM~~;Y0Ws^Y{hIGI0GLGT#=t diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaAssemblyOperator.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaAssemblyOperator.class deleted file mode 100644 index 87764e1aed3017891d2b5c22c4757823efe57f01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5961 zcmeI0U2hvj6o%gkNj7#(lctoWQ0O)kn($%sQJ~Z_BXon&Jhq>3u|!XxjQcg~!dGc&vM{PEW>zX7;|J04~j z_G1$itcY#l8Sn6d)P>j@89kQ;-4cddZ3;oyj;$~Q1CL`7Rl|eACa>@DyS=AJJ^fQ@ zo15FbZgVLw{TACI&?=CjFbwC)iIah;$S@aM zZUw`Ia^Ebum0DGtnd;|nOC{~s3_q@wcZIS0#q#5j+qyQeV1Xj zq-(;%s|<^S!EYF&%>owL(w|Qh#ihfJsQH18S`?lelixDB8j2{s5OPDJ z77z9)Vt-ZYd@ptRe(LhQ)C~;%)UEn8En;73>qp!MP2ZAFvEQN;4EvQ- zLZ&O^q_2z9w>vuS<933#=BdzW(-=3@mr0U*I9nNsaX}}-ww2-kO87FR>XgK?v2TT{ zxm$S3O7gAtxo;0zBAZF>#ECj~H_YSrvSG2i>(YrDKjlVA)riN)liNCVFoEY`sY3=& zXb+^h&t@u3cjMhq9ci?RgtCu~?#P-jV}fxE;@`GSz1ffHZ@b3{P9Di-yDE$lbhVyv zjwaT3xRIPlK{k_0UB*VETm`%cF>2SxJBV7Zwy*ATQZJmzwXd$g!bUVLprtZ>)65v!z%=rXXrPFc`5-93slZf zO$J#i&(PBiQaNk(SLD83KKnD4eor*#shlT`YyBFPx#WKq7w|eg0T;0{FF9 zhuI%eJj~%uYBPh&c+0uN+w@ybV!MK?6wxYqzectq{Z=T_cX1u-_y8ZFfKTulKF62% L3b(0t23P(DqhSi2 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaReconciler.class deleted file mode 100644 index 439f9220524254253d82e0966f5596f5afbf1c8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6712 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaAssemblyOperator.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaAssemblyOperator.class deleted file mode 100644 index 996971297f3454545c615b6fafc2195c8bcb93ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6259 zcmeI1e^VPp7{|X$fg=I=RV%Hn?Uhyw{z&{$wKmumBNXH)9Y8wzhclbY61H4!GrJpv zz6#%f# zMu&MTjLkpgdps{y-dHWG&tzWJgyvT1d>GY@75cD(8zZWv=petsw|Dt`^J=ZBeBW|~qt}Y60 z>spxkJuV|&l999rg`h~HRUY$-&?Kd}{HS#Kp@N*sy*lg5mwMaT~u@ThP zjiQRTWu=fh!V?3T-D2o3sN40|M}aPI;)~RQT9Vstx=!dK>eCl zrASoGT|b-I+!20Rgb~*ys_}4_hT%_3m1|}|u9X3~W(FKqv@&4YFDqgESXsZyZMfrG zvMKg!G?PbdQjXo<;XC(2(*e($m<2u|qU>I4BiJ=uE$C-?W8HOL8@BGpvb|97SG5qv= z{h!WBlRK%YHRXDoa>qlCVfYA|^zb2tI+Zwj_?WO~BTqcsCPbRdorlk;Md~zqxI>Gx zZMl26%P?^QfO?o?xY7xsdLY_5dVCNb9uU+$UYBIFhp!keuAjnGJ$y~wPqt|fi$q9W z9(!0KTPfQa<=Cn;hIX4x+TJOhhaM52TvEou2g5l+2Ae{jZLrIxImdbOa7{&;l zU!$wrbe*9x`#VOzn;icYlYi1xA1=^&kTlN98+3MhQeg@gsRS%u*EIrC;w; m-7+0lX&?Upd3=OV@F_mW7bwsl3->XPA{Ouv-;kycxBdatjZa|! diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaReconciler.class deleted file mode 100644 index bf928e0b271674e72f3d45b80e40ae8aa3df43da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6649 zcmeI1TXPge6vzJ^6FS)hf&ml+aX^G1n)QN;Y>38{NMv$xHv~aNduKbFCbQF9J-sR7 ztDnGEtMm)_0jR<%efL9Ip6TBpFBI-WW_o(g`JdC>r)PG4`SrI)KLfaiuQ>V` zOlqR6m8s3%7waOcbT+j{RlinQU6V#wZL(2ZPpveY9U@I-wG?k;Z;F*QG2OgcXxiUa zc6CwfI9(#ub8|Xc^JWDZ=_FFIG#vd5hkdwMB$ez!>As9C!-=ZcD9M73WA8AVtm{Zv zrIVC_%`zNabKw?sd0xtLS|D{{$So7j)RV~BH%c^WrkYkN-h(lZ{O0 zby>RAq}gh8?450Yo_shCGmLI7@^xdh8N?Vn{Qa%O$W+JcvK&OZTBEsfixm(W{VNh3x+P>{UpwLV6Xl)31x(?)ZCm$GZCv*vC8jiLleAve!@_Clmj(-KwhG zD`{_7w<`W$89q)+)yt*(_ux+Ra{YmoN!j6)E+rdS9f-hg)MRGJg9>k*x)15?pP!w^ zj#JQ!BfTw5qLNCwhq=cU6ks39-t><&Xb<_V%%y0B?Y5CS^S`V0O(}^rwOpmyBZkjw zzt$Oy;^+v5ag5>Ec(@5LiiE|IipMddp-SX@y;_oHNf5JO7z+ti#mmAdcirslx2uZK zl@0%W#O6qtX#qEe)8h?x-9;oNvwl*Go`R4<$pwVXfP?MV5N zH=7I{peo1}$ER8zJK;X3F&WM#R#qIR^H9u1Iqkph+D^J-8i!)Se=?zMMf`HS zV^m}9iw^5d(UZm*f~O1@x^A;A(ABdnD&N_JfM)6=*&Bo=g^5--7)E9jiky!fDN8wC zVYv6tRw%=ft{6B=RoVuf9IrDB_{!vX)8FyfIWIWgqQP{Qe9FvkM<5u4`tgmywJRs%qD6d8^e2$goj%pAA8N9rJWlW23? zCOO(X9Cv8E{KuzTZyMw2n8(v%);OY|(g{@sk&?$sxNF;9r&h;YCq24Y+LokuBvWiJF9-% zRrMTRYO9{_s_MqMv+56BR0nW@eEKksi*yEFroRl$3&SP6O7nh?uHT^9n!syxzKpkV l1y?bNDZGyl@F8Y!10N&AJQh*F5|;5P?&5QNNq&8}^gGRQn}7fS diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockZooKeeperReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockZooKeeperReconciler.class deleted file mode 100644 index 0658364889c926355e1617c085cc4c10526125ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6188 zcmeI0TT>%N6vzLKz(7DiaNX6tIE%O&Tur>Y?yx9EkjQW`LALb4s?MY#y-cQ4-JKNd zH}S#GVUX(TzXEQTc7Tk{{8m*Prm?oh?0W=hL+Jm-U?&$ zk9mvdrOF$tW&MfFtA^0rDxD9)rm;dFH*jM_y%HYg*ZA%}U+Ua#cH|#PTia49G~1+g zZe0cY-zv2x1U)W^Kt+KJg?2E=FqN1Ld9;_`tUMNhWw=@AhZRv$VR+Q37`0TutyGa= zU`2-MCrWLp>V^nm`tXoyWxRJ7Mo!g-1TGA;F8Z?e4by9uh;`++PuIB!l zg|?rv-cZ`Q)OD9vv<&XM0gqy{72&3VKKqiLfw@HNeM#BR(uK35Um^Vpxp@8TS4h7? z`W15C*F}GJ{Ij#86@OV@;+_3W$SJ+oE7Ye+B>8N&vMzc#od`Cq4F6YxPt#EKed)d* zJTEWH2UbMYm{)WuS=TC;yY{dlGNZ}PKaq~N=RJhujX%9O%pxc(VWRZ2T`H z`e)qIqt9uGQMTN6o5&}FJpwOjSD|~@NJ6-*bOsZc8OIo2WVn(&%VA=`G3m=lY&7c? zp|?3P3t~P#F`#gVYZ>2n8V7An5)(S`{~LxCgC?C4Erwg!Hp_`~+%z#KBJ}0W6Ml+8 z6bawCP+-B|QL>sqsOzO>6tB2MzNC>9?^29AQUsRqH|ag7WmR}1c$MMy#khxP52f!c zR%4jU9-%SM-ww@|s28h(EEASG;r9BmSZ{)Mo}LrYWy%RBTOka{aJM%?Ou!Mn0IxDINE4CBQp61ot^SjsraGJN;%mIK4pbD`!vhM{EK9lS-=(Lsd;?jTPQ zbR~xl-eDL?;iZH32tu|?#=!@qE=iDsj~K?1%XWD=_?SjDY3QsSZD{C#3T-e(oDLo` z+_;E6I{1X)Ibxy?mKY||3Eak=4hjs{O6NdL2g?jjhfg~Ag1VnBAO{3$hmv*E!5X;~ z7q^3ThM6wwi-XNmG`O4~SsL4QX$-BQ+q4SPL?788j<~9fg$weWDE0vThcHY>z`+Q$ zj?&ctGW3)ZhH*MRPc84${TQ7yKV#yX>8T$v{c9q3g^t4{6Ki>ijL_==)5yml>)uEH8b7cboX?RQCUbHlYf=Uz|*s!qKc9a7MqTAZ)f zYZDrc*mJ3ZIbAZdOQn1vx0IPS3mP4>>@`QQis?68!Tl=p!@S@Px55N$`qR1WOlDT2 zBUZZQb=#{n_gCCis0`09PML+QSv2iZL1?R+W?m0@cmbvDk$ml0ftSc1^;!zIV7vjIAyQD61qeSRQ4 zwifN8Stv=20UFgPftBb0p*EkInNMk?w{`|re?FJ9N|-v>n#%GDlZSU{X$n?S2M5(} zS#A(Y4{dkVcfz`0GFCZxwq>m>C#8#Oqf+DzVsEWSX99)8scEF6n6Yudb2+=HV#Ze1 zf+NpjdN7{ilmNI6xXqVbc zE@~=JOMML-c2njHMG-co-+`*Wb6l)5VK!O0jt;?&*5(;#_MdfqH=NXH-`J@oje66_ ztWFOj(;IP^LU1uak7|d$S@Z=9xYuA6qs*%{*KFW63+o9#BTdi>s8ZcdPmW5k>)F?Z?+;*86?Lhzgn$f}RBKEGP+s)DyyQ5nn-3qz# z{n@RMZiRF!WV>G%-R}5jyF>jn-oWw_Ry`eot##R_0aYHSBlrt zQFVQZ|9^11yqL|9`4!1A#gwcOa>Fsgi#3)QRR6InZAmNbplsJ`HGFXd=N#dKWC?aq z?~4A8Vj$FI!BfQ$iy>8yYhRp<#T6@A9G zMcV#z&;_j4LEUXANjH+Jfzzluc0J zGQ9nA(MGb_Vom1#@^S`pUqh0GVCF8VPV)s(<>S^ z{snJh?j#hr^eARUr!qP=?M2+HPN)kE)x$&D(Pr`Z~GbXCtCmr*%nk%U21V zswfckF|yN%OJZ6sw#!+kSFw$nlJ&0>E`t#@M4NWJM(9+R4+qjTT4=HLI$glCz?P>2 zoi2j#mAtr4uY&*vm#x#AxFTin9q$J^y$$m%Zv{HN3nMg&PVb|xwter==|cpxspWL~ z7zt2!j830|m%jYE(dlz^`DU_Or!P0X(MUue2_IT;g8-k3_&yEjIKe4A937@n>Z5*q z8YP_ulpLgllKW{$$?NEVk_YLKlGoF)k|VIjLE>`{-3a@eI>tvaK1Meyy<6y3C2xzQ zp>{u^>~4qN9dxH!zl%-+uQfl0`BRsT@1}c{-o11mqr3?DGGqzTf&2>VRpK2s1qy{zVHF|^I RqIc*$`hY&7Pv|rH;x9+_dXE4A diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaBridgeAssemblyOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaBridgeAssemblyOperatorTest.class deleted file mode 100644 index 8c1ce197e595930cdf4efd08c54ef3e856dfb1fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7350 zcmeHM-E!MR6h3R3$aeqJKbq23O$($gwM!|`CN1FDPGjQ4!LnW2!enH59d9FRJ*$7)z;Q zHnW~xt*oyV3zb|ZTO@EUZ!}CnYgwnw1b3R$k!ymtS&a(RnP^iXw+Lu?gp*sia%3f2 zD(2G0db+T>n0r8AD&O>8$ zg_2P!rq2&L*Lq&ptU6_TWGP)RJ;?c zX>MSg=P=E_^Eayg7S7qGDg=yn)2mY9P@Hu)1|{>$FD@d~E&dw*;@+wCT?2@mQ%r^%}Kowat3V zv^LRIeTMNww=5IeWtr%fWp81-ENAo@r>^dBsW(k&HFSxXbPE$LgP2(O2^DWbxtjQQ z7CL^iW{V4{qiWs66k2z5%XF04D%H0G9ZQaqrS4`Ak`MgErF~6(yrB$ywKseWI+00^6cRlQgvE9KIQ+O8k(|V^3p1rCwSNEJ6tuqJv zk~-eOYtyr3P&%QnVE3)=pp7~Wv!JNz(#v?xxFI_6*q+UHh;%Sf zE8N-~Ro74Q0DQym-2V?DKNq_j@&VBQSu5DX4{vKUtzPRtyrrRahT4f;#K9m(UL+d! zly94YnMfVPV+$0YADXhm-k8DCOx2Oe8Z4%si#@G&PJ_WBakvEU9D)n*F7jNnyO}4& zm>kXHW4-D%k#8xfNEAiIEz_=aBkL|6kPYS%_&Wa***Zn%RQ)s}(N^>v$(l5WM4QXd zuatVv`fLrlaWKD=?)fO(B#_&m*ipRBj>i6JMRv+mTSOq9-`*>U>n;CgG}g( z_DKthbXP%?TQwXzGdJC#I{p3fPa?I;NSsN!CFj+CP3F}KdUTgSX0S(ti-f@S-QK8| z(JIfddOdA=E_GLVx`6~L#oUMZ-ict__bA*aaA}}x1kNkF8EPZV*A2VKZMwjm8q%U@ z$!CT8vs7vb{>**YpiXDqprXwz+F2%WEj*GURc|cQHL$K}xmDr?2kZP|xUesj;m@3I zs6~qJIg8meZQ8cm?@k{`HwFW%)Wd|yA~kEz30&T7rgPpurh<1p!(ubICoH;%b_iSv zobO?@woe!mIF#>wIVe`Ot=MA?J|}P{0D#4_!}Ds8$I1%a?47e3toG{#4|@&Pkbw2| zuqXpWxdupzAK!JpYEVM9dCxbn23W`wetB!~B{K9cR=Ng{`*{1#DUT7aFxSQ6DBfWFj$;hoLxc$2=t?DU)ba0{AImmcG6b#eqeW0Q2JiP_+zQ3`AOvG`2ZO+e@KL~z zkGmKuDrKV+)twNGR!CF?=0-&OJrr$z2(){ diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreatorTest.class deleted file mode 100644 index a3cfd92b929ca8ac13a710018947df80f4459fa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9174 zcmeHMOH&(15bl)?i)4%mekI0_1;6kMIl<1uI8KBRn6OAh5@6@0EUN*nS?wyjD;`eH zshsl*@)MF%s*ME6LQNTr<`+2rDt}8R%nD^jqOyKqDsxqeDh6r&-83h?~{Lj z`UL>qg|B3YNRV?KJ?;_Li$Bs|yF1ig&U)U4%rX7LfxJqe=e#7rtTn@FZ4=u_+cIh@g29+lv5 z(zaYrv%GoDtdcH>O3+c>xM8^xbSKrhTt1a8P>wF>mLP^bTr~-LvZ-Vyot#pq68Wi2 z8mCvYM7J&7Fb&N!Yzx`D=2O`mcIG5Ft}@lIpO1)OhUYEpueD)&H!I}D9jGN?Hn(}{`cgaoorf-SwQrLZuSzh9WmWK>io z*fgC@Oyni#q+JCZc*Gx=wu@xewoN4H^SgY8Tt1PXLyA+)jfLBVbY?t-oj%!EZRnV2 zXhUOtXpHgBOg%`AOK_t8&`5Ds+)<}F9RQ>=`2r&>B+?IOGFfzSFY88c=Cc`9#U+x! z9}#G3obkfe5y9^IyvLGr*=#DEM^BIE3L`a#bf_~LUF&GhShh5;>JSM=XxrW9Evc%8 z>j~QLjow3s#tAk(-myv?Z=EhX?k{hh0^O44km7>vtPm%)PV_293f-fPEr{&AYgmSN zPl5wOSLP)+n8c-*;TCR%dbp$<$9B5lO{w>fIm;ogZLX4{qTA()VY0ohR2+NJBxU!G z5{u?bL@5&8qzWh%O<&QLi85%|!#vK1YjHlzgQ?z7i}OLHXcJelY)>g`o?cQs+ENYTYANal!CPf^}CsThSD6qe5a)mKrcL%|P3L z{RDY0K#fUp8^&FM_fE%PYTib}Ae7!b<}lz~!I)Syi1gEV0W7#cyB^?QBHFP2A3?(F zOB*|~n08hjowRXy8y4o{v8rJfiPHwUciU@{Si~`OHaAW0>Eq6HXc&^mFm9>ys^%CP zrr>n!7kjeTWFh^6EwSKcLq_^_~G!(Y}vad#mk$(&{%YL=Isvs0=7}D4j{0# z>Ex@hXL|Ho<1(rQbZtnn8(%{uL>SKHTUFM5sTnKU)Rs-#EO zy;175PL;MG!+FY(TF0oy0&GhfhRPCpm&~DW$+*2{HBWYdawToY!LracFjgYUmmGV| z-9kB`Ve;0@dl7kaD@J9LGg%_~N;9sX&fn;bfGd<1mTrY?(TPqIfDE*s;I$a0WAJmF@x+QX)6b)U&3MIFJMGLn z1vWP)*OKigYDb-Fb6;{uEXPvh34r`bD)hgjfS2`iT3=MA-fbHuppSfw98WGG?` z3)6EMmgx5d`u#s80?&u=`7rb_5_*RMZ_(x!s1oy+S zNqs`LsgP{fg=`;$WJ?R#rbDusLN+xd+c!eCnUHMX3)#{k*`5g5G9lUi6tc~RV~fOu zY#)YX8xpc*L$Zwv*>WM-#QQBDlI?4uZgU~oz7w*|hh+Or$hHuY%|B-wPi+Yvgkw9< zDb(#@NVY*C+eabU#)NDihh$q8vV9Vg?OP$+ry<#X5VCz1lI?c^TLcRD){MaC@FmJq X_}15fz%m%H0%fq_3vi(dYq0SjKw$Lc diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiIT.class deleted file mode 100644 index 32ce34ec47858f1317a7ab9867bb85a2628ed7e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7938 zcmeHM>vG#f6h7-FvE}C0q%C*44Y#C#&21<&Z5h|3#DhbiG0E_AEwAluWJ$AHc@qBc z0=xr{!3@m6e_ntY{_qAo0>fF!@hyrawaqj@{#df~?YHN)d(IyH_V-V}0KgsC%tD61 zmM6`k;+`r#WL;JiPSI0RbiNfu$K{eKM;1-X_Y{|d2h8($r*0hcKso~B9QHI5V%s^3HigZA@w?e=`NS*0Fl*QeS=Tt&5*bpVhB{L zk0WbO%pM!^Pq~gn(MW~B%xz%{b(g?})wNxGQ+66W3zrBi3{=^W(vdk>CJWzxZA2zFSF(n+Ey3(mzyyM-Xd85|mw82e_Nd&pf+-EILSA7)MU1vw$AC1qUXqg zm4Zl3V54(fxJX7~$C0f#)14(qZ&AgG9Kd`ftp5V=EZP76Bg@8t;&x+CsCGmQQRPrZ z)uGGtMvxx^w5PMq@x6K&TL2Dn;(OLtOXp>7%yG5t)j_^ETw*qg{ zN`%CDqtrw_66hNmresBJJ0nrBozxsj+;I{nZ)`C)#zWfNsC&FmVnLhCYbTozi`n5~ zGr{DiJtFXLyxY>p=1Hy@2?or{3|B}Ei^e!x_^yi;ptr}Qjc)T|;KA&g7UN&>gE;o6 z*pHcE?7)!@t@py15lQSBwCUGD!XsX2FGL9mr|dxl)y98N%jpBYFhkhIxmqo5`o5CmLT}kk4Umy z(ponqJ`am}>}BC)0+*w{y4@NFeJykd8SCs62;K9UF91x7lPuMfFz1CGb~(c? zL>VGgckq z!|5)we4c}wg#4aB<6+9lmNmvFi-C{p5CeaN4R36tkC|W$ogf>Zv>1m=`KM8e61b!z zrQF8;KCe2h79MSLaEp*XpRB`Edhk(dqOG=oY9!lh5p1OhHUr)mk#e=qd!xsDBe2<#_HRb; zZU(#=#2fJTh-`&Oj$#DISA7lw@4|bLc6)zFQ$1Vgj}If*_98ST@DcJ3>=w=TaRl36 pk!L}fe#nyY+obkG^dlt zVfbInzzlrnM|Ief?AWm{NP%=p27j?EY46eQ-tMz|cYi+q^>+aH0zS2%LSQeEUQ@9| zH6PI~ZF12}l;q)0yeVQPsS>j31!~6@ zm?5x`;RQ5mH@`o8gaQPve9j}Tz9jHWeeHn2%%<>}1vLWmL)k4Ug{;D}WPbfYBv~SY zF7q8vgfS1O;v#ZlDGmb`CZ9QWZNI}DpLqe5C=^rgh_;!t%0;7ZL}Oq?qi@9U!N7=B z#}_PdBB7j+DzD=x#ALk~H6F!8H#M}I8d}xH`M!|r$-`JkrA=`>8tLyHGG}1nDUl(1 z3CS*#syCJMPkB(tc9Ba;h-6cpDjpPJl@=`V(aRvR)l)3;A9B?(c*aq}p^iF^nO!^3 z!I?=XI&~-GepFb~2lu#gk`$>26D7hdPCcX`CuflQn!^((jeOSP5hiB~-{60m20E=y zq#MpI5|)00QVxxDHs`=2LKrTX%>^16_{}iFuH9#d?D2r-40V>7T`D<6?y_t5(pF2G zcm@xIOm&2h#@6?cjH9-}Zp~8K$BscqZJAv&yfA)ns(e;sa{jmw&zFd-EHMnzF`5sV zjKBDjTZs+#Jlp^8~Kd-Qn^&w`5%}zvo?SkH1U9LniliS4v>f6&?)^`dw=O z;f(6=guny$32YRs<2Hf921nQ2uds*qvDYPV{eBuL9@+?S6rR8 z>s5G}RDLeAMS#);Ggpq2rfq(IH|7F6<;(1O0(W%mZZoP<$u@C^Dqy5NI*Im@0d3ic_6od;dc2mQRp2_@Fd}RHb3K<0$hVBhD;I!#*ND7&f;@x%xLKg_ zn+A=yjks_9Yuq0VxBzun!x?(etp}ZWokgHz#SY@fp_2&ye=TpO~iW_ L=k0xrsJnjwwrqSN diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiMockTest$MockKafkaConnectApi.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiMockTest$MockKafkaConnectApi.class deleted file mode 100644 index 93859152ef5a3cba0d7282291d907f228296e23b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5583 zcmeHLTW=dh6h0G@Y`i2*no@2Jbea}$xY%3@4>$z5R;pNa8j*w`9>?pkJ$0MdMQxPm{341nITZWSJ3U5GkL=CJ zoCEU&*5W;U7PN{7^%uB^z=}4^MEa2H$TymRQ~M#}5ib$Q9f?+ebBYt#Nk+G8Pa`|9 zUE62jc5Nu_2z3rxrPN3wzqAv72rO=kK$sl@xAV0Vu1v4g-)HNDz~1?>m)*sRny<(P zci%iE+Tfng6oNwL zow63En?e@)hA9jTQ|KFJI505GCT&QrX&?>lFypnUL7BW4;uBBHMAH|n=?hlX!u57Y z^c0;?Dno}$smB7lZJpD>L0=x(wT8Na#Q!x;s#ew!rUr@a92wzfX*6x%ZqM+b@slv^ zF`7{$DWm2r+^iQiaE0uInk4Hup|LDS|B99CC~fPxvA!aTkSZmnp%p z__?{O#m3Bu;zT%ECyF~b?7_@#&*Nd-l3Zl3BoAL0RMsUYD{bcBNxwK+1!q|jD|YIk zOwlDL>)`*fv{{Lm^%<`ssgL-TZN@X&j~n$u=~OVyZtkMaIjzq@mn$V2{POd=umbDL zkb^q}?&ecmMxWiV{K9GtUqPNnojO;?wre7=UXvd4Px@U{e{kNk1(GSEHYIik>6*oa z$RY53zIML#OVcv_qg2P7uFvhDDF0>>uE!1$xOW%@Ms#>J=n5_Hp_VO$5qGWl4Bgtm zdZi_JAIYN2DICk-3>I8&ZWMhaBjxd@!rF0TBwhw&T1?KMLsSF%vMG>>3(THCYEF6W zGXl$1EFY@kTk1zU@QA?CE3i3%J7YP$kI?Q(-F09KK_h3dG4H@91YX04bl@`r3vrA) zP$Y2cyq7re1y0A&c=vZ$`FVZySGfIWjDG`v?P@?Ncky>QzIWkGcnkj# zcpKiqb%~^R;a(rT5hD|+3wWPMeQ%7^#u%v!a39yq;Tay_6<`y;F78F(A$))*c#Qwo Y@%ka;;bZs|3h+7V@FjeW<8$!v9|37ulK=n! diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiMockTest.class deleted file mode 100644 index 0418114ec7e67681ecf2d67512a6346393c4039d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8602 zcmeHMZEqVz5T12jY#)Y%l=9XTmQdOxP+Owqt!a@QE0H1`0&yC|$Mt#bY_s>Gy*(@8 z7w}W~2S^~ncYYLN_H4&jbM9S1d8>|UK4xg9|~9KuL;bo zt{oDXt$8h;hgS(K3^BKq@>Bs9$l~&2SMk7;UEZR$=lDW0Ej*X{%4u|avymH^z^1#?~-`HWtz}OYq@_0a9Pg93!`-p19p z8&%8CH$qQO;rO1?boeT@nQMk^ayl^dze`4+AOqt6TFz6QG!rgOB>K*w7BWqv%NE=^ z(cEqQAoNj!W>kBWQGM!js~C|nk`4@S{_SmX;T^}9!WNnaA;t$JoQo6+ZHyDNNAuM+ zDgqk1E#4L`GNX-8u+2iL`AM4i_aP5?3gmXELzO19%ls6W1}-&j5|!gq z-E*rHq^eTvbW`F2gn;L=z$(@}DKV-e7lMRQt>Vb4mmm{Yf1DS@Wok#cC`81eWTa&E#P}i|TjI z>LU>lcwE1L9TT(Z(TqwD0yp+UR||*lxLpwl)Te5y|0vi4&FGwh6L6%W?c=OvM?~^Z$AfagtpCj z3+sa&$H6PpT%JZ=5t$TQ`XjHHubUn;;1_?@8A?TIsqk6st*sMu*{k3G8y7qr5&V+s!4Oa8syg30pMXZ zo~q}-f;pJS))M5QfY&@eDPk{HZg_Ver3hZF-=Xy5(rdrM;-7ezgKPLdA3d3aH?Upm zNx^k^6Yq-f79!-}?Y`7Icr|G2(U=3YcN5TVMrgSRWBDnJn~50jC19+aVGy8b=}?cA zK8CT%jM1~|!vu^w304vKCH*C?YjiD87SlIOGuov!E^2|2-2IW)gwG^ZLe?xN3>1@t1{ws+Z999l2Xt$PHiYLfOV#7X z$FW=7EMz@Y;t6&@rCP_oGE5OT8+GPTZ@c!m{S3VcOm~@7y9COuO?|OKVCEM0xVl5& zm8IoP0#glPvof3^FhB5Kl~TxAc$J*{e#4V25KfobrX^gTJ5+JunZ6Wlhq=Kwrcqh% zFwP^l_-)#dqBgn8dDhGs;&ogY2cv_~oOm&29 zy29F7YB;DqZly5pWGoP^Mf74c57-tIW=D;(-o_~}3SZS?%gfNciI&32*m)p0flyU33O-5CS(z4#A zD4yHg;c720varph$582FMoH z8S{Ui1Pc(+DKas@fcZHn!&w3smRf`I%No{-yzLcTo|$i<0(}&^m=M-A(Gyr`35zw!Q0>f?D0lg&f& z&1p>6$H-8}a2-Y#$rt(mQTPO|W-!yL7ZFq4vmXi7#IGA>&%%df>Zb_@O{xro3f@b= zL6c90L`C+cVpRgsF>Ok74VbM*YfUZ#g(63vw$8#5fqSDVE;_wb%C= z!)lBjcTQlXfXliNt5iCBO(9d>=TqJY%kY%=a;iB25L*~)Q3 zoiQo`?-xM(AOr1(Oth;7&_2pQd!C85JSN)DnP}I>MEfff?c?##$i+;wPsT)RW}ube TQ(OlnsKS@{KZ94F!}Wgv6vS+! diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorMockTest.class deleted file mode 100644 index 6ccc038d324be256bd20c026d076d9f1b95d29d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8012 zcmeHMTXWk)6h51qVke~`ZRwRF0)?bd8)zw|X$!9F6jS9gc9PNpZDo1msF5Y3OD5r! zXZ{EL0%l+aW_aXBF?_qe$*E!~ZPGrF7q6`S_UyUs*`ss*`SvrdD%y6?DI!wNi~yWJPM=ka>Q+Ron7*EaOLW82*DbFG() zt!49$v9S!g3Jo!uki;$Bu4NZ1Pl0AMqAlLNTPQIa)ikG8LN$LPGaWa<8zk zm+vq;T8HAqdq!iLP@;IgjER)3*SXiw4a^K~7>>|FKLcRNM8m0;xeqyg*Rd=P4o_=B ze%N#62f)4c@kAxitse$PLpr{aavTdS;c;P~NF>h2CRyw5#QU z>pJczO|yxgR&3bEu{L>CHJo|_X7XWDwc$Dyi`TvDYC5&N&ebY6ETK~sB5vq4u1=Xw zrsa&8wlij0R_VTIJL8mEb-1V6j<42r-&j|D(BxYUI9r$|+&v@QJtJ7n>}`i8pJu(` zxW0;|YkI{sjccl*+hW@aSKERv5pMK zFntxd4tJ4|AO&;-1KFF}%uJ_eRMS%fyUN#08<_)=Or$1jdSLlsbVi*=RxDlIc`4wTX$!9EC_G%0!zF3 zE{xXKTAR9S>c|h%sj|%1V|eOKyJNu8VPY^{PMeu|47`)5$KVnP(=V$}KtCe6k6E=_ zt{=1PHpk)MIV&o5haD!Va`qc{KsHR`KD%MkseSj<+!{X4PDBOQY6~7eU5eyySw>CSPy%2+xSgi4nq220y9e$ z2wRJ?1mD7~`plgd)`md7FeFVE=;Am{(Fdq3O+Q-<5@n2|8gBB1ppJ^nvbcFfeMWfE zYU?Iyy&Uq_O^;DUJLtlhDEU;{5th-}QegXLofqv*(=)+eP81zvDFy6|X`Ns^J4#m= z`z1lurL!bPze&%?e&hCd5Rz`64h^F-Ck< z@gG7py;y_>6kVsacATFTr*6FExMCJE-(&;n1Tr^0H$kvz?-iq*MA7~5P6>SmzLYx! z5m26urt6F~4@b*W&;=;=_Y_fBmWLzWPf*Y|TyzpR?j+I7$TwRaj55>BvVG{jn(eK+ zH_X|GGum7rx)35{m(7|jTM~?}?rHH2ZPhWWv$t>x?lM}6mu+tsDWh{fuF?|6_o-o8 zJTK+V+0~Us6@trqaVJH2LPz9*1y>rQJMmlzP4z!*XhH~1mh`~m9d=gihWL+YQI>6o zIk3oRrr)QKi1%VQS;`lYq+2n7A%-_aS4SaqZAO~bQD_CXd=JHjsnC6Brsw63MwUVk z7#))c=qJ>TQs`T>Sax1g3Vkn{Te794&|`Q+=U!4s$6ozDpA|9~oob)0ovjyzppug! zRz-Z`DOAH%BJ?40XoXCuK-yEG4Y0Y>v%@8aJTaKkXB|DX#GCg1;! zX8w}c5Ai!9XNKt#o&`r@&kSWTrsyM37@&_^s828oY8Rz!ZEBYzsLe}i1Cqw4Jv6RH z()cWb#-k1mMxWF55FfKG8bT_uM^maB5j1#&RE%!*aP&opT31J3Mo@Dis1eA6*O^yEm)i4x< diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorPodSetTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorPodSetTest.class deleted file mode 100644 index 7402fd7af84549ced9dd81939ce057ceda7dd6e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8181 zcmeI0OLrSJ6vwaJB;&Ygnbc4|8*Esr4EilcTsG8#Fg zEI5Y^EcgN}`2=h^2hIW3>{#*z_yVlhaJU+eW2aG*bPjBSH&LYd>!+)$JF@-%_3s~k z0)U%Pu^>U963A*=u|TCC&{dk|A{{8n8=vvCXfjEakm;(|3KWyw0U89XQSlz7XX)}o zniam!swxu=7NTkMqE=$6jARQ22#kh!kNWj=q4EIr1P1b%IfuZQ+kI5Rwf*`Ofqh5~ z6!q02^;#?m!vs=|N0+PZwFvCb7Ut#)c_&|9YEy=FQ<~3Yoh0ldFoI&AHdxT4RYoAW z=oCx2LcT=cup36b$Yj8UpLT_K*lOa6W3vm>PBHJ4ozhaICNS>Kwkk~e3^NqXKX@yEwbNp2< zh2LPlnwMgg*O)XM>8tRVLLMLR<_~t>MVf z4eoRGCV@TY&M#uRv!ccvn3myu$1nt9p71HfHuAtuuRqi^-^FCOb7V8P!a8pi?swc1^Ir_Jy(=R8?1Og-o{A z#ER%;VpUG+s+`oJPCnfV?KpX(DWtM->N2fJUcF{lsjrul^t(05Qv zeI@T_Y0KNDUm^Vp+4}RSUm^d`3JJf;?cny@6*?j7+ii9CNy4wSEycajR_N>rRKdjOR@yVUoa^tz8l{ zNzjR*%V?LOVdZA@KYA{KgWAo=N=6lnJex3M;jw9x4E-F%*3^{F*pRD7aMIaLlXN9S z){l@Ks|_=%g(XZXTWGH153LW*h)@0X;UnwA(NJ03XHpP2svj&gYuym@Vumj-N5OA+ zLg4f!^@i9mc@tfQE9!NucC8RCy;toR3W=f~OpmBnaiWWf0@j#YlzT0GfESF9ag`$b zq{Y#wDo$szMP6S~xY`rNg{JoHsMjkV)#Q$`$M6`V6iv6dSIe%TmC0)BSsim9f3xxY z23NIvN#LX=MbbH5M_UyaD~q;8ieZJ%XPAdJW27nyk4>?I(H{S@{A+r2&GBiP>$2g31DI2g8LFdnvt;BeR; zfumvj3>?E&&p00T3EtT!afMUZyNat4Y*RnN>3d^mzK7?2#$E!>;$IyFU^Fk{-;uTo z&cS)?4Z{T_B;aDCx`eH!T?qHkp#C7n+a diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectBuildAssemblyOperatorKubeTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectBuildAssemblyOperatorKubeTest.class deleted file mode 100644 index f5f17f23e3474c3f4e5e1980a8344aa84bd39e60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7066 zcmeHLTXWM!6h3Pbd?64BB@`%B3A9bp#%?>kPy)10;t&@(Hn9_?Pnos6iI+%P&uZlf z{U3em59v%h)4un${VRR#^sH>ha-u}R0}Mm+V6RvE?RPGFB3i0Pp~6Nk|Z2 zp0sj`c`EmewrP%woTnsre&jjPVv;H$bC&IUipl;3>Uqqm+s|{4>Gm#N60XZEwdixZ zk?*dQyL%t|byh?2B#aQa7+A2WyOS%|pWzk)>9u^RP_5*b3Irz1{(2RCaCa66oJV#~ zQCDqJ+h-|A6Bu=#&$}Lh5xqABV+1mI#p-xL;KEY5R4K0&)@oZCKp?eQSg#h#YgGbQ z%)sMKCOt0PoGHYv-$E;6<&9cpqqbEngrat zwy}tQwV70V1d=B5t39N>w2R?Om*K{)NdlKmos)r!h`i=Csbr0U+vZZZ4s%sSiZ*XB zN#KTAJ!%nmp1sdqt{xINGc&u1Nm&vNmV{db#{1bUNGW6r407@B4OcQx*lpG@Ea9{` zMunL$T2j<)=6LsvOuE)&MuSw=lB3!pL?Dqko}S7}G{WFwby> zG90R`rlF9N?X~dC!<<-pS)J6Zb~XEA7CL@%rzNB^aO*a$OK#mYEb3~rb!PMeJw?9S zEOpD`1erfY^3yCGdvBgr$Z3Tf|MWhskhiHqf>)*!JQLq&oRB+lA-qYD;AP8K+>Uel z{|S7Pj_NJ(rLd=%+jz=VGos`SB@Ak)=Pi~=2aQvJ*8N!wxahQOZgFLJK6abf&S0Y` zeG5BQqtjl_%o^M?e7C{2xr=?rHm=}r>f0)e&Kf1`Z}keI4C?Aer9&K|%%rP9OB&ZM;AzD*^k*b`$uj_ST+Y?Xwy zJM7*?hQ-SAc2xSp@#nWun2Co~{ZyVbMJ%M?69UEKg&eKp?C&`KC{ehgx{6RnGkfKPHa;b= z8gHYwAO~E|^%kk#4Z*e9JZDOO+$Y*yF*03al>Pcck7Rpz0=91t=k3g2 xk!<aUcfu)5ftGul%Nbx{sSTBjk*8; diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectBuildAssemblyOperatorOpenShiftTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectBuildAssemblyOperatorOpenShiftTest.class deleted file mode 100644 index f68763d40201efc21b9e28102e5424b7e7948146..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7109 zcmeHLTXPdP6h1Nuz7Pn6TY=IpP-sGn-8+;3trHA!S;ubdgy~a8UMsQ4TJmVMp3s;6 zEN0r7_Mvb6Cw=H&==4Z-l1;K?oeaaIOkON&_31kooxPmzuYZ629RMCeBMm76F9PKi zGz)a$1?|xSmxVwp-uamqWS1$br7C!S7-*)pF3=!gou>b?@Qkjk(OD@3^Yl!}{Z?_X zQXTBYQPkUfMK{nw8b%15wq|@PRtweU3*1K_J727n>b2r*iNJ)rwO&U@#OgGGlV~E) zROlt@hb#kG0;8RmcSJy7#O%$$7=avK@%pY1I5k_X)T;BP`NpyV5XdZ*7V72de4W5~ z*SfvLRKTSuxKgf#U9>V*U2N1A8_VTN@hMVH5V*KSd8cW@yYEwzDgqax*yXumeQvql zSe!w>dQ9nc0%;fd^*Yj?Sqqy?35FX7CJCH%pY6Pe$V)++D%L8A9#>Lyn9wyPd%VRI zfh%tPb&I(3_yaDuenjBdo#4Kc%Qo7~X)(_?4mn-wts)tv2|giI<7k{$pS}6 z?R2R2+Kxs}w%)}vk8)!DewKxr`$p9o$m;!OMbf}|Wc3CcK8zPG~eOCgw-0Aw<*}82t6MTBh zplFwx;8_%EI_*WgU4xiCZ!%D06Fcuti-y(I43qpYSr5`x<&<38a-IFJmMspWe{gX`w>c_FzWer+FeBMCZ55!h zvk(f+JFJYdPr%X5qR}p_B7?QFb9p|o@VQM+8o)0yR(=uRiiy4`(esl14kF{ z5~wA+xRWW#)hnB>KB3$X6^nSBf%^m=C)+d*CfT`Z>@0R$C?%S=X3Y;*xtMLEA{w9WDlYV>?!cdVyKRG7<1!3(o@54! z1g<6Kg@AQ%0a>X+RWqK9fEA+SP>(~_kh_lsOSdjVjN%D5xA&L()1$58h`O)4^$9bb zhB=gHqwmv!K%9mjP|Mx*N=k!^!tHC{1ZkMZ`n9E=h8n8hJF7ko3)?jD{x=3XRpCK^ zPxA(TIt6eIP})V&K8p{$Q8xM zT%UjoaM6zM!6h8Wkoz)R!Qc0B_7z$sIOcwXt3OSA_zJH5fwL5RguliMKyPm1ui1qt zxCI~Mn1xAXNWm2TH>le<8n)Xuh7Gn)V%VCNEoC|GY~#qsaui}XRyR2ad=6hk{P=pn zVWKiN`cZuo!{Nt7Md02LY~Su?BbivX=^@x+d?UZavOPE$Tk38s+ruH)Vj@lb6U+AK zU~I>Fv25QB!S?;`Qy94#%QkaBw!dT9W)H?T`YMJk1&^^tQ&56Bj;HWWdJ1KD1{J8n GkN*KXg`U~~ diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectMigrationTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectMigrationTest.class deleted file mode 100644 index 591a7574682e14c23c235f0950e057f89196a2b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8668 zcmeHNZFAd15MG70vfVZ(x%)ktM;2Xb%-@vdZ*+_1bNO9eg8S+Kvlb(BSZ*QgD+x4G+|MD9Ed;uL5<`h`- zT&pCACrVGuZL>sq$rCPhexM~jAg(F6Te5856U2>fn4U+Rb$eKPU~X)g70wv3M2+?l zPC4r!nF_}gI2$n9ChM0P>rW7(z_I#rO;=#Sh#s|ZI@T{Ma2km`VKUJ*ZJ*>IuRy^W z-m*e^1?DS_TC-8t>z&6TOI|kZ=5j^P!D$6fA()vC@dlV1cG*n z>!ExlgYzwafHTgw^h%>%sT$Sg4kA%vqeXB&i`q0;3S!Q+?=QFXmB)I$`?%R^bgL_R zOMxp!d((7DPiNcI<;)>WG+n+;d&I>tDzet~N(W~MXCA2t9~D;grqOs*!&RWf#tIqO zd?<$p!;H0dN79c39u2F6`bWfxJCspzSAmxnm%6CU3hxmWt|@RP(x>ja+|7ZeEd02} zT;g$ioAfk`I|FJ5i_!)zU$=?leXbSqolT zlgVk5-Q9wYuyUvQ1pElR=yR368t{G|@6Zg7@7Q)SdxXhUxx4 z5Pe4w)_X|BW`brl!8KD8!vQJe(ea6$04@Dr3b^VFY-&-Vc|HaJ=s3_RyS{~ifEIf3 z#U+h;n$LP~+K9tuV)r<=iOHrFYf??qvSfNSGJ$3z&m_yCFrxxog&U{fGQ5Gwt;OBh zKbg%sgPwuZeP^Ax9TO8&GEK-W)9#usmHpApV`7tf3OqEPOX3ofY!_vgs?H-n!b87` zlcMOsSxUwgn4A-2N0g=LS6V(3)FD+&2YM7`U6y&NAlrtcP8bqj&cQ7OR`$=y1t~cM zCw#7Aah(Deq>M=t-b{WV4~clDaEU1hS|VQiLj|rUgR2ZJs78A|xd-zO#`X_<+!RI- zuE6SIENeNAAj*cc?_D8C*@#6M$B!Y8YnQGy!X{qb#C)>Yw-EQ0=9_EZ6@nF~>W z98jq66*9!9P~jd{W8-&5IWQGg#t$$!i&c14SjD*_x30o{1y05y5*5CYMc|2&uL_0& zm-fs_seonT^NGQZ3QepaKOG;cfc4y1B|JO_;M!``^RV#U!Tf~>*8yv~Se4IXhDmGIn2v((`a8xPKO24%!7c7qqXy`JlZ3uLkW!xP-0bybM?H`Wp5= z#@Q5X3%|nEM+>k24A+0h-WL!Et+ptHXM lCaKps_$;{IhBmgBaaYRt|BWwU87iQ|*HDEAP=f}1`wzZFMeqOs diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectRollerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectRollerTest.class deleted file mode 100644 index f6d4950130075ae759afde893622db02c481975d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7667 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaExporterReconcilerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaExporterReconcilerTest.class deleted file mode 100644 index e6e15f5d007719743b61d6ed944d6797f575cb76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6860 zcmeHMTW{Mo6h8Ev`qFes({`7%UD@oGY=FJB-37}wz;N9nn4JW1lA=!oEi(xlNi;~x za|Y}$?9c3Bzy@sZ+kYB%DA~1=XqHlB7i4~sMDf$dqeJSPk4L}#@zXB=@CAHQfE5f(ol~X=YSgIlyE+!4)g7>9Zp9t z`rkqhotVMSDN;t$_z5h`oDscYCp}i^MQon&?6LYZkaBj;_!aY98BzD9U`BeIw!+Wx3Q2MN5iJnLu&jlEN2< zTBWsv3s@&SQ!YIhItjgT7iYzd6rPAw&uOg?k@lGq4E0dC)RN9&9p|sbd{jX=AE(qs z+>A}sKi^2zea!txd8XhqId%*6TA&>M*Ivp*lL=JoXrq{8S|}ouV@f8PbgyOcY`Jtn zU)`?xl$8<242#3PgyDlU_{dQk!yQjM=;7C%x?V?*O;}o7^@YQ0jw1u#jObI0uc`gO z3J+0>#-D`i@IDg1f+9;l;JwOJ_}c2 z5lbD*r)wv+fHBuZ!LlBB9j>-*4z@)W=`eS9n3IP$^X5Qk0#BQNQ}qWcE4S3B9%Myc z!?)ISN428x1x`lkRr>-rw=hzoc3<=RLJNGRW(yLb;6Q^fHLWLCi|`i7|B$5^GtCua zC4HvYo*G7`xdN+z)(O*G5!QZ<3u=6L&$sbZ#YOZ^3? zVyXZ6UbFxo61W!M><$b11-OrY7EUIQ0(^Are?uh8aHy8h8viV8qYBk<7qHTge?RiD z2s3aATLo<8por~qtbG~VSKwvrTZB27$MXzgufhTzuVL!}vJgC%e}?N%7hd@hUi%eW zIk<^O%WCnr@HiWx;5NL0EdqCdBI@oCwS?ypTMn-ywl@>l9w)NBoq_G01h(%J*_L0B i?e|2sl^0_p`2@BcyocV&!Ta#B^%Blr1wMd#@Ze92srESl diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerClusterIPTest$MockKafkaListenersReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerClusterIPTest$MockKafkaListenersReconciler.class deleted file mode 100644 index 0d850ae28ae4a8f3bceb949d561e95f6b284965d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5967 zcmeHLTW=dh6h0HuuDzs98`@H6p+hK;aIv{l;ZmuM5)!ewC{BZTW4s>Q)9mi7W@oJg z3Bdz@h2MY#61?-H5NF2TdY#x_Hxw15JlMNC^Ub-=IdkUx`PZ+%1Hcz>$AK9F-zUni zYM$uoBi3bAA*+d2BK%HNWy}@RQdRvRO*B`70hS~@Yy?NuuUPAVc>-r6u6DUEBVPnu zt@IXb?Cc@k+ndrq7y>2(qyw`AE?Le2i`v!g#v|@)0_X3FNa%Y6eq8c0v|w7usODK( zeHJxuCt$iIRk+5PP8Cn?cbN!SLj*z})x0|Q71!H+P0Y9I3ZD-Kc4ew_pBqsdX(W&5 zm-h+GuE-{LpiE$XAn2-6QkCF&a{1?n5iXHImp7>|!x*_6Iccn9Bj923Id#i>9Zs9v z512ww%=`n^=5$fWO5fI%%+{5@tp@{{truxi@`OfG(~xPuLp9RmhcTKfPZPaaG2W~g zQ7cczp(m#ZW2rR7r7hM_!oNd(78$k;PBTT1Bl~KcAQpmQc;Fh3<^l8dOWls6L9hTi!QO zV$q2yGEN@NdGJOU2f`PcCMi}xSe-kU?GKdN{gj| z&Z8@I6DvS7gDA=(Q+MIx;JkVkq) z$*yP`bxxEedEHIbdD^vgtbn6Y0iS2^zXch47Z}g(GJ{)@k>-a*aO=$ik{0tI6+yA< zo}OjDH1`tWTi)3+EUXv4mh6s{qfUVQ=Gww5hk=cc zi{V?*ShfS{Hd#CZ<(9{dTT%PbJSjwbVh{M7Hs~zB{x2>PIFxix$a23 ztSTO30v<;Q50I9Up}mZn9Zs#TS*T@hIMxxs)3b%AgfXqT#D*eCOuDt}$1$4Pr@1&A zyNhz0^{Hk0Nqva1g7k$=8(c+P^Q7qT90A^MO2h=rpWeFK*qVHNV9x@DA)EW zSeEUZUdN{ZyxrwWVL>n%=0XWB%)vRhNZ{&{H)!Pa4x5^3^vru$-fX2IdSlOIbOH;W z^jWaq&+z@hS=|u{fgikQ+BvHcD66dFM!;QK_SRC<0W%YI(T;38jKJdKiMz)-Y3Ng| z^J@2S!HwNC(jw#=SY{;xRljdKJ~l<6rmmOSxK@If39L`UB(MO!=K70&^P?9{DSQX`3YuPy*ln+ioIob8?IGb?j&M zeB;0yxXq3=869{F<<6gJ4lEP6K4gtt@Hp@evYeD}9C(kw#o;J&pi1D%@K|pLIPd|1 z3qy@i2R=dq!_89%K0(=!HBeFT&0hN6!|acHrL=`r(AV*q zQ8jCOR9`wtmHae<>N&V!>D`1^@CooL{#>L=;1;}wQhtix*KlMJZo`|f1aHH;P=WX1 NL)79koST7Le*=2m3qAk< diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerClusterIPTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerClusterIPTest.class deleted file mode 100644 index aff7827d7d6e16d51e829ab297c4464b129cb7e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8210 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerSkipBootstrapLoadBalancerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerSkipBootstrapLoadBalancerTest.class deleted file mode 100644 index 7dc4e777476d88226a1c11f57a67a9000a97d768..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8774 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 S3>2UUC3pZ8cm!33=AP$zWxB?^ zi-pe2VrOmHHP@DrxduZ7Ce#iVbz1qw`eSAa0wc!aojb(}flkL7$b1d-n?Mj7cX?AMV6J~l2Mv3R0)vM zAgVlwW3^(XT3Wn^V@C}oeT{iOcb&Z9x@$ojSr0BP6bPI)mMkiou4gYWDguxBg>}j; zTIUuQn@D!VU!@*v+;=_HySTy30HH!1jjba{IbvFzIjHQUaW|+l&tVAnyc)yVQ5zwW z;{?VG377nT2`4fRwVB_hCeDodLA#ABaDyqM!hARIOxDG?+L^;O6K%IqWdgwwo@-f> z{)8bxLwhc5n?my8b>@i;0-Av+hz%SWTr*t)XG3UqGc3}MT;~oKH*wL-Y>mLsyxU+J zyiMRx-(W@Q8lx~nCVpLU5JcBnXARwS?KWa55O=-pxpj-#{xvkXIry5kDnrovp+1@dGYZS=M%Pjvd6bo!hWHMh4N zLOHqJc0Hlv(k88Y+`Our)REiPnch|O*(o~;r{K9y$@fv()$8^>DiEje<5!B# z^;$`g?32VFHtJXl1hJG} zn?PK$G50jN&@l^T9%gTtdV7J1`K})3@iVhJ_w~SOuqJmf&BC-9^SCArED@#7>18Y= zn+Xen1euViOdZS*QJ$E*tEvixn5ifT(fof8q_Un_!B5MNS(DA| zRyM>eh|2REOZ$ZdT6R~Hu2YXw%(%0et%XX0Z2b+w$|ZrkSI8vLrLxmb1y2gzF?CPE zD)nU~&?J_<3F~h${6bj4ii^%she(U!i>CXRjGYGBooM#xt~;@bqFZQUQzO|3d-_b$ z?3>nFp_ddX7O_u4&T!7J639S*jE zr^{2Ze>*VGO_GIkaDE)7;a%(*%{<+VlD&^Z2A*j50vo$K%QCpiUXKK_)(N(q!6C8A zeF81xKk2z)izZX=Mj8SqD}f`p%}UNX_c;n#knIZ9gh83cj9yTh8->e+{G6g+(_4}N za#~+`(R8mw9K-G)?L;yHS)&`((27?HJV{~2?urB>zN|QiN`+o5;{$enXN+#Vo0Fg3 zc*k+&Eb4rNkOL`n4m~$T#Odyp08XkX_fldj1_9+BA$nt>e{{gYK6hz%uw++O`A0HT z*lIRC?3J@<+ju^_Iv|jn346?u;5`?1nK6_**qtr3`P{==yyd9QJAo^E zT72E8xx6uV6TRUMfu&>x_jalfI4tl4sxT~COm4B2b_11GXTx?z%0WkzzoIY(f!oQ# zNPu>CHauLU082FRSx*Z5N~-EsU;#x!xD!)U8EfTUssk=Rqkip(=nt>Udle1vo@696 zi3Tfp&MCHii)nD5z?sCoGr`Z zr*GEK0KqvXzt)(_K!X+rQwfU9rZnJ)gEFZGYbfS+>uO-*t%vkA4e-+B z;MM@C!FRZ(e-jc$2n4#!eIGBemaz`^;SAvQ30_SdfGHS;5&Sm=8jRv-2LBI07T?El zw)=h%-w(lrqI(S{@tK9ga6~Uj#@Q1hqZP4%wh?x6OX zhO@ZCTljVvr6H2)cR2T8@||B`_D@Co9{!G~nPIqq|Hnfr$Uz?8GVnff7=RBtR2T6n zxt&+Kb-7)N;Z{@J1{9AExA3?U%j2UM9<3e^0w2S*h#Yer9#Sj0N2t~H7#>cHRs?Qt zk?4~Mw?0On#&G)~h8w^wm`5pYBbNav_Rt>c$+Zx}>BksO1U`dOM9a@3a`m;m8^i6V wSZ?KK1c8R{ zS?PfJLHa3OqiHVEe&F%uw>&Le=FvcSY0GZ;0rR>G)c0AlW^bey=<+JfanBQ8j;=EA zdM4T_L}!blUS>fB;WZc_Fc#{tsnbXoYEPLJ5E#g3at48Mv%6JB1DwVTfkRp0_yKi- zDz#f|7?K2rnj2S}&FcgXXA8MvA#da>OKpUt9LmK^))T#bxSl|Zif!(t|w|XYx=kJRI;+d z^g6R_>4=W;U8N1CU*cjqDxK+0=}bqZ(_QG4&LzDrn6En`(3>={R`dWd*}980(Tj=2 zIW3EGTADijVj9|Z@}?`iK*yuYwB~W^hHgl~%1D4!$m`;vS=O1pN3 z{R-Kyklmjh`xWx?S4jAZ^cN)s@?JMq?9tfT4!G_CHNn<@=PW>SdR`w7KzcfQ>`9-~la5?lKx}#v=ABRUlKzKH^|66 zDYcw{H`zQAH$F!jGm=FJxe+w!pg9}LWo&z97^Vqa+?_^276qvqx{S0Mfs~n%f5@{0 zj!3#A>oFRzh|~$g7G5z~Z%By+Y(1EfVH+~#3LYAlhsqc*w&-r2I=ZcKQL7TeLvP0aX+-}J@jmh;+r7`r0z&W`TDa-K& zl8V?RDx%E|V(>!672$Hrzwe2b>l^Eq-KrzlDS5JYXVylx$>u&1hvVkxi**Q4 zX`{`N+?z5pUZW-XzP2JXHd*EkhX!HT*8h8rw-xr@MKi+i=cv=7HU`PY0JT$1K$qcH z>|{E%76n=%Qe+3)#n3uIJ7*J< zQ*8&My^PDzxl}n!$2~5a%C$aTb!WahWE_!3HoH&384Zfa{cg>p2FS>chQM9L8dUJs z^l8%oFYU>`<)}h6_#C<4a2IcT4>zsBV~Mu?@u0z%l8N5JJ8SR+HSAP`8hnj+YDWTE zgBsqTu+wOOxf|QwbTq(b(8J-kpAi_O9QS=pa0Oo*e7FcmHRFF6Qg9juVF+g$&Jr+; z^Ayej$AdlVBRD?{qv84(90|v9m4%?M6(rpOk1f+C z?H485d_1(FQ3YB8K7|G46GYK#hlCQr3~M0=4IEG7^Q8cvK^Yd|Av}UF;44@H3Kp<` E02UMpRsaA1 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMakerAssemblyOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMakerAssemblyOperatorTest.class deleted file mode 100644 index 040a1156a3db20814c71b62763fe4e3778380fc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7103 zcmeHL+j1L45baT7%aTJbPC{;kY|JHgz)}bS5<3YvwoF81D@e9;fg+4{NA|?KJF3}T zVMFoG8{fcBKowNMJDAM+;9OO+2oExj*gUNwZ~q0)KVje=0iFUwQ5R7Xw2zr3LUO8N|yi^ zuHwtV*}{CKI8}W#Ri2wEe#mI3v|&vZ&iYHxdSOcWLCF1Zk-L!?phNid)o@*@;ql=b z*TY{kI@!?5iEN>7DHS40yipYz%LM~8gk_*RwqgP@e(ln=%TTw07868=PYC`)0QajKHaOuv|9}$ZF>(ZCuO-B1hMi&|FpHhxU(+EH};#M$w zK0p`QVSmBbB2aEqIF_xvhQxx{MGL{Ixxx#^t!!p~Sy+y+U9)XggWD@G(;Aj4*Uq)v zdamW#xwi3PJ=caUM~T4lRcLuUw3n?Am}0eoTudUFsQ+f@hLkm;u zyr!jn)v~#7maPeE-O=Y?v%N7r_`atp_oB38b?jxxUWV-a|M~xBNZc{>P{Yr(p3+O* zTzHmL;^R3ArQ6NuJ;fcHk7sF5_iRaS5Vwm7&)IV+8L!a>GvToHdJEq8Wjf#eLJ8w}3k!vzg9|UKh(cRn0|m0sj_BG0JAPy$^O- zVOH5IyPX>cxeI z&>R2EA|_G0#NqiS-aJ6B(inK7k*!RQVJr@n@Ew6Z0A+`5cI{%s1(a4NMplfhn9B0rR#D1yBTB#fIh=X*?Aj zpm!O4(*wKmWJ;I#Z&v`l6jB!K5;tW6HmbBofkog&?vFzcU3kEEH2M zW-`u%*gI2OAo4=78cvu@=r5Tsu=9OJ(>vQ4^HfmY*+fPs%<>BjXJh#}H7)D)wqct_ zKmu;jp5fAsG;(t5P!%~U78;CBZ;uI8lUuCXylmC zGll$g*M#EgYZ}g$(Sg!Nk2H~{yC66_n}{~CoFN!v_n1y`Na zI|*o?#b~J*LdmxwmKOSIn-(F#4F&1~J%)Uiag+dZHqWJv0MB3f~mXx}EF brRXE%Xo~L8CwLx2y_M->s?q}8qX&Ni3)+D^ diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperatorTest$StateMatchers.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperatorTest$StateMatchers.class deleted file mode 100644 index 9ff207eba9d8a42e013197bc530760698179440d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5199 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 LbND6v8eaP^vbx&= diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStateMachineTest$StateMatchers.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStateMachineTest$StateMatchers.class deleted file mode 100644 index 475f2a639aff627b4f3c65def2f28ddc1d0fb45c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5032 zcmeHLTTc@~6g~q;+qDRy;N@w8KEO-+;)4-2DNT*U77{=VzD=i7IW z`tFZ1o^6Y*v~+U5z&zLZM3*94|l*Y*j_egz{u{jY>;HRS{Lxa}`>}KlsiB}#@>07fD%GGx)*I6}g3d@>6mBuZ_BYrFrC*6S?h|Cao$qgV;Rcs+R6><} zuA>GslA#>-QsW(6N%P~p38fWzt(?(=wy0jNHw4aRk@Mqlxhmd!;$dxb1-$v3%Vc|n zo?$V%FU7QIt?3xdHlD3U4jIO_^PD|V9Pdu81w3>rj*g73c`?yl4`g$@(BvX$UD1ZG zqwDcEf|W@~sR>J?P;i|rd60y;G~9wa1eR8d-ONV&>|BpBAM-^#inqdgS(v?O_a?Ad z)SUVIo!z`sIpb>55;!VeB_}grM>{tIv`)a=ZDnrW$SA5O!yC79Aq3K!N(qzqql^kB zksc8E`0oNHF!xu|ia>G;x45_3I-r25CCr=wmQy$avsfnZ>lxM(EWK}#JXrL;K>7!M rO~E`qBMcyR0iWqM3hu%peoezYd``iASi;i7e*~7{A-+9o)i3`BrRmw` diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStateMachineTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStateMachineTest.class deleted file mode 100644 index 522b5d532989723649ee51bb147096146b4b007c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24990 zcmeI4dz>3p701urZa2Hz7HBC2OH0!Suv@yjJj$zE9@#XdOS2D>bW1C+&L*?F!zP(H znJirtQB*)s5g!OBDyWE{0)l{`AgHLIB8UhmpAU)(h>9XA;s^EI$?Hz$B$G@p+7F-p zK{qow_j`Zm+%xw%;emhOc{czY2mkUx6NBwpBi>`GS+nO%Wm@Uc^q#C~XsNTc9zCNP zim4kt@nkM*sz&*SlFh2AvE)q8W@UUziKt^rQc1_vsHvFhfD)h7(rOHeK4@mJmxaae zCwhj)&Q#+jgXT>`(HMgT;qq5etTR2)%V1tmPiIXfZH_3(oZ1R)4BC=vZX&78VwE&#v()E(MTv3=@0aU ztviFEV61;=a5QvkFf`0RwZc9OI)j!5^pH!4sOYmYmQ?XNjd9WRbZAFh&F~Kl7Ka9g zW7|eI2R3dFAiFOR4h*8#(cw^#!NPDw;4^9*W4A1@VZ&%&WN0&bPZwMf2@MR5glZej z&--1FIjkEPch=8fZ`=K-YD}vJ-VG1v@hO{UD5Yh+me$PU8O-YF9KjY3>Iu~cD;Vrq zZu5{~=te87Vtd`TC2go#Jvpr={Bb>%(UJ;}f(o*ijG7;djw@q^7C*)xSJJ%NG1Xsm)VpQD;X0VREw$ZIs+o1WGvtkwA=n|C zJL<^zUD{4JCfr=ul}rkQgq!3>%+jh^7cOUN$v1*wd5CrM=KtRCp&h20PHff8NkXdM z)cuOzoXM!|Z6o|qw5+pyCgU9cMdSWdCaJ|W)1S@ZoExV=I0ZIxah!Ym^K<5oPQRA* z=h6vv9Ou>v|2TewpOst^Go@_Z?H|CII{yZ({7RZnZt`HksJ$&}O}1S$?TSXuS+9!| z&H{ZoEt%jkc1*~`262{axPX_625^>KwW4Vyzg%c<+qKm>mIGBi%0DT6DrU19NK##y z*d~E-T!Xrs<#8cgg}T&R5kU!U1qFgMB)jyIFkaW6v-S#e=!j zm}T4Oammc7(4|*8P5uP6g`$uwV zQ%kA+>1i#iq38hLys)-pP~)6%smJbZg(DdB*WSJ1n>VErwfhSOvlZUUqrh;nyT>|? zX0XY<5Mw1NoTeE?&awnVQaAL&Hv#K z9p6q=cbL5ux~x6px^DJ%hBxNSoS|YHwMDgww8AeKBU#q9ZKK5{Q`dj%c0DsH$Ji2J0MYg_9XRIxWA?#mP+Jq9`Z0GLu+N>II$11(d#EcwN&x+~8hMv*03hu@$ ziJ8(#27@Klv#N8%2d7{^z9rHhok^PtF7ry;_AOza>zEyQzOlhQV(z06?&{N81BpbR zp-)-uPg_LPls>H%jTTNBPKQxsbw9(lP5n?hkQN}GnmKS{D zOYK4345jtl#N-CWET1;vF-*GpcgJ6i&Tr*bq7h zj@U|h9S$P~OACJVDT$MGC7HDjPlS9WzZdHF)8)mw7g#Z{RlvYH3Bkm%-R5zMPHCA< zijh|%2&u1tpzJV88Bv2Mb){3PqXdIPIJu(Psz32{SPQBxH{IBxWdD>=+nm8#cfH)p z4Qf&;cU7(MR?I-xuBI`%;ONl}i4r~Tbo03641)v7TB4?&$*2h-yK34Asyk})M45{T znT3jRXtg-v7%`{^C-E>_6+~4x5)|c?( z(X+!UJabpi;8>#8V&t(i=KdC*s%S2iQjGF*;i0VHEfp-6dPP^e9j?|a%;4bKeilpP zbl1gF@L{zZQ&ha9mSP5>>eGb&`sWD@j^LUCIa3d0@Nj=xN!oHfrWYN>wk>`{pBpG8 z_8QI&7-+NNy zc$lfDi(jJ$^_UCJSg)`Zi=)FdU5x(nDZ|AcXTQ~5?C+Hf2X|vZSyx3fQe;u$GMhxFb)lt8VX}Hp$CF%irI;8l z=7L@;F z+2dv^=(LuwHL2p0xs*SdHkG0R2G+{2!lJ&cX|SZ=fwiozzfSBt98T1bh;Qxk-V2kx zW)(vI*JUs0KeRr+*bFOhFT+JpVJpLFCN`L$+RB64)`I5zj*UZtoh>THt&G}m+-~tK@W`4AxY-xBP^`SJ zUA?stQO!=Mw%qTKJTYcVc+9Pn9KsZTVo+liRqx`lVzQM#HsaID6M5a1JJtc9ZO^*a zEA~Qzctr@o3VK!{#&MA?j>54*dsNREado4{50F<9M|8rkF09wq@mCGu^1EtyVm2Gs z+Bqydw;z9OU<8x=op?O^{WXKh*YC)AmDNlG{9Sw1z@wdcwrd~!7EhCfLn9wN%V3eM z1w+MC2Om6-=hyiIKp(uoU=Mo~eDFs+lCj_8XQMuN5r3mlai1S*`rt2kpyvD{hf(<} z{*1)&8j}zHhGDdh^L+3R{9%jrF^1V!INJ2VKW#sE$-hB|As^7PSzMCD@WsF^zA}J6 ziooCBw8LVU4J~-(!>cA}#p`zAdJbOC6R!8b>%D~Q`FOpzaJ>+(7s0;BS`7OY{=Uij z%WK--s&NS{#lII|od>`&{MV0HYf%m3-`)kww=GzCI~;fqUNu1n{>#+?s_evn=jN?o zH5`IhZLkIjv!Dw3@yjueK8A3C_dpySWIfBOEy%KcN^Mvzvo;-`5CtM(bOwSW8g!ffh^OpBB zh_P(ed@{BdNzl2HBws9nOs^&1FM)g{p&8%<-tuC6Lc2$N(Sn7~6{p8iUIu=)8&~e_R6jT9SOZ z1oDjp8Q=5_Dccl5dtkzJ?@!RRZ}2f(&qr$JpLP&=}k*K_`7W@HGkK z2T9GhNgzK;kO6M@7~3ZZ8iP9|=zM`Be_aCkWs-cS1oCSH8Q?B&v7OyS&=`DU=XK6r zNRq!PflSXp?v_BNW*`9fc#Q2KWCXq?LFaKK`CbX+jU@R#3FIMy4DfA_v5gTl2H%mO zbDSi9R{~il$@fbj)9*`t&tq)QA$5LVg3e1w@((1CFDJ71RT|zDN8k{O=k3^eSF2!S}j<1HXgk@J-s^!yn*J@Mm}l->H2W I{tmDF7n(&~CIA2c diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStatusTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStatusTest.class deleted file mode 100644 index 184f4fbddb969d7b3a3697ea02735d53ee32b2dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10059 zcmeHN>rNX-6h1=;zLbOnk~Ej5-Ox)QEq2@VlIB(s*Oe&dA`D28DxvXufC=jzYi1Tf ze)k3XG?iMl{okkPdsK>g#%r_QvSf#g5o-L$_KeSbd*+-u*V(^b{rU$0Jb`aBFhF2g zNw=t((#02an-;k!DlK{AB`=C5lT-^?biF`nCZh?e6l>JH-Qp}=-=a&bMm_4gtg5LF z)G}gaV35G279jq!QCz6KV6G-`@!8VCY@Yy!a;dUXUB)MvRn^7mQaKAF z1g^U>;EGMT!q-xGQ$B4l)ub*%fbJDp7$tCL%j|0EKTC{=rrMGqF!Y%FTt6jnZentk zz+g$#Sq9!FFcPs@mQu(p+#sXBulSNF;cc_JM zuv$3W6GA?DqbZ~|TX9_Ko9ES-)7jx+NsxhcT9e#;kOmg9+NV5Nmup7_=r7SG(3i=;MZf8UUT zgTHCu84KE@E;w`OWz9cGCnVZ=U7|stjoD_b#${kTQD)FY>`VHQCf8oU_O5|g~kPTMvzj2b{?+5 ztzj60cL-da*x!dU4X}|4R;}|vqsHX2sdr4nPPo)tZP!2T$w9rz6@k@CFPe^z2wZU` zqngDnm%xt+T<_mU!b}{Pit|*yL!tB=?g>$eb6+Pkq{;&B=pv170oCJ(-ju|5Z9vha^O>?pHi zG$RO%8NY~Kd6y~GY0hWiK7sFE?-^U~z2MT<*HQ%XRS`&+ea}r};db1pqAq{yeU=P- zjr5UXGVl#nd+{Y1z*fO%e9n}-8F&(VYbi85d_`z3yf9eCI|c=J0N?t-my`zKCY*;M z9A$7c09hR8Aip<$3&$6_#ussXscU?>wRQ}y;EJn=@CBk0{LcRd*Pf4F{{?RT*}}bz zpXMp%^IiNL4yoWhaBu|3&v+NYd7KFm-cLZdn}Cpm58--2#@~-UU_Q2 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerKRaftMigrationTest$MockKafkaReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerKRaftMigrationTest$MockKafkaReconciler.class deleted file mode 100644 index c3d8145cb2861d8ee5489ef367121d0a8e6bb0a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6240 zcmeHLZ&MpZ7=Jbej-*hKT5WBuS8OX(P5f_dD3!)y87{yOisLxG*jyH}<#HQ$Hxc>; z{7BB|jK23nsn6}*nGi1IA}!PD@FKa(=C{xP-F^1=*WbVW0RZ>m8w)Z7ep1pcXr^@G zDQ(jN7X_syZ#?4#(PWZpAq%e8Qku!m09A@Ls@_3imG11(P38*Up@vCLSWix^QgaDSg$^1t|l<*ik6R0vO-{Nf%{x965w-AET0>xMaPIM zIu2L5h<_^4k}g}1jIFeqO^-7f!M2%HXiBM$idZyOW}4QhrWH*!D^s8DB7AhL!daR-D*}3dio!K?!dQ>8)N!>m4(w^laA7wWmXEz^Zw=)oDch;^6rfgqm zyFs;Ew>8RS`%O$%w@j>`d{966z|{P38bUjHqba1eaq14OO77mZUFrvFtIUoa?L|gz zoFUJm6fK3b3hAt)v(>?0p`D@4q~1^A&r6LHa(9pmrv@=6mF5jL$RY!5Y3@BY;Hmj| z0!5GZHS=rVaa~Vv+t$LSwmxXGTo$`4y>HM#lQjTb!M4&*s)25asX&Jt!U1ZB0-M&d zufR5yoMMNS%ce3j6)5PBOBlwe5ACZv4ES*94eaE87P9s&^TSSlfb?PUrSM)5x85b; z@9;qhj{Ef|xTsWuJ-O@#cC$M|HkO%b#nn=qVuM@d9@hs66S}MC1XEXARVICgjcjyf z=&Pzz1*TdC!NbILLxX!!fA`Ir>Z`m-ds|W zavr9z6IWBO+%+)^Zh1lZrt{>`lr7w&60GUfX6D2m54z04pWzy?J zDlHqqWjF|@E_swUDtNcYTVXmkHl%QwQk%lVE8)@WS+6~3K~1yph74-7-w4UXtKR|J%E>MU3hEpjEEam@H0<%~f4DDf1Znejo}!*Rt_n2{45M=1!ekiv@e zqBXz#PsIsb*oiC|hpPl`98Yl}!-aI6jEP4A*XKfa0#2``icZPHzN$FyEVlwW552p6 zEMURe7QBWu9)YWyNJ8S(V8w59#j$d_&MpEuXT8m&;!EFLRzR;p1a50gboku3tgwKNak%$c= zXu*d#Y+SUUfX15FsCX>+n7|b?lEkfA@F{^w^LKo7TJSk?n`Wr9=q>n?z6M2*RU~r zER+Tt2%JNX98(OVFotjE@ZExO$UqicoHFz8Gp(WSh9UKd^ z+4zjD3asxh>xTrZM&Sm|$-peUi%)=?_{pJE0=M8jwD}?az6O&p2Y28D$iqkQ3Htv9 S+=Y9v0E_T7ln{}DTmJ%p4MgMs diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerKRaftMigrationTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerKRaftMigrationTest.class deleted file mode 100644 index 04490257c0422b6219ad6aaa26ad84e643e77d38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6780 zcmeHMU3U{j7=EV(wh4to5m7)~5cw$5sGuT6G+ojfv-xn7wt`}vY^Lqd%}(5%)Yc#3 zjW_-a&(U-A-Wz|9H|jf+O_QeECWXTBczQvmGyBZ@HSf&4^YF*tzx)OO9|1F9h`{48 za8r_nGWCS6(G(Y{PzJpIJx_@S3#b%9%JrI|WI<wV<1{Y(3JNvg5P=g~vPb>pRI&PmxspJlkj`hyrL>hHFm89gmr=LBJVoG`CHzoQ zU(Qpn$wnYSV6?t*)2DS7HmJ+6YuR(sF zki%kZ#T{D@etT402T#p6_!qs2Jg)lF1F&U-mWII(S zqvh`mv{UtxSraTYeId;{mF|iuQ6^h&U^aHk#LY0NHp8Scb#iYST6Xe!Lj=;qsY|pP zaQBYsQeUa9GPCVyFEVoD0C^ClXe%6KNM|1%><<1vIvMl@HGn_=X`Bd_`?>JKAo`|~ zyw3Vrq=8Mzy?q0|Fdv^mQD$8-zqY{TN{rj46ecz0MuR02x?s|1RZ{fQ7)WHG6C&E`%PbiXJ1Sk?_ykG!4T*L!LZX@g*amar37{Tk%1j+xEz9gUB}!93YArGjTvj5WR5^qlrv zZby7;|82nzX3{{x&F>I5n^sxuHtBU@AT1@8*(#jU@+hyDk*L5|;b3l*0^zbSbcBab z!tKwqUVF9#YDfG*Q1=wn=)ARPpMVaE+tbzfe6JpzFKv7J9au@2fYc~lg}0H_xwf4O zQxwXW&3#sA*6~!Ys5@J6X2PZ3d~}CLgNNh_4+$*V&y~_c@+VPcNK>)2=MgyPG<{Wl zX8koDax|{%cvPg(bQ?M~0v{5%xI5j0Y!C8W$Re^pOHbPA=x^x{k)>W_rT zF@|(nMQHA^B)R})JftyH7*u@?shbKJH_6uJlnUw*TaBRDiEU!H%ZlU^xUIl=aClXu zp_BaiK=(U?&Ka*84KBI?k9yzXkU*`fv%aq(iy zG6OzW#HJ#j4L}a_nEtbU?HMqK`t(p#{zUw!0Sma7diK5n50T~FRxKLvC4uw1)nEoZ zR*Z5)ez*8z0~XORoo)tDoGVBhv5kJ z4D1cT2=$){jyPAI~YTtm%y8k9z!PY=sSK%7|UdP^Tw31+({1ql1j=%LYO#Y6&A$SLWmDPaO zzl*=4Efn0s82|}*4h&ofv69XlX-Q#@#J4rUsVr5LhsyqJ(QZ ii~q8ioi*&A$Bg_8Y$!kp9H_uNd;yQ(EBG3|f$F~;lW*++ diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest$MockKafkaReconcilerFailsWithVersionUpdate.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest$MockKafkaReconcilerFailsWithVersionUpdate.class deleted file mode 100644 index 7f01a06c4060c0a1a667cb9df9d4f2c45645a12e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5740 zcmeHL>v9`46h3k;Yi~mnLK_N&vQ0}#3fNo3Gr8;Rkji(g{cv+gf&&$F>t6>fIplISz9pqpHjM1SV^;iRv#A znC+`yQ%b5LyhP@{-xCU@_&wHiJlP4jAE|c&B^y5L=m(Bn+HEtZ$vmGb1O?PPq%Gzw za#>DdSWaVDPGZ>aNMpF@G$qrHkjCjygfL!nS?usM;Azb5v7qie~}><88UiTJbxL|W6B)m*cZ+P zPO4Uxt7is@PIJRMEX$$@*frcgd*GP`X_qz*(EGb%~6C7 ztJDl|9gAf#ET0A?<^n~9X;K?}`)%G6dg&s1-EX8wtGv}77U8tP zeQu723>Y-}9}IomZ7?Mm)~i|m^r+$#%W1nb=u@qYH-TYGV$i;^2e?umc7qJB|BIkn zeE&-CGBqgLMCV4Q+PhHC=$tbLtyo9usSijlZdDm;TnOPqiGyuaR`)D zN?{SWu@no5xvZ*N^KrFRm)-Slcz~j@r8;kk=rkp8XC!#V-Iu&seTaju?{r02=52}| z*BmEhHKbl5LJ8-h`V3n{1Yr_v3S{3jM}kh6N62td z<+YCq%xntWBx`<1GieKM6WDtp^GslQ465%P0#i{yEm%eZFOI1N?_zi4s0Ht%>4SM- zK?V7_6H&0>Ljsqg&Nv_zd`#eSy5wS>(1K40TzS4P<_<0RjKH;Y_e+n}lp?g?bL0lY znL|^yxYk(T?P6hw^Hh9-#nvOK4LCqx0$Ef7ufr5fY1zSb93JZyZyC@;l5KDOVuM#GHizE~fL*O;E zV*;+@cLCmjH}M^6xqe+u`ZivJbh)}KY>na%(J diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest$MockKafkaReconcilerStatusTasks.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest$MockKafkaReconcilerStatusTasks.class deleted file mode 100644 index dfed6f281e7992e05abad399678547c26f81cb49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5964 zcmeHLTXP#V6h6vr<85d{XhWe;wrOaS0ydWdrA`AGPm*T3X*zKdhDUj=*lN}*kEAsT zzk|QQGc$As-uue`VK}Sx)^6B%H*^|kCJ*+mv`62$=tw&Hp8fUP?*MQgzO!J6fL78g zX{L1P3GL7l7bT@7Z~eqeqRk}LLY6!~RGP_N2UUu-YW`vAA>G@jTg(%I$9*QNn(9z( zBiP)A@b=TcQnjxv7$Goa6#6u1ls0Qmn5PMhxtnWiD_aC++ys?V%|+mfMuW*RN-Xk# z>m>qr=8uS!v8_ZXJ+|33yc)LKKF49Mv824POJJlT>db-*1SWgxSELkj9Nr*PKkoz* zQTz_8JDzB@xo^}vZ7FI#YpHvVUD$3ir_MZ|N)&2SZ=W`pGs{J>8@OT;xMDYOy^bVs zvrb(w!`Y>fcztJx-^kGb2muc5GcrmtRir2J_dc)`JdL9A{!V;#&-hgn_r+ zO)RG+uN!=yBd>Z9r^)sWmJ02Ljn`)0oqmZBf<*Vx_JUSuOws8#4M)pBLbsl zYApB!`M-E}EGS{O@y>$J(BA%xvfvA(_l~%3!IuOsn9eu~7JN#2%o~|I745- PUAPB}@GX8Df?IzBnCY`2 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest.class deleted file mode 100644 index ab9f15b85962d2f1ac02e44d0b55b55b78f822bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7712 zcmeHM-E-SS5ML!tWV>k-(w5S1C6to15SLQ=l{Vn2P6<)$5IYIwE1cy^e6=ijPG^(y z!UIn{@xuSo8JK}rhW~)Sg&BsulbkrMVk?GbppzG!?{4>ZyQ|gS-Os=O_0ul^a1W|F z^l7l{b2}}lFVc@mlcbrK_629PZ&=!^Q%;1()3(#_1?AfV#P?~fh-mml1k>S=1|tg5A?`*xUwTY!p+Pd2S;!U^GiFwUQEPj?fNQ!N(;6HxJ=Yh+ z6)VJP&;%qk7?jqzz6L|4wOlA>m)0am0)`MyPF1B58YEV-ONF_7uAspQOBuF8xz9W| zZFyd`QAhCp#o3Go=dDGDh;@(GW+~dssh?>Q=8zI|n0SI>M?<7F^TSN;AzFHT2cB6$ zk0{C|&HS2~&&|#~)ZnCL22sj~QA0o0ne-^tvf9M854Xfj5=_lybH&11Yl=}<_-blk zJ~KOy3VN_K3J)|X7n^bf{Suova@?;FPRpwvuTq}fq;><}7KYv0If9adcbUt?3`SsL zaz%qfrdOsqysp9U_AAJ8?(qb?p^f~w>|#(nr%B6(?bYfS8-Z~&>f9?iwC3M2QpsY4 z8f9ub(g34Q>?+xy#yIn)!t9x9WzSTYJ=+7V>=`%89`y~^6Gn{)yJ85$q?>h2ly*$a z&nfwur=+P(vIYEz9-7hVcEk8gByb>BqPZZ24jcC$zcHUx9_UvS@o@nRRsZVKv_SDC0p zgwPP4K@9PvPE$#BuvF6W+}uUDppNYShEV%qy$fEusJv$^V_x_XI;mu*Gk%0Zdl>$K z>U^U_xl8f9im~h%#3td4;Bh*YZ1*X+TXeB+&kDf>s0-?UQ7H0G)y0n`yt*{FO?OX? z5Y;4IkmAaD ztZ%b>pkl$q63Uc(!HF#v@ZuR=$Ya4Qcy_gO)KbYfGB2s?rV|nfUD6}2+@2F#Ri>6! z*R0-?bPC4d%^|n|6UgsOJWm}-USrr|F3mM+Sc8kQwn~o4vx&13*4l9Jkf<=ElUA)4 zLVY3Kk}OfAmuSXuG&r-=aOE*)&TTTEp-~x0J*Y~7HXOF@w?wBC@Qwy!ow*mJUXbY` z>qy5b^puqef8(;JBu(;6Py?-&G>71M=cF5=5S>)D`WYgfvu8Jn|i(ajLThrj`uF~=#Q$Uu;tWXo=*l5*2Cm`SOE+J9$}5k|5#G9QbWbBfPHQrFr(o}%(VQ}VtzJm=z8 zXF8HB^mUlm;M*7SwO*9l#WOa_jP>Qa2y;G2XbmP~%j%HRKRU^;9dTfdX-)`9K#=OH*(U_ymi zF25%q#sIl+{1@afoQ44y#Ga15K1g6c)z+8uN8l*VorYl;QSB=*s@h|4T(u|QRn?w^ z*Hn87WdTvnz**IvgY(!9;~E#hz~>nDuH)*Ooc$TbAB|po3YUJxULQ>2Q(6OP)n$AR z1yXPY-ojoI-bREzmuH+w{T8i{tRN3=g8(QfyM_Gcv8o!-#2Gm&W1J)+%=M7!G~TJ$@; z*Be@2BGR^*9?@!%Xz%xk_FE*{2fd;7pNl|CK?d&QH)P^h)CUjZeck3QAChb*TIefWIuR diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerUpgradeDowngradeTest$MockKafkaReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerUpgradeDowngradeTest$MockKafkaReconciler.class deleted file mode 100644 index c5fa534e09e517c0165eece8e3ff578d5ae26522..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5640 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 O;VZZU6&xLdoBsem9l&e= diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockInitialStatusKafkaAssemblyOperator.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockInitialStatusKafkaAssemblyOperator.class deleted file mode 100644 index 49a42c08d3c8eef311adf902fa0a604fcd0db704..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5730 zcmeHLTW=dh6h3Q`ZtMh-rWXn=bO@zQxY*pOaH*794Y9ImP?M(OalAXWr`escW@p`m zKZXPnyz?vgC5SV#UfINUc7swBq&(Pr`{vwc&Y5q{AAkMw8vuL<_gyGCpkn3MG>diZ z1?|%sm$g_c9{t2?vd0wFQq}x0i8WKh7c`Dp)C!MkTeN*ZcQw^XyoVz0Y)k*3DY)h| zOy63-`T)K&5a_~;14~w2NJXc%(|W;t?ZBl69LGL%;Aqv`XG$N|y&poV+fqdv40R|L zulFerX^V$kAJx4Eg0`uk9i|Y9R=t!e_@0T>?z;Ds#WGPo%M|Y>yh4lE8We5{mIb1?5L{rOCw88Ym%fcP@%p*5OIL3&EILKel}l1h26 z%SgcdkSYZAsDFS4k`*qigUD91$W{lD9lppSyFvoVVj`p_5!HT|Xq3qgdl;utnK*Y< zGj~;EYV~v)QagFnlS&gD+NLeV{rkkH!l-RAk~w-DIdJ0wc@d>SDqO6PVIKWovZHS* zY=Im;*Ep#bl7036f;uOhJ zrEKWp2#3oF!0FIqbTCKyY4H;oWR8xEk3Pf1p0tQ6Wlze3q?aSclInu9VhH*GY8d)- z&AZ6@#iU|7x&{k@?5fUj;Ss~t$=1V3^=(vP5n0nPmGXKUk1c1T#Kt_wDT{fO@Gvm> zIYy&L{VEj5LLhtG;l9=FaXhEt>8F?t{}{4|m20Za!;Hm)Qh>)hDT=8`4}sGcT@z~< z6)!R+*zQaqTxc+)-k z->Bc~D*4jvR5>OT#l1pPr`5pGY$>L`0(0>C0?fi24qRLHhCPt98rdGnqKDMsNfIGL z*fa5QVA+#C4fh8-`{3n_?(*0H?fv&Hrn&=V#gNeW+?aQJ6?;MH6Sw^ulisYp=4~XV ztz^)M~X6n!3ZjKsR>omdU%c*V;?UY~=v9oRg% zcVt>e*?^N*9E#qxjjavq-PL0i%XWis_L>4+j_sbHH?i$SmES#bV4*2+k7$IZ*A%-z z9N0R;33A|W(JtWo4$P0xKNmhgqbKqz7w%zuFr6$H)(|!^pI!LKfy-k|&V^4LxOGx1 z(S@1=S0*eG7d~^~M#kH+c45{>bm0pJW^L}d@D=tB&BDL{Z>M{N*;8>D%ss&xyD4K0 z1RQt`d#?Z`yqkqf`0wJ=m-yCPE5E|rkIR*xVc~a+S;T*X0mLrh|AM`*z-3s*Cx9z( z6-QpfyAoW7H}PuFH}INCE#ZAC^{sKKrTGa`XW^!mcMIOZE5N(>tDsa&B6tsL!`JwH c9p9|L9k>gt@F9E*RrnM>M=!p?ZzZ_>HxOK_F#rGn diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockWorkingKafkaAssemblyOperator.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockWorkingKafkaAssemblyOperator.class deleted file mode 100644 index 55a3398ed3cab7d0e198b7bb5e3aea3c17be4c54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5712 zcmeHLTW=dh6h0f0ZoCa7O)nH$=nx7`xY*pOaH*794T-X8P?IL&alAXWr`escW@p`m zKZXPnyz|0e;FloI%z9-L+u03DQIPUr?`6I{x0!S1oAdi$KmQ5<-@<(trW}Y871T6K zbnQ9q(HfVvL@OTu$ZN986xCAIf+$TiQ-c>YNm$&Bj%u5 z11{QjXtfXA?u&9^+JObDD59cW+ipH*fp*~111`9J=)lpkzsHn5toz?bRJWvx*BDAy zELrVQ9?>R`xIU`;4FqjbLEB6r6zzE-RrnnfnZ z(c|2V<8D-+(m0Nmx6SaY(^|jz9C*^ zx5G%tf`}>vb!l*b29hN%tNoZ(^O#oqF&(_fW4c5_$r2)@CNb4PhiH_^4!anqVVO8< zRWoZeK!s7;WF&X=II{1?1@a~V|8tN2nLq}>8BmQ!%gCC9@hYn=Jg}UN5*zaZr!3}C%A?Ta z=Ln4+_N!DNOM&chhX+=-&+&wYr=M~*{Ns~dtXvaq9%L*YltOL}Jmpkmhr-E=ZUbu= z6~VRe=d*aWB!-Ni}ddTgs{TU>07TgBf_uf$Piupa+swBikdH_mMh0Nn>OP zyCyykEc!B_(O!RN@4uYZ9iBKK{Qt7KRCl1F7*d&l8^i7_V;3lU;4Mp$Rme!i}?%J_hW&1!lZyN$#PV8==*RkP6RnR$dU~WU;?$C%#mnm_9 zIIww!Q{wX^mh!lw@0%(+_LBFuY-E`095jLkO}zQlf^SrQo9t!!T~`zS7e*(X?6*JYxC zfCH~!rxjod?`Gf<{=4|}1->;`?-!W;VbS{u=6CSG%?Q+S_AePdLr^T!yeGjPkwyA5yQ72s|Bc_vG#f6h50amF=dqO>eZ6qLxyU0yfuD+6G9|lnHSz#A!mg6O*b^jE=8`RW4nQVV1b`h37IlQJ(I7c$3j#o6BIva;+6E@m+bw zv)3lNkAOJd#ORMaS^I>$k$j44zV{)JhiuQSixoy^$`g?Wb8U?#^b0_8OOp$gskzw- zqf=$AOk2KE+4I)ICLnp&YH+`4*__dExvN_RR&rMWI0805u-stDazdV?6Bt?9)Af}) z(ZI9d$kA!AsW)rNYK#V3P;8x%QO2Obx{~;oa7FMTqXQ$OON@*awScL{RGj= zbRZf$O=t}a1L5pr;C?df-pW!5n@wzn{<0-qXd{3g8GQ#%ITawch_U+;mv)hz0 z7O-80(&qOtv6F(RkdHFp6qybb6g62<-_S9EHfLYE1oqdJA?Hb->waVKegi%+F2 zT>UVG{CFJ|)b0$TZJwf(#@r5tQ&aPEOBx;5E0ZBJfpkSCY&~{apkzdWmQ99DpDbeK z>ML`1#-i-1303f98zQPw`v=`rRKz6=jEoZDn(!iSMeTWogIEDyPlKzvtigj-uV$|B zK&w9?Ygjhx(rf4nORe9ge$lP3Q3lmfKdW(75!MjCk3B#y^$|3as2Q}`9msZVl5XYQ zkxN^3yxqg-^aQf_Hw81-;!=uQ|KN@GX95RBXyV!8|W`BD*LD=jb~fVQhR4_KRg($3iM-U%DdR@QVpA` z-aHt+un@W`nVxc6!WWQZTy-vVKSs5I${U-^%^bbP=t+jw&BiAwF3)1`ewYHfP?p-6 z7!}H$Eeax*7&S78*!kk$O9&gq){Bi_C`d;4O6iS9|( z#(YMs&P1h*D*b%ANH_t*5oL~sX^;-#-!K`tQ`bBd^z|?e;d+ja&~y6!C>_IB$MJsv zs9`!8yFUf&8G0V?jsSBOUm;<`-Mbit;ad2G&fg!t@DrK8>F;00?;-tWkS^o@P=uma z=nC%g^ePwzXrzrA#Z|Fg)iQV3t|qYE(QE^n*T-N0$G1tF72jBE#(+$}^V8HnAx-<5AI_EeU>PPZHVg?2zrp1hxY-3F{2d wUHTN)bBNPvSZ)Su!z`}zxPFFf1=m%)KaI6wk(TIl`hvcqZ|Ga9QjO~W0MMgw1ONa4 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaUpgradeDowngradeMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaUpgradeDowngradeMockTest.class deleted file mode 100644 index 93bd33a70b6b730a2e8218c6a69b0be880f7354d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8749 zcmeHM-FF+s6~Cj{UP*C?6QDpKuowz99~NJ2DNX~5BL~;(4=meh+SAg}Y9vp*+EI6B z9Xl<&@x)Wl=|8|5Pkn7qdrIH?7w`x0cl7km?5?!7$J&iCr<^t~n$^sm-`uacb7$_q z{{6SF0N`ivsRbnhcf!D}Nfyf5UAjkWT+~7t@ZNo16MYs?DT12oMWJNDu!Dvn>$SXt z+A{6z(ye|splxDgE^HK22&T`aZ zfzMFg3%UL+mCQL0nlZ{tA4r#%+-sf#1!FzWYl1}<>L*qmyv+Np^NJQ0gpPb`~aBhkb)?sIt^l{YiHO<-(6 zw3!7zBye$Pqec*jpbRgQsef$ws88YTv9|4sULVye(FArs5G{}O!uRZIWpjtwZRUDP ze>MuZOS{aT=3*}Kyt$OExx}`^j@0v}?Y3Z{?F(u5sC0L1iI{A^j}Df_MBkoMzCEW{ zoqMnqVm^7VF9K=f)DCS0+2(i1^V_$%+%a%tOJP%69`sqYqSF{ntumw> z;-wxYA1;?RrXeiAa~<=rAaXI`vE!s}X4dAR9rt-!y< z;15mNL?=Fx^Pz;=%TJ_>cf#R(J%@Ox<~V`RAs^)PIdp|ocT(P80NarM=giXDK6)F- znRA2TzGrpM6bZAAQdBEvP4^ucuZWYKL{qIiko%nklhtm$gLn0OBb@oVMXi;(@yQW1 z_M-;HYu)kCo)uLE;w8T$a>xqpE=Rc3D-u(R%2{YtZL9*4E=KB|;w!}!&QbNQqkLyOIaia;F}cG-0>5&; zv-dUiM$}3}E`g^vB46?zTk`jK$dR$SdZ*B@FUZGvXAqs|%kVZKUlw?%8BEEsV9_mc z)^z_D0Ue*|XcE%#!P7~@J6iE41imR?#dJoF5x>6&0*W2`xeAo{4m{(efq!0Y$jQXD z)hKG^8X*@7XeIXT0--luD@T2WLgs(vkijsa9Vph``PhRJWqm+kX|%G`gRSH z)Kf919>0%au{tyB#OIcZR88LX^0U%~g@qwr(d&MDJrGj3!b@e+ z=c`U<)&5ci3$`!ycAn6?8$Du^z|DM*P}4_m&EuS{vU{UAyLLp7k>pE$ll3VU%Gml2 z4H??!>XGTFhq`|-6#P{+KB$%{O^srv+SJ9KMXoZ9Y3&Fn72I@{L&d}4D-iCy@jX>8 zv*0&a%89p+1;14_F11H2XrU$a=h4fa1#JS4>Y;@9q>g4m2P;iS&t3~KG*84&Hx}H* z9X~kjE$|3DGwN}}0-wN>>CGT5KBa{%3;I}~I^?^<3YP^~$tS%6i%F%@+zxKH4b!>67Ff517zx>mfIQKc(946zESo*hC=53v}ACDaRW1;$|l zzpj7rE7x3RZ$OXZ+`geHo&gGZ>0yF=_emFg#|Df~1{eh1g`Z~lcrU?F zQmHj!spbtBpBbbgSkTT&bv=VN)Y1C}w9gG_C8)y<H6pCSS_WZ!B*Iq)1On^uQO4RE zh>-g5P@<+mCtn-UwoZpe&Kc3RPl@)X5$*OV(K<%7Uz`%{PX@FS+(EsU;Fs_Tw$m^L bzlM*2f(s0~z+o49AmDcpLIn5V0Dk`;rd5)% diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaUpgradeDowngradeWithKRaftMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaUpgradeDowngradeWithKRaftMockTest.class deleted file mode 100644 index 980cddbb9a4376c9df14fd7addff5aa3b5e9f133..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8182 zcmeHM-EteZ6+X*aT9KA**|C%OFI~GyBPFqzCTSB#t{YmWTvkhoAt^cOOzVP6h=R4d zV0N*zID4R*MEp2Fxzo8?}0|`e3b4E*fyo?sco7U49EOrzSS=+Hpy$__ZB*u|Rj z;Wi0q^F9xDXi(gxPJ}K+ci4k9h@5s@Mt$_lIeRr~(7>k{mSt6ktur2aQ`Q@B(w3f; z&#z-c)+Zhf+r+_^nJ{X%u?G%t$*$6nM}b4vlQ`CrHtaLk=FJ)v=tmK7*OmB-w)8K? zy)x7!$4*nhfM?<<7m^G}xe;{Aqk=SvAU5q#S30L4xW}B5FK8Uw>08Wa;x>AJeqqyq z6U*o~6BZEK3vw|CcrXJm8*@)Kd<+P8JG5yz+-qZ81jf*62fX1@FMQj|W$WA2YEs9Q z9=6a0JETRe>x?fZIlPz}zL+FOuOiLi>sFJ~(DJ#kJR+QJOCTrRZDWS^bK)vll&fS> zn!0$n5n?-;*XDt+uX7ZBQ$n=>HcoapDAa9wXVYmquptafTdc$mqRJ zotzV_qVENc2d!~aJ%;Fy#bdu5*)QtbB@)aXmwW$x;P)hI#a%)Dro7>3Txbby5lif~ zX)dci{}ozZJjQ_I+s}AVnfUmD8)$&JY)##cG)?_h^<`QPkIMF5Fam#0qkTZ9ppfpG^jQs zhwYmvOcj|#(o`!99F_8bzPUgN9ugNOyxLleWv z>^jJE??$MdpulmUt$kbA7|fuEF$UaQvazZ$2Hq7p#^5H3Z|cQVut>#_(cC$hha0o- z0xY7GG{0Yqk}}2_oB4Dt@=&p<%WX#LH{2oaX0q)hl_$hD3k_)6|9ibnib4&FvKB44 zD8yW@Mi_37mi!J28Cux4nMg6|P6}O`fj14fHd=Q<*#!k5RQG70*mHIvdB$OL@vueW zY@;AFZ_9(D8ROcB-tuWR2(t%WK5E@w zITYb6Z)&XG&%VD#2KVYPvs{&3HPL_M3Gn9#;$-#r{mK=Jy@s1HdK zP*Z>QpaZ~!4yxJ%+1iuEO+YPwrk?C#COpR3qP=3*gpbfn^(b4D95mtgC~M1&#)Ll_ zaC-1`G~rL!rzdsC=N87G%)$_ZEI+qGxCW??p1XJZun1YX0pEWC~k z8SEXSeu|}Jdr8ePW&4?i?K8!eQ59e>fx z%D{im`e${!kFDn;9ot_uYyiK2chHIgvSi>+*W07*`kR(%8SeJQYc#`GT81L5^fAax zJlHqi9Kdj|k72Y8-)R|s38hIHjA;!+27U#r6EmFEFaX%FI5EQoEkhaB`WQ}(@}zN5 z%difWK8BI8Ff0v&0q;V!FY9Y)L%Nnn#>Kd)Wvd^N?SYnUi_@% diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ManualPodCleanerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ManualPodCleanerTest.class deleted file mode 100644 index e15bfa487bac2b19ce5fddc0f1035b36bb8e0ecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8288 zcmeHMZEqVz5T13@_$4U`fdZjWt|^6tP@8uOPD6w1K*~9ZViUwCv_5Z=E%&CqJu9sc z{|F&IAr%R}^HcZ{h}kPH1ZGorzp~Z7&n!t`rna@&+SxMA`p$QoYmGXAIkQjIM5gY3mB6K%=LV9xa+lg6 zD?pJz$?{w&Jlkf1K%rST>$TR_4nCSDZ8JN-S(7W=<#Lt4g~g>^0uwc_!}2hTT>C8Q zLU^J8b7bb>*REiJXLni0usp}-HkI6S4PSU|n>oR!Myc33U`B^oHWf(ZQ|o)W&x{4` zm3!tXADO4zGf)4;k$D!3j>iJS^`zlYX&o36G1;My=15}V0+iJPl$EIEC*u&y$sOMl z(!i;Ev@N)G%dn`c*tVH*r0Dsg>=`kGoMTFU?yb~iLLO$2@;{;T#D1D+XG0Qg-%xTp zjosN3o{a+k2bB7uWNzmhE)O(THl$}zLq70Xskp0rGNKOD(LQ`2CW$v3-{uyVMi64q z!(>?}HK$eQl zDA=XQ6vwuIOO%m`3fL(uB10-V49t=prjeUG6%q4=6rLkMGAfnHyfu|iSSsuX8evMs zH5EXkv_SVgcAhR3oMOh1QLYhMB^_~_i2x1AF#YlD&|x*3az`Uya?S|Yj6!8HRwkm; z$#J^bV?Q4IvHF2X*(#a*_$d>e&hbw-JCmy8z4a9LR$5p(`^CuQ17}85f*E*z8m8eg zfy;}-1pxK;K4W6`v>7^WCR!@Is!D-pQG2%+ZhJ2$ zlkKDwDdZ!LjbvIe&e8_zCj+J#XK5#kOIZ#G0@roh>Rx+bQx#x=T=;RkD^Aq!lKz(# zBoc?s$a7%)?~=4=7Wd8e+nxz&#POT)m+f@3vj|9FS+`RgSnlAyt)gI%2!jQq2d@raRbo|a@_m=e zP+(RVj+(n-q7v2B7y<{naNYmh?-0dXKc*0<2TCutpugH9!pP z#pd8;xCoOt%15IDj!Q6w&qaJU4VUox430iPYJ&IDZ!q)i+_S&JbALqiFW^hxCgU=_B|!vn-D^2syYFS>zMAhxb|Z*%erYJMcN&g?0GyA3h?4>i_@% diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/MetricsAndLoggingUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/MetricsAndLoggingUtilsTest.class deleted file mode 100644 index f856dd8cebdb72f99c1608c9d4e035f09fe70c6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9353 zcmeHNU31$+6uoPl#5RGHK=~>qn=k{;i~Yg_LrP~#CY>pDQl?Hr`?!|Z_BPV4*j;%X zehL4C8JK|=p8Ah?VYq84wZ>MkoX{a@^dedE(b3(j-E%*r7k~fyI{Csz38 z5ZP9sOyI_t(r2>YeAIc)JxgHuj*!CMCGbXl`-nh!S9SRcR0*t2uzOl7U4b{r`kzmv z=0^EL-ld)jLg6zjl%%0n9iIp0Yg(%w4mj;{&u1DzA@hz|pVKX&8p${sr{icO9GnGG?24|%lr}JVk`)SaNkEE*|5$Hhogn+? zm6Q9CjWo}gcqygH_dHP|Gig%RUY|i1s(XR#Am4nuj;dP-ASSYL74Je1=2%xi01GX+ zfEHwglvH+Jg9^O03QO=dft&T#q|X%x#U0lNTWetnbr1y|t`A){N?^UEJmw!I*=cgJ zYzM*+c-ne3O}iZeo36oippqmB8+!+8O2fv3m@e4HgShoLl2!!#fgB1Wa1{4kZ)==> zqtVMPSK#eb;6qY+k*BYR=zn)?T=f=ZBi1hG%a5O+naP5gS}qm1MV5Yk zjpuuj2&KFCDc!FYwY#-%d`#6JbCzI`y9Bj8U*xH$F8#&l$2AjxWE5R0erv#rt9rtDQ H^5s7=Gm@QS7Eo2rU%KhY|`n2W&nHl%|w1nU-d78m3N@f!kW%*xO24jdtZp zdf~!_0~c=m5@uiq?))f*XJxxqh-|qXlQNwgZ0)YzefIs*?z_)lfB*Ie5q(Zy*i^8n zp(3}cxzg1KtjnrGR+Wx~|43A2$Rnm@RCT>rX&wy+m{QztdWY5RzQ`8G99QiC=E`j; zZJM#@yJ-V&9p2+g#*xb{D)=pn7V6v02i(}=zKbdY7ghQ$8V(FxwCc1ZS56?c<1_7c91To<5JK%VCVW*fL8us2D^IpU zPfy{8GSUvF?z1L>am{gAV3uuiXJF{_FX;<6l0HYaPGJ6jC*04E33ND>6jSw5mq+?w z0>o3f-ro1`En%vDkx@G@6elKsUYL{6QN`a&mg z>HjqwPW4K~@tHVd!bK;@u?a-_*U@hx*~QkBbrnc&VH?xW-cr8eb z$WeECwS%DtIszm~@pLRHl`NM)WM5JLSEe#CR~>W>7Sy`67mPj)sqy(?Ab2!Vh9)OeT6Z0 zaWj=vcLv!9GHf#lc(mae;z`-`zD3(p4myZ6gdGMBi8!0CqCZS*n?3>YW_)GSH865L z(`~wL(b6y)J$ajM92xCpHw@VlN+Hj8@F5{h=I^4|yCapR6@ms}F2VlMEX|=+LffW! z{1?%?ino>-{hdnRE-(B_=l?{nKri5bE_pLc%V;n3r07MufF3+bFG1?%zSJc=kE6YE z9Ify$6YVm+HUg~xXkjMW>-5G5w4tS0XmKXmn@@@MC=<=0r4hP~xAgl=v=v$% zfi~XKA2QM2qAMfN#_RTDCfeKd&Iq*ey8V=i_U=>a_Hzc>ER~T}1zMx`@Fc3>w~W3; iRr&yVdk zeJVQD_0|q^jRT`kxZviQ0~h8Owj3zbrH9yY2PXEhOG-&K2A7=4kFSM7f&MP@h%1AT z`_ynLNT_7XXMui9O5>YdMm*;FR3Rv&?t9u{WRAFNef)T;KQo=@N#@i&UMgtvE4A>{uhi{Va{n6!668 z{o6uIJ;Q{z%}w_Z-ieWf60;Yw()gDBaAUN#VfbM1N`qf08HE`b6qrNOMihn^9`!a= zf{TvM5V{(KK6kkxI>H@;V!Hb%v4SiBE5+G2iIl*no9slaM2j9An)+qN2|Sn6&VY9h_NH5xFDMK1FaDv~lhgOVeL z&_sc}(pi?P|D||M#71POJG|V%wg)a1pLJFg@ScZ(eL*H$-$6ZF6IyfqBDP6ttMyw43O_R71Md-=d1! z@nEuGx?DT(u5oVp2ka~Ej9efHVk-~asnCjdNxH4AbC8cMn)&6F*wnUa0j&apG!rWS8t_WT3v#Ree z3-?7TW5ED{v3L@nhTEmp`VMn7ff31+h@{IDfkCInbQ#~(_;yHjBpHD#=3T{Ep#f7( z>auF+nfvk#$_-U`$n^|?ohfI7NxfHg4kxIgPT_Xhsn*dV>gr9Z-3G1utfmoKu^1+X z^wwG`q`H=!mPJpc*ySFRWyhg)=Bx7b27!S&;V}!|A~1S5+q{%Q4#OxJ`}KKfO!9Y` zXS*V3a-V80Lc1viP9CU-c79~N!EBGYK9wkhR=uFx%%0?;*m8a`b$+qs{KFTi^CxXj zFlC2A+kvsn)`-dWn&{MaObl<)gtur^EuLeJX)BK8vJ>J2{68z_aTe3_Z}`NWVz8 zv2Tm5_-t>w8GAtp(+2R+?B*P4nNa6Pk_G{Dlb)<$9t!Yw0Y+e)z{FHHRbt4EQ3v~m zl_;n)xo*f30^^QwslP!bH_xq?1G>SHu-S3Wi#|fO=aMTK)ofKhZ+dtoaA(R%*(M%y zEM@2Dk}FR;3z4CbaP+mcDAYV)OW`h894)CD5+fdlhUA@e&6J1XI)R%flQ_uXAelvd zKV95$st~x|%d3Yv+&|%SgeuO4;9f$ddCW(4 zgTU1;=r$+bKK5h9nH9okG>p*-NvKkF5wj~WEmhDo#dPXMjKuI%Oahu*L~kC){h81C zTFe_RAlFFXa=PkUCE678nDa6T+*wG_p@X~Bk8s??Qrl8mOxGN0wG@U-&iRIJQx<$d zVD*es9d%B#x0@^d3e&5zo>_38z`gYCDd;$wkXN=L(C!6PJ7lci$8w|JlI zMix}DB6Mte7R;e?owd<|d4x?3N|vJqPYAq$A+%r#F_VZ}@B?~3?td*_ZTydr-LdHjD9-+YNu zLwL>q0fisOFZ~8%f5md|;J+CKIQm`uFU0qGn1J{2X#n1b%ZPTRC3O|ADVmuzLA%zC zmRszBM&JXufoO?_A08m(PDFBgAOYHa6D>-RCSO9oXFX5{;3K$ofO@+p>dCrp^hEs_ zJ~_sRC!_t;1C78GOdt60PM<#fxd+l9e2RY0!DmpyE5PUYGucAmF5JWXd5X_B;1Xue e*YE%yLIq~vG0ehuumFqjJvgue&rl`@cmD-DDIPrl diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/OperatorMetricsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/OperatorMetricsTest.class deleted file mode 100644 index bc2ac11491534b8b8e470934c1a01ea462b2cf66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9195 zcmeHMOLH4V5bjZI>k&bWLm*Gsgb?HeBp?Y1aUM8+1Xr!%#ByvBo}<;so@BMF+MRXT zRB_?Ll`Fp_RUrk%B?tZnH+}%ciK1s$kBv0au2mu?DPN@BnVxUDduF=7>HYnmN525T z6(}bmL158!jDldUDBPzTw7~6xD;!??mKW?gbEvSLf?;~DU{1S%x-P4g&8@;>L!`)X zjNvXLOcF*2jQdz7wblxY<@?MK1V%TQBQ^;n^%eOrMPTeQx45`UU{7vxg}}&+U13Ss zOJHAn^qk|^P6}Qk<3HW89Ol~Q2CHa>U8{4G3T|6k-LcCitGSo7OnP~pX%%Le)Ip&- zH6GA4rk&t+zF|_nX;QvnQoEsP(h03%Ggq^0q1C7`)-{2cY_pCwgfY=+dFiygR5ic7 z83H|dt!_I)!=Y7LM(17B3~I?~%S>w;`r=F0xZ&6}hPx|<`Tw18V}HcZVONq5)k}U< zh=I5(7sS5KkT6ug*v?wiQam#eKd^d&n^79QP=e3Qy}c%y+Z4>Ita7og@Vh2#jcQ`6 z&N68~i~G{9OvByDD=d7&vAueP3Xrl*p35pXX^pvf$z_$ME1I|Qh)}!D6xviEE;@?}^)1Dx zE#HU;b%)0tWO-nnV^PB~*0(gf>fh}po6+WNThah-$!yNC*kOrGIv@zRH)($jGmwFO zSxCY-fde_cUA!n^QN&uClEsaEI`W2_UaicWWx0q1CUo1N<_dMVd~Y<4h;{A~xUCPl zC?l&aWuJEtII`qfg4fuBwZUDEb5F~%gI`R+srTwFelnGULj)H3*Ii`Ur8T0zpRfi* zC8r^f(VOH3=Qu{-)95*x1EQwb?|O!T{IKeoOAJ@j;L_R0azWKe#-avKn$m;NfXkDD z;{=}c*TJtZJqPrHz)68dwrrP7ey&y*TP0><4a;@{tNoqYX^y{B$8_l=T$fV>X8ZfZ zFS(&`)S7f_v_egfRi09b!0|4{ZBKN_j8`c)@ldtwBXC9zo9}4uX?9O(rAoP8*xi~< zNYPsqBXdi)6ch+N>hHs#ZW-ys^iJd+0!KskOP6BIdeAbDz#-W^iyKR@85^UD+v-cf zSwdExU(}&7kqQ$y z-4EUm^DWwqe5T~@fG$HkVkq$#or zhR+jvCsD`7?1E)6XU3GDtK1|k5-1IsDxO3xjGyH2HwjAw?hPBhxV6+c_~^IxOA_u7 zSReLe;TT!O+|^tf0tb6_CE+syX9w7@Nw|kBI|w65_yRe9M?_4*SGeXr=}N*k7{xpJ z7cOs+yDrARWxSNQa2#+U@KY^13PxcJpAO)25>oh^#16dv`#z-;`+Y#X!p|cEuAV+WP~d{jEg%AO_lp-MW!u zO0;t^&=mWhP$k;=0nvU`qJ0DxLZ`bOr!Fe2`%{510+(PagwQ_GmlX(qDG(BH6|RL4 z+B$sFjgUB?KmfSjLx&j!!XX7h0_J+?ph8fs@*bGSSeAerP{jYk7~5{5O}8+P-^Tya ZNEVjye+A<)#r`a2idDD^pTn2%^}kKJ=y(7C diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/PartialRollingUpdateMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/PartialRollingUpdateMockTest.class deleted file mode 100644 index 6871bbe135019b61711ed80fb16f617984dbfb11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8789 zcmeHMZF3t%67Dg!S5i!p3vfVq$tE0N=ML-c;5dTAi(}+qvW|mgJ9oJk7_CO~#;aZ3 z?yRuypWOWdKJk^}t_rFsKJh>J8x+sXuB5fR(ymP?LY2R0Rx>@%^z?L3_jG^z{r|os zqPOT1gQgh$B@FDU6rrr%=RIC^{Awrzr}J;8>UTxJr5{vnHwvW)h8;W%MW^8&RPXRW zI^5m#UDxs2+ubIYV%@j*wt#2QG^6tx)a72gy3x2VY{_WW+PHbMw#leuS$?}Mf+a?C zE7o>>tG4;k?dA0vqYKt>S{>YYZO}Zr;(MXwp4{PXBuaFKQKfV6O2QoAc50jTwT;_# zMo(C`cx#XEh#+))uWI@JUepD|Oiu)IpOIlp8Y1ungtnslFk0$h*Q%e<8B0k(eZPu~b3;kL=k#qbFnL zmJ=CnBvJ;gG1!X{)1dEs*KgK^#NK59DGM<7w54Q%6S^}pr1%JYmGaiEFq^`5l{ii8caOJ)dByP;6LnhbtJ7k#%V9@fovxToUxcRT zOS8kJy=zKfiv2FsCXES&T~rFYs90S*-U>0FPN(Y!(!|sjZv>A0hG}z8E!z-gf1?i< zWg^4^e4bJ|r&5}z$)_6f@N0;6R0Z_-p{DbLcHS0FNwOV|c5RV#+&lsPjD$bp>}vZ` zc+IfKk7#L8^lAZKzO~F(;91#z=bM!$EKk@n}?>Lp}(SbLfgoXf&eE0oGE@p;3!x z1ll>X#>L$^({2dpqgZycY(9M|MJ4y3>3*UE)+U}KnsGFh^08EO986le%Pl;0^AF*H zuUquAVlAn0JdciEDCvzT^I!8?eh!(IiK10cOtFuP@W?flMqL9@5JX+P$ZGqx=<0Xi zw2?|~oU`D@Z$}*@ZMKvSsT7XVww*+$lFn(l z>x7K%SwB@mOr>2K`i^Jx%x2_Crz6(9o)bD?YFXtUbXEmCoUsPJV5vlZVC>TZ37El@ z98D=|Ko6Skn1)ew`674vIGP9VK9FPN%7Gv^Y4vp+NBAd3Ul%yS{*0Ux{JDG&HWlly zx&|3tnz#BsW+_gnrrgMqvb@T`MT7>uiEL|@_dxbHQFjFkVZFuJe+vjJ*7pK8a-Yc@ zsh&E*LXHqAZLQ(44xEX#JUO{#Mr)H#PGyRs@=MS+%w|j&Z^)tLb7(b z$B~Y1IIbfPmKMh6yi4>RqdWQB9q*cA^jM^;9>~QHuW&}!GJMfd?{u_hVW&jzGg{5( zvq<2;=&D5Muqp6vwH;S%w3332d!R}-qN(GbmAJg49q6bLXfvMGb`Hy2XY^h^XUg6t z+Zv;Hiu1MV2XztjM6iOIjni^$)R^ESbqQen&hDY+BLva_gWbJ8c}Yx2NDnQDm99^o zIGmMyt?(45$C|DROyS6M6omx$w!0&0%zTQms#y zV$?-GOza@qndzxYok4%Yr`9xs{sAr1pQDd;gFb>S=^^M~s%&QvM-^<;Dh;w#B~jN8 z4FY?^cY#4|M$b;VCJb^IJ=GV$Xm!k>JrwDbd1bu(4eFrCwgnAWPb-5^&zsRUW6;0A z=BW7?1pPUC*k2nIfpS=8iwzmVTX(_`rOquRzCyZ8sLi2FJ4Y93hGy|~kqj!Kw~X&8 zs^I?|J&NxNouzZSJx{;V?FD*Fw~x~kXs77cn5Wt&=_%bljk)UoGxV%(pQGo|o(1+L zGVyyE|6arD3~lBAbmgxXe)BoK^p&Pv!0)UcnW3xro{OpIxAZ&wE7L1Ln4-mms)|;j zUDbQ(qy0Vu&C+O78sm?LFka2Xcr63t;{gVv*Xhq#^9{_M28Y)M94#eiYJW<;@&2x7 zptUph$LQ@tyuFh`V*|8zGtfTGKqGpNZh$)_p~L*FWFUN&iBO}}6vFg?hnpD)Ut}P_ zW77wz6T6k#kvff7K2`?WH<@U+Pl)ziCfdfy&{&pk!uy{P?WIiKK0F~>Efa0?glLTn zv@+EXX=%0vZ5=&R_K8MQ=RQR{`u8sN(3-emuF*aEJN=VBrUo^sMZ0vLT=J+(0m&Z# D4ZylJ diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/PvcReconcilerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/PvcReconcilerTest.class deleted file mode 100644 index c5552083a33747a62e5f810fb86dd2c3fbd72b28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9342 zcmeHNZEqVz5S}$@{6hLdN?J$@94(ZDf=!`?((+Qrbx?(qR5>>lNT}MJH_0}4x7OZX zl=PP%J|giOkU)a(`~yDojURzJdv~tS@g{e*q83&D5Zik<`^?>Rptoa z;VzSH1S!G`cl)rTW>T8Ot<>?ZPev&-Xw6mA^bp5U#(F$ zWF;sQnABGJ0fDJT>z>_iu0GHpC741ueQTR;Y*U1@+bgT}Z<-Gpt-5U|GA9X4czc0E z;OuJCzVm&3q1AjaAV}au%f_dpo2=pD1ECGG%PY$VN>6^leXhPD@Y3A;8lpEuhZW&0 zfs_5GX-X+%30^1Dx9<6p1;X879m^43m%CJP;agoP)?MZWH>^szy~V5!b6hG>s7sw~ zG{w5WMKy6iwda6p;(-2zo&zpe9l-+27s~Rea<(jmm~6L;Yo5kL7gzO)Rkf+rr_&JI z$-SDktP-mTAvSB+A=R zaW~7N=P3Bh7UKm`)ZA6f@7(8V%ivT?35!~4ugfasHJv4qbf8Pf@Wz`KzT!V zA(n5fJy=y`=wP9<;#xd6Z}Gqi{SMpUJ{E}$yo0}K=&H1I)mp-$ukWCgMSWdWV&D{H zrEEv_JHw`<6zUi3Or?F%g^;@)y&6L`E4_3%&FsTw;`K$3&;m`fGBigKqveoPDYly> z-r|{vcbN=OiXlG}Zs=*s#JvnF4uFkmg2&XBKyD-%RSaq5T)g`8)`k>bL}PUDTSEjB z*~SLiqWz}1j>m%l31pNhmeI%;UEM0u%uqUPC1LA!*u_N64EEl%dstKggCi?tT>2iS z;r>%6PF-$d-1urq^HlA@;bg3o7ef_FX1vv#-=JN+nGMfQTV#xcj5(PKa7jkU0?qQ1 zV5k0`Y4_D}Y!3E;*u~j#jyw;HLmZQSi8{)F$*D5Ks{t0CLHRnB^yd|aYAiz?4qr-jyJUp1d>A38v1%X|(r0A7ko)oT(tJb)C z^HjYl0+)0!B|#JgRCBjW{f?${>Fh4S2Lx^(9$(R!VkRjfa4nxo-I+$FMqS>q`6DEk z^ZVy53*T%lfs6ZPm*PfU`k4$;TBiurpj4D^$r53e=Z}zU5;&jIaG!EbKo^C?`-)0D zaGp-xjwZ2AlDP@eZRRq4B#Vd1PskU6%OEChM{T@CJV_^T zW?;K+<3mM9w|ErZ>K_{*13!lD3Go;jkELgfMi$`~PD-z55f<=-em^rV!tH@```Bij zn)t1a&Da3m20Z@8{~b66v-mfOqauz9P{MH~HGUb#$5Z1II6eihpzJJ6N8iVB?rC@x zKWFgjRYWEDUHKi(d^i2tuQ2;(g!=}5YAsshoA@~uOTk-U;fSC;7f|~}{H>+l!S5bg z0e{D6?;6l<8PVR$fi`DAduT*^KL^@n1KN*9v=2u_``d_C9Sx1l7}07YqWxe*`)EY8 zUyNv1MnwD9i1zVlXoWc=+9xBTZ5q+8j)?ZN0S(|9e2N)0oK2q%M{MCA1402l#|$jM R4QT32gbDnAqpzV3jmMBNxW@nh diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtilsTest$MockJmxCluster.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtilsTest$MockJmxCluster.class deleted file mode 100644 index 01f83ef5f3745959b57dcd0c1b3528243b79bae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5478 zcmeHLUvC>l5T7+^Y+uu+4HOE6b{h&f64)<1AW|Yh6qF!4L5Z7+7sPsR6K{IAd)nP| z9S|RaPlE&!yz`+Dv;HGH&JkZ+BUH$P&$oNOot>H8ncwdG@#inU0l;VQK@kcBzO{ze zoUpET!aA%bbx(xz1Dx>bTLjnt% zh$zB!0?Q*oTgGTpf*a)aPfwH)R!1EXQm*4fM$AdAXkv6L60!Z12IXd3&`|J*83ZMa zKV!#&u1Z}U7+W10TOAlX>KGckN<%FyRoc;*Io_rYWr}Ws=8VfkcUHYSt6tUWC zrK2`QdPKfan5a^YG)eo^R#~Ic(o}`wNGc?TBm9EzEREbax=I^Js{RY2C{vzE`hv$q z2IT|fVwDve<2vO6?LAk*?298|gyLd~m1n_Uq%sPt#2!IF$AkzSF)Gd_$PJaPERK=)ZX7Ot&B+!d9+Mj0E#A0_-|q!Ti|7D0KU z^FJ`rm3K2EWlsBLPTu`mhxr2S?_y|5M(8jj8J^JRWc7ZkoQ%a*my4u#{=Ybr_#43> zGW`kPxMthv=eDvLVe|2%u#FEXCiagu=np?$K740ZZ1$9qV+-u!r3(2VBb!_{$-QJ7 zWo+fq!BV+Pujp9`GiLR(LRwl!f~gl&WmYM97$)~B=MVeo9Ghbw|1Tj2Y2u3n7Rx77 z0(e+pnGb9auZKp4Q_hb81hBjWMYu)aPNhC7+Vn$Z-4}J1>v-_pP2-j@P0s=ZR_dCw z=y1RagU$ulmX^SG^?$ZZh2^KE%G#*xMBv_l0(MkKT8RpN?rSi;$`a}m)Q6r}FTtAx zwlA(h`4ZG{z{LxJq7QUxxcCyQY6R|1M5f>Dy~+|gc1QWEg2d9Ca@!JXb%wW3(T*L3 zC;c9c30s5*1or0aI|4T+i+rmDO2eI2ghvFfkL^&@sUfY!i%b*GxahsoE}F5etpf^J z3dCw8u0C9YMSLsZdl5?bEMx0q{93^O;8zH~Sy}oSZvNiG+{Wi3VgN_2;B%?>9>A;c z8ny`b-obIN4^VI5|4^DA)0cMlyfm_zA?+Hxg<}eE58lRqfOqg0;2Z?*qy8m$58EZw P^C7&8&-bxafct*|eL_$f diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtilsTest.class deleted file mode 100644 index fb5bbfceaa9c61ac66161978c5e5409512dc0aa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8745 zcmeHNdvhB#5Z`kjc1-%F4^m36r4OfVY#ybQwggh=(x%u>vE8)%L+5-}VzqZCkEBao z7-skc%yZf=|M*x^pIeDDm}bU|RA=Y)e}GwAx+mu2%Wuub+PffKQ>6 zhLizIf;$CCge*L=*X#mi1tB^0zM%!yCft^c7aTVblJJcVTL|Jc+^2;qahUH=m+*U% zx}uISY1nDN{t(Nx{nf%!;}LPB0Xr*mWy^qrrH!E)F66IXH(*bZ`9j*hT(;eSWMBfj zyr(mdyv~du4ktK$LQSvTohw=yn8c=UdqlKthZwML>3+qkKCD^`R@JH$agqI{r6)e& zRkA`j@g0Io>@LmSv`RGtGNqE;Ag;i^L)L@ET79u{>*1a9gNHS%ShebkpcbyFCf%Su zm9qxy$W1Tf7K*G%(r^@)+}MQ0IpZ04%Q*1kJ)aZ7+%?iP9p<&EYfH*}v&~tr0LnxX_*o+NvDlc z?!`p4=9OCWiq-s!tq}1^y*A_0#HlNGgHz|K>Daznwn5DGjlQasU2(_Q(KaO=tCZFV zmz@}h{|O!AtD{&O4@r0^1N51rmWxd|9=^6w^senCSJJ7!4dpz z2d?a;&YNWn?rH?7OxstHBm(Y%%udw8P(6aDSVaAic?4oV@y&p`O|{vfFw`rVD7+^n z!mWnUf5iNVC>}$x#8S4~nk6y3VhGm^^lo?{3DZzVQQ9N2#hPdpxrif;fv8kM8KXIX zskq2a40OH*3vEl+75|(X$0XgmtQqg1ZFYu6c!V{ZQyVk%ah;ODm((Lx$06-7|KHkO zsT)D}WU36G%X*8mCn8sLv3a9905*HcM8`feYkvFPiyz+sEREuO-AWH*$z4Va6R6;& z3U6v7xQXL?UNJ-I7clkZ3v09=A)#0A2Wc?o65D@CR+6HORm<^@{pc7Q!;b%#B(vQLj0)Y8vZHR&)b$e?xMZY$8;|{L zr(@w2c{?48dEt-kOX8+u2AImi=c!QPxQTg#s-2ao5cpUW)m_499+u1MNU1_6>B#HT z%NcmjfcdS@LHG)Tv$l332At9`VRfjGJzQK+G?w4XCky0UAX^%iFK$UZ2z`E-dK28- z=9Gh=hZX5jJ;CJ>HIP%rOW6xmf zIkr-80zVbHTIn79oQ$a8B$(Jjr6NKKPUCMy^)7x7qn**9Sz5Gn3DHVgwDU30avI)h zTC@u>&@O7wnp(6O$ZsOI6v{BtLP3M}gBI=mglIo$(LP9s_DqZRVM4UuwP=?UqW!5w z`zRTju|tb?C5DA)bZVT_qJ5kYt)NA_nh@=Z25kp?f;O6hYxoZ!XsdYcXYucI^gUl- PdlEgx92CKVTd?>ySX8zV diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconnectingWatcherMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconnectingWatcherMockTest.class deleted file mode 100644 index 78efadafa86b54e155fac4fea2b508c54ca9ec6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8925 zcmeHMTXPge6h0k7_L6Wh0xBpDcnc`I3aH4{WwXS{B*7$v;>qfr?Q9xmy4Sfx@E=&^ z|FP66efPzGWO2G@FB9lwdSxM&=4E$!=JeO+)_pGh=ik5n4gl9+xd3AX?nR+jjad{| zAJ9!&<+2*ZArF4wRoP)7jb&K%{3ME5ICw#$hy_jmadnw_QV8b7T(s}e*xO*?g7hA) zB3uE+2^`j#J{9fiQu6`Q5twk7=H?p91d6UJ+iezJAy8VZEi_i{)anfa)9zr-3UVUa zNN}JoMHEvJuTei?MVKTo6+AvCXuzTl^%#M2AL4uw4&sdL=krKjckiyOHkQ9tbVYat zXCOsaGPOYFGa?)zFgf^+^Cvu?GlBe1ySI}j3k5@+)%82%uNa`z>OD?#l?K%F1^lpo zlZEjk0tI(XJ>Z*(t6cE-I)QyNXVwUe*JX4dWBvmm;%e;PK=oBQ3oxS#Y9)BC|9W{Rx87;kn+icjtpZ5r>@gx$h}LBM}=Cp$(){` z|D3Wbum$EGCAZL$cHTTX8Mgm_BzglRG57OC-$labFwA_=@wvxiCrU5~;K_rhZEj1z~T+r!pv``DW%V-Fl2$Ma#Til3~s4Hx{4}z-n>ke{`>T9#nG-A$0G3O zla%2kyfXzS;9UYoXP#~9sOHBZ7t4ahB*1>ks)|FZyCOa6uXW>6_vLuJ!6O3q-51oV z!mdoI*~^y+oLI(Kh#O;GZ1RXBTQ$|8(0v!=V$$uW)>n#fju6kHMbn?M?M6$_N!y&) zmd?u0tcYw^9P&uCgvAaU?dIdyxO02CIU3*-0^eB}pf_VQ`bQp8e^Hq>_7=M?p+?Bk zrv!eqU@7&95#{RJrJ-eXZLPVK)5%nIT}HnkAS@Wwx*H9j$W4srzit(y68kknRDf#) zj+n{`)iGA54J!6aQaoY7Z~oa-GA)$j8ulf@kXyhyf7+{Cu+gL&LW8ViuWrfa&coCq z!_XR1xt!f%&Qw?rgbOPd5x^p$j~U&^oHA z5y2_I8)m%bFT!!y4-@!w911u>P<$SPGLEM*;{!N8lo=n!@pNYVD$Y0x$8c^LUW3;) z#v4eZR=|=8-o)RxaC8w@C5q}dIC+2C`58|Cp=sa4-wFL?KfI66Qz;dE05do$!5Kst zgR@<#5Ak22oz*h*&^|JtRW;g}#;9z;s2VXoHeg)tV-PsM1>-^&W2;mb4H!2JQW5xU z3)<&Kv`YrGStHtIMB4{f5M>;-ceSsr>qgug2HbfgZfz*sn+DvUjJUJUjr*4YcMKXR X?-<;IZ}9&hdev2!gL$|O3$XMA1w&D8 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetControllerIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetControllerIT.class deleted file mode 100644 index 16b1206b2c2ad4ce688f7ae2df2755d224112265..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8509 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 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TestingConnector.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TestingConnector.class deleted file mode 100644 index da33fadd4ba6d7026ad770e3e6c3af2a31297bdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8049 zcmeHMOLH4V5biZj^oSiN&I9rQHX(qWfCM245F3Nz*omCAWGuxbyu^Anmd9D`irJM( z!igIP4qW&JRB_`>6;#132Z}2G0Y8P}n_05`m5DKp z24^O7M!AqL7fX{1C5?uSHcAl+IaMiyfjr-I{6*7luq5pPYuV&>#&t5_3yd^enk-%` zcYq~nFZjOc-O6kb9#n&sOS!q}@?0@V`+=u$GCr@dOwH41pjax*wEEA2WVk7~4EDc6Y`h|U)bqdofbEz!Db+iev>q6^bgg@wy7Meh(5aJs0# zoHVS-O_lSLbJIzB2{dfsR>m=FOryQ|>vQFKxIb6Q74iUi1w5xw%hcgoE~g6!LsHin zIKAK$1D9(bYm}7Am*6ywv{`sj3aQrtZy=ysB8r@c4Z&LlDM=X{O3jo~E3dQ~ga-2= z1+*OEX`DOUpU~);kk)GIFYbjS7e zn(13Bx(`ftyN(qQ#>9Hd$n}EViD1Bka(9S2uP4PMxJwQMtD_UDBx_NpFMpRA|TjqynUb zbli)nDXcLec!ljC)|^@I#b~i2uZ#5&3-^f?$~iv6_gTaQ#9Z)?%A;N2Hk0J^ZHv|A zw@idl51A`tt`38H{x*XLX@5T1@$vCuoA(u!baR5D7ZZW=8EJ>C|JVtl>J* zXTX?i?=coj(|Ni$KxYXRqC+E_>qfFdFl2Ct>58V^i&6h*_1I<)*vYu=Vk3#QZl6>k8Adi^b=12?W=9v3bWNil zV@&P;ow*T^RpvLdrA9}CHLy9fM^Q)o;6YYG6hxBdHTpY-S9UUzV@2E++lfXAcu=PB zt=xyY>%+QlHc8ht`s+z_-~Bc?WLjB#p0ZJ<)#$*;XeeqF6Y2T*X72bILl#ZOCXhlA zmshuTiL4;U%b*(VQR=wPGOt3R)JSgBkcSMYaiR4*E_aET+rb1n_RH!!s^XSHMfn}} z;JAwsF0*C4PoQk$;n1Pc!46ANHP0Xj;% zXg8jYP=b=+rtsWHY0v{9dJyzbh~5W!I7A-+eJDg92K`)!J_7n!h&~Sbg%JHB=o2CO zB~RlKUH- zzd8K&FZAvoN_HIoyVaXrxO^n|KuOUAy$=exizdqJJTx|F@z3AJW2l|6)Y{Qbhmn*86L; zNFS|x<3^-6+CIJ+f%ScaH#GW$K3zxsEE2Wtp(xZJB2hob-1kMIZLQ-^k!WT5qARqY wBhgG+>I&^%1X@2?h>bp~5JO9}jGv7CDt;WR`z~m?a#zVFhw3EAr!~6$ANIMkegFUf diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TolerationsIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TolerationsIT.class deleted file mode 100644 index 7553792a688fc9333b5d35442bffe8c7eb33618d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5028 zcmeHL-EJF26h7l7vAs=6NhyEjXPOppBw|D00uew;O^~d*ASG@pF30O}JoW6(YG&3- z5KqHPAb|w;ya%s=IJ4_`x5=X2NJ+WLjdwl!&3Arw_B&_huYZ2~0|35;&+1Sk&@-h1(j8yM#&VqvFk^Tylqa2mk`5zOXnKP>ED^Y!ut*jj zb$%E==e{LSpU)?7xBoaE@@`7E&y9+;&vytkLl$roF`pAy?`I4L=t+2lfLmR(U|DDn znT&Y@ZW8dOY&>OK!ftI7SounX!hS>GMr-qsz*1L@cpYvNSj))vv{t$S>%?PELygAe zjE|_Vf=I|D1R7~IlsqtBQm;9fa600?WEw%}*_0h|x*=41o}Kn-cG~mkvVqg=Y|xS7 zhK9=0fLVV+EpqbX2$PcM#Qe8i{@c#g_Qfoueu^Mc+ESc4WNkUiq)KHp;~tmow}pTlZa^D`>h z-yLI3yb|*RtOg}9CF{cBurOMFTn5kTbO~<;d=v{ga;xZEDamK5FG^j_C`-6@wPq(3 z2%jlEm5Pm?qA-{OPPcxT<>Oc$@Uq0@kktaNv^4r`$kDjOO0RS^-ma1k?mDT$kjkFB zMXp1RjYL-p9+t&@7GBNCO2Ow+S`bNo@m!SdTQMG&QZC+n1@t~gLGy(aY5(_MOMS+) zVAvUY&F+Nz(@2T3{CcnkudTu=+{LE1b-tr@P3l@7)%E*0!1p$A?5_1yK9h%YYxBV+ zI}wJ!DW(u!-aSfxVImNRs_5k&V&)@$*yZ2)2^PtYCjX&od&!|;Fk*Rb2g{s zg|kZQv$Cn=NYh?xKvR7jIzYZ>r!%EO6D8Hp1l5>*pL{cNNZvc;6k~0IR(bzSg0G=QL+O`#OC3 z!s$&aP00O37=x!U1Kf`oxDR;7f~Q9{Sb}9(!Mk;+Ljy;f$*70pI0tUw?<+X+Iid+( zz29N&$Msi#g*$&HxYzM_C3&(8Z{YoEih?)cE&NB|ZDgpyy*cU~yq;%!w}7ox$oBpV xY_yQ=egWH7A=?9ZnDgy}99s?V(?~xoVB0QWt3eCr)L;{~@!G&_eGF~*Z^{gIbNk4Z-fS$4fJP)v?~aDsq!H@&^`eIb?^16^G@0h2Ajm^5zC z`3TE%{7!jo^C5GUL50=oO1;^r*6Idbv`6zz?B;hW2A!=5KTwXZHXJWxlTgx|Q)Fe$AR0P3*JA+{gQ<9YltF~@zb?ilpK%Cb%WbhvC!IPR-3t= zBS8e=cAO5gu5(cu=)N@6eQ6-w=!c>1uUl=w0?QZ5>N?8ZwiGbgZV$>%V&Zg5`gBX0 z)zY)=5cA2qJt38arCZLX<>hv$y=4{P;wF7Wj;gr8}VmzBt#hI z<6+;D7B2gtJdaLEE9p?O#0R74kT@x}n?=5kq$HFsTN|Wx&9H~7o~gj$vcpfT$z-3q ztm?WV^wkhPgZaUtoYbpKJrZ)KA@FVP(It8f6`7fXbs=4FIcLK;uZG=CCR^Hv=>n2)9dBdc z(*{3|t8E?_^qqae6)jYNZYyZ*$)%5rUBm0m8XL6*<}qyobeI#pvzq7dZcBz>7Gg!Q zO~O=Hv{={HVJ>->E#YeoIOMA8vPx7ef*2FFrmsxWd&c-rc}hyz=lV1k86U^c@()eV zslz}VnFv@<9fq#_o;r-U)SI{%|0#!IP~~{WZ_)7rl<{W`S~%K#MFsIp>jjvj_*itf z$Jz@aYl;2w=+HE`U};5&M#NbJUXEh0<_N1`Xm6%?9lMFx0X6xGjaaZ^&-2C5ccT`< z{aG6!C0s(G$veKILJ151OBTeOy^5Z}I@_w;Nutf!ONiV%OjbrOqn1MKKCvR+bMByX zv>Up4p;HmHAv}aVk=MbBN&48J#cZ|b@z4-8))>@f(490<5AY0*(^*5yrWs`+i#RTW zuBHS!QKtgU9(zyf5)V+ z(Z<0Enlz7QZxnakr2qf` diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperVersionChangeCreatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperVersionChangeCreatorTest.class deleted file mode 100644 index 5b1e6fe9beae03bbe5ffba72691496285c9ee51b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11501 zcmeI1&669&6~JGw7fUM^*0I5WO<-)m?1oq}0TMvAVUe}Tvf5o|wY%mcU`C_f)p%#7 zm6;xS7m}(RsLDB&dk(qeAE1hSR3(*b&Vgh8g;eF31I6o^ku=ggdql^?hT4myR=@uB zd#_)2zwZ9W7k~aM09=A!7GR3Odx39NBoAcehS@VKwx|Tsx7`ozis*9Rl)|rAP8dk; z5C1TOfV(Z{pz@9oE1aX;HunQtc(sn{?edz>Rl7}u7GRpev54$oRb{<(gIkip%-Z5= zy?J%9R%dX$F|2Q5-`;MO!2>nn1=957w&{et2r~?3-GlR<>GGg!S{#eD##VE)zHwcl ziZIKdgaV1K42s+Jjpp+DT9d)UjTLie&rEczG=$g-yV%Fki?(OW%M6apFKjcIu8B4; zzzGI(Lxt+TFZ?1r%;rAZ@_Zf$r^nldCETv(suH?yNiN%#?re^sqahfwXfN-L-^W|!Y~ba(B-8W+)m|wB&~M- z9N}fR>)4hpjUdEq0ryYb-2KqPEWwCVg82o*4vf%i^Bvp6jcx~P@V6N{GA&&;RxuY* zH7I46p4u5>a0*$PX+~*8j!qK^r89>dURqS;K3f>C0nr9GRjef{GTv2km9&Z<=`4 zS63FoGM#PHw^cd$b6R%nfWh^~*LtIZ_ZHukm=~<^o3;2}M&)XYj+0z(pay71l$@zK zmZT3=Wyk4_(37^ym%W}H*r@oTI`2of7})A)L&;Z*aF(&RCb{cC>74N%*CJp1+n&TQ zcsx6JB9zJC72z2MfB1$tpTXIzE$Jk9-E$6#Fwfx1?JbIK&T^xP!PD99a28zkg%p

    wMg7Nl3oeW=uNM3^W3qQ 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 O@t%MQ$ifZCLH=LMiS_IN literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PersistentVolumeClaimUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PersistentVolumeClaimUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c93dbcb8c8cba17da4379929557020ed8b04cbf1 GIT binary patch literal 8108 zcmeHMTayz-6h0j;xv;S73W$r~0A6-g5-+I8A{xRh1ZR`2On|b=s;$nXchl@#QZqfP z`09)P4u6DIQibpS1b>K+mZv9)nS_or8v>&4!)CUpzw`B()2Gkr?(^#(KR*J1Pob8D z41rqUTP48)QMyleX^DHKK=|DGmY2LP^QrLsl4Xa1V1CK*+RQF(FhAhfcEw%K4jopp zDR=G&ZU;?d$-+Sb3lWt~-R)Anb)Q*+z`<;47*Gm$K75faJ1sNfuKl8?U3al zj||R(i~V6Q?$E6rN+2&8%#CtI&%qplIYhYBVL_K#jKF;TUQKUoHuN>Uq1P%n)Phm} z+GT!&Z84v@7Q=xK8|CY|VG_t025m7rz<0T(zP@3Un~`!27I>j=u_kl6HWgCl)P~+L zt7cQLH8(3pxw^h-HtUV@O~juvhPH^TV4}6?wv;+zR%a27vxXhPlhJwFE; zS$KHI^-+0ym$fy^bGjVW=bo!|eXnIRC%B>&^34v@+RU=4k03PL4(h6%=U%ZtIa={ei zXu{K|CLVNIAz#Jl$t^ClAjBMk@d(4aA6gh4wO&40UeS1IW|aTkNg7WUx(G_*w= zUDVbw^T-}VY1EZbr$-#4Eac57ktFDp3N)HA5*SCp*F$c%<;Ol2zT%eYrJZR(h5S10 zDufI9@x-M7#nl*xr&E5?;FI2~vtxp4YN2!rVn$71@2A@Yl$xiIPbrXb?_f#B+-RQpoSYz_(joJDvV9WV-ORNBis%{xm!zWh6-SpXYO`4Yj+( zeN<^wg^MN1L>VD5WWBWXBz&n7+a4my{~lU^GjM(mmf!+`6U&d^5XtM0dEDr*TIjTx-=uh> zA+M4=i`sXo&t<#+@}TJOfWU?^+gmNXoH;JBf->5xjtRcO%moOVv3jk<8KA z&QXj$!2~hn{+?k5N9mbt4+$(uZyBz%cy7$W`y}(jZ2e_|+s4<*P?=cLOK>iw%>KqB zZq|SO#)E)1*;nsz(W$m`@F4-??>$zQ3(_YcOwV%ASn$I7jC?bwqhPs1Hs$yxv$1gC z`2^06$;jRt*eiM^B?4#ulIhh|aM=YxeV6$@Z!^rUD+2;4Ioerv+c7G{7R;!yv&QAt z;lkvV&_p$(3WnTr3@i}cd9G&Rb6G-)3P)MEP9WPq{$$|>ruxxPlZ7<`Cx_$2Lq-;E zp+Uy);IeQVYdv@&k_7|1hee*=eiJRa&Vv9eW=-7m25=4#jdi>n?wbz5VQgiwm5JJg zSo;X}ABAJsw*>RB5ItXj#pwAW9FLwS;3Uewg#TyY6yjbUX&=G9B{+@0uOQ+Qj!N)Z zcnD{{TzvH>IQL5=_Zt36EdaH79e?L~D0lur+1^dT_MU?6D<#_pDcCM4*gPfMM^mzWuVnjpO12-BY?r5Gd!%IhWJL)HujAhWuHnz13>DDfCRE{zKLLT({O$k% literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodDisruptionBudgetUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodDisruptionBudgetUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..b1ce853c364f1f34c71d7620d7876e81a936355f GIT binary patch literal 9922 zcmeHN?`|7K5T8w)*gn!Gq%_c!(oG5_0cry+P@1-qW3E!9i(}btBR-+^d6R6pf7;s% zl&9crkU)a(yaCUGgqSHZ?smQrz6?AiTxT=r>~r;8 z3CnLGMjmnm79t>vIs4_E_DgOm0=ZgcTPLt+9DizJE6)A~fh$$l@fCB_3uXnp07U|` z_N#kdr%j+3)@#-)RlNXn1m^I)!))$*%;W?L4ZUt`RVz&bWNR9AnjtX1vs=>}-!=4S zdPA>OvC#!%=Ld(&2H)e7J0`~_XN}6HZeX>7VX!v0e0*1E>DzUq(!v_Ij07E9-1aP{ zqUw)@Bh*s@(`)N5P`N7FB@fHk__2Drl&&nmyJYe2=Z@sQYaQ|qHC@{ih=P`*o^;z5 zxBW*{E4B_e?Qqj#5`|E?@7X@5tHLey#-h|8i&AeaO3_%X(vHi0>bQ#9OqmB%ArAl1 zLz~BOaD+?Y2$#a{l}4j>`y*`6m5QSH9&1ZsKBOjd!lv4s_7%EVl09Rk=;x)7j7BTK zr8P>S)Pklu5Q-F_<_;AGyzFZe$TEESh7(QV|W@C!;&=7h7q3mk*gip_{@M)WC_&>)wL zKpYg_420DQl^t3}am#cG>8wIpahrJwm9^q2l$IbL@6jnW)2Vb)mri=$pGe`3GJfC2 zuMuru3DqV!Z&D5G;CxBwQG8fZP1jUHhDfxtRvfE8sWc2XI-9Elw?m!4vZ5_NX{m=B zS;!PLVe%b$8%QIL+L5VroN&W2IN`4eM1OK_XO^|j&bUzk3dH!yUs z1$LXuR_N%4X+qaz7#nmQ-`>ldIuJgA+C=k}nD<)>Gh_8mdskpo5~#kvL*Qm3aFnq5 zmUAe4fgP)aWESP_upd{A_=s#2V2$L06q&wwtr0#|g4M^bk;S%IY}?PDrDV9)ag3gA z4HtiFAaE^4VSWB8z{e!_b4Eym=M{1H^L%!|38tR2$oTc+#sU91H-Ds1hl3bNRvMkVMM-?5Q`oi!$sFh!Z^Mk+eQ}vHuCUgc+)1jUz3N2 z7%~r1RvsQw4_qed@)O=;5{6?`!fs6FoRD5c`Qvq z0n1vf{05eBG};+ z)*o1!0*cSDwNQQqpL1O)ScN-SBJe&UOu+{|sk`_)jP_vy+Wkbd^%Q6yC7|hvXrH7& syO)5rn}}9Uf%a(vnn*yKhR@MbQ*i&tau2Zl1phS1!58oqd<`4_0?&ysb^rhX literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodRevisionTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodRevisionTest.class new file mode 100644 index 0000000000000000000000000000000000000000..8b4a515408ed7e3b30dbd5aa354515ea64a72291 GIT binary patch literal 8371 zcmeHM-EJF26h7npI9}2wgwjF_We9&xsq7n&5aCB51yRYNQIZw`SL5ADJY{#snw^a( z7hLlOJOmGb1QOiy7Q6`J%&y(6)3JAwY(rAz!s}hn+4FxspEL9KzrX(p03XBcI@Ab! znkc`md7|47**JRmT=j;!kN9D#*{H$PWOsyVns z7T>=gE1t-3p9j>JQD1~iqd3}EvK#U!`H*^zogSwF_d}+TsL%ZG*&e6MLbe9#w}$Gs z2I{vm^_OWNc|v2UX~eYOqZ;|}ANr_skqb1(b=K6@JFO{Z9zRS8w_#aT8 z#YR+@)1g6Ui*n#B2R)xL$}Fy_7Gas`&V*9!mGL?O$tF`Q40*Vn3e7EYsFsvb{ix5q z#@(nN3SVfNq*%gOK`{m|^|6#`UY*SqDiWH;0pArdru{Ci;5|!2U8HW&4J>@Kf>e~n zrcQFk1(sd|E4)M@r1&fqVPKSbq9BTzugh376sFwBhfXm#RKj^1K`pigs3^VwZ5DQ3 zV~eBVz6eDQN8@bSXG$;xDo580(eylvbc~m49yq0x#b1Yl`G06tc{ESmhz-`axHe1X zij5m!nnU@PRi;zIoVq7Xj}md+Lx2=XvnyrDS!}^x(}Ni3rUf&NQyc;0)a^Q6hUCS0 zL~uO6woR-R40OeoRg!BHb$e{cPWMzq67Z7oH@H-5D zrX$5M8-2db%evR{!WiM^1}z=d#d(5Ef$2>Tdd(pZa#-;K>43aYSX5+xfbaP@MhIMb}o!OLXo zABWwL;#*^*k%#hP5_&u+W3CM&V{zK?<~_ICL&?sB7S)RXAm!L_6k!!=b^cvD4)vtif~2ewMiet~I~QjxJX^Ba;<&gVM zL$POVyd&Uk%T)RN3t{HAD}}5zd!^Y)tr_r!qfmBIwpxd#Ig6G-9d6+;HsVJD^BW>b z@LXsIH(wKY9gq}{#tB@98JNYp8N9E<99|pv^d7Df{Pz9;@0+Fh-{A6J_*8@E@j9EW z%)k=f&*xO|0$jl-97d5t4XzHTuHpBS++MP9yKUum-GSQ;3%5H~Zm&9UyJ_L}t%cjq qKru!zsYT3f!r;I}lX{X>#yw>2Y$3A)+pWnsLEdKfqto#Qobpmk! literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodSetUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/PodSetUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..2a604dad91e031a99a60fb0e25d420e7cf8a08e4 GIT binary patch literal 1849 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 K1=K_hF8%{Iu8nvA literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/RbacUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/RbacUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c50dc6f0302f4a7a8456534db70e321d78f9deab GIT binary patch literal 8130 zcmeHMTXP#V6h3l7Z7*pP(lkKIMWkF3pf-0x)3lRh+?fvRBxAen@B$;Rl|*GPo?UHd z_!;~RhIeLQ2A<(x@JASq)^@T^w5;5e8ItjXcdgaYcaDyZJ{?Ja{{72u0I&vki%=l2 z7KKh#@<>)6vjbKYK{b-0@V*z-pvyxhgRttjaU^+I^@0v}tBp2u9!TLvEo@YTNdhxT zOPBe3)$R6U?nnZYTkG{2fm!>ws)?}v-YS91n}Hum=F5l7jd=;m1d86_O`mz3Kv^|x z?yPUtN-#xWs$UUxnS-^{+mE(tjc*#Yd$mSwYZEoh*xTRvJZ$h?9&+E|h=0jm->BJ5 z0wvpKZSF?+t<2JWr&-CIfAyGT0$kEkC=>M`l;Q;9hINf*7E#=$|Ws6neJ^D6nMJ$r=L4MIs# ze3!LD;jB=H`ASur(?N&ElIPD${g5&k&2u4{#B_`llh+|*!64kr!#ab=4hxy@^ z$u)YY3@D@Wu*bI&ZT84A{zT0zAJp3^1E1r|5@zH zv~-2mk(5;pN>S!3j_3iWAgyvUA>ACCjD&`1HV1K7cq0~WM|JiT*`z(w_$SFMvr8VQ4duz;c>Yibf_P@Zjw0Zh(aX`if8E2z^MR3 zH)i>F9EY8BaAf+)Xp}}8_mezx5yLi%{j$Dix_^W)ZN|wKB+s2aDKnxpVgtpdxC_bA z+m|xatAsa%-@$ED9_(OGrjZ--bQbxIG+&Jv;QzqW7ia<)`FsR!Fc-C89XAq1+rVy8R0T7tJo;YWibi*zduk)#*O<6P5N(46yfAdhkz zjog^*&Og}^m>Wd;BO&((r*tJ)B85N3VVpWlFiK1^lPV*29chgm=d`C!Q?uNU>&GC< z`#D|--Xjw?o^60%pk!d24d?9w&PE3#&2%H~_^+~I%zsWyo#Az&Lde>98l~=Z(wUpd z$Pt)V4&LnD`=usc2|grX|GRJ1<(GLTNnla0Dm|nGtY&g!cTXf~_E84dLMxLiFqMrD zlqSdUt3~)+T?Hl=fJOKMv*O_ZF9N32GbdN9BCHMFXZEHP-b2KXO%2+L7VT{Vw0AUU zUuw~o4ba}zpna`Hd*1-0TiK literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ResourceTester.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ResourceTester.class new file mode 100644 index 0000000000000000000000000000000000000000..adb5574707c0d3ddbfd6f7a2618e6443277adae9 GIT binary patch literal 8687 zcmeHNZFdtz6uy(bBn?HN2&ky6DA-m=d_lw}M%&UtA!#uUJqN!{Hj{MdzQozt9`Kug z!#~0~dX9egM|r$EyGbW)>`o;G4u>z>%O7d#Wvb_x`P*$18#9>JncKJzF9ZNHC`jBgmml zHfn0C2_-jzRu`M78*0m1qzFVALka>JTM#%|y-R}{le9%8Rj=y!oEC|))~SoqOqRLF zWre_I%Q7j%X0@2@P=Q2UYVXhvvo3SLkT_kT=X8a{ z=?Y5um#vo10?YHIb`Q*irM8cXJsiB8f0Umlsq&08v2 zPrEEXH4uGLX!V$zLaM?~3QZhvQi%2fYzpBKm^0dV&Fwne=F$p6Oj&r4J&Y!yjj79u z)6wjl#RDt!T9`6C)+$&vOlVR3P|KXB7Wa1j9cEEH{M&;F`6(0q96_R&rlmOZrkKV= zSYru{b~Li^!+LcDjK|JUqg~}C2O^Dr)*da^sz!us-Y#``YtCAi%=Sl-=Wyu2&nTxY?Sq z35;|al|wF*+kPvmZPr7_*`iL!_Qfl!jgc&>c%nRD^=jI<{w~+A)hhWZqupLbqBnX^ zviqxO9CL49^SYr#5f~j-MC-9nbNLRFD&PEHcV7y*(~8pdp`kohtQqZ6*lsiYG^sP1 z4tykHO+iNBqjQI4taW_17d29pWs?7mSbL#Bb=G$9Q;_en4b`*2ug+u2CFzC82>p8m zwi<1%W>V1Q;UZYmZ~;ET-jCj#h~1_XH7!n6u?$}i-6j(aioJoTi{slAlb_(xIGG%m z+Z=mDKUANuMTLEs^Mml1Mw2b>J|}k6MoHR4xv1y#h`J7e`PnKuir%qN$DuT*^;P0> z3VFL(ZY&&}uMCGMHyYTJn!{%ft`YL9LCYoGWlhfNaa4b=L+y+`KIunRkKLQVRo&+k zBkOigjsbz||6zBu?GXALd_f2pnA<2iABQzxL@kej0(-^{s`;C1^IdQ9@NAr7Z#eX!{cvF}U zUIOUfFDCXOkZ&^lXlE5@q2Yfm|;) zW}%9^>CN@z{x}Qkc&yNHS$HsT8>#e{h5EpqbbMqnyw|wuGd8gP55NM1z>DxK%)kUp z;;$L}ox|BF{GEY3j!(d}nm-9|_2*CFyVG!{Kc2zyS$MlYK8NG;YF!rBUVwLS93#F9 z@8QfU?mB^g^MAm_M>8KhgG+zmXbdjna}rSi-+qkGY4tk~pTHFyT^*SD6h}Fjg}FZV zyuzMGoD9B;u|G?&GaB}Fg{^4dIu!cri~aQx2l4vPhpaF4*N?-O@D=WN1L?<+*RK;P zzv)XEX*Wi?HAKqWMpBN$!q8nxhP!MS?E+B7e~8Fvvh*yqr_IU`8GbTC$4^*TL=E*Y p_cXjT1oLMj%rUr)+Rea9qV-kS#PJMz#T{5fTik~lY@l_1{1?Lg^bG(2 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/RestartReasonTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/RestartReasonTest.class new file mode 100644 index 0000000000000000000000000000000000000000..287d5b190c7ade1486841c7c5f2576b507e584e7 GIT binary patch literal 1611 zcmeHH&u`N(6n-w-+J?bKVdK}u+NrxF7fuwAsxE^{S%=y(Xj%;TF{xKww z;LhK{-+_2;Hf?A{Oag8k;@I)$?|u2+d;a?U<7WVP3J>Z~BhWQE2`o1@IA$j-5GpWM zi~PL^RKYc~N(V_+8q0N%tCVNK5V1_#A!kO(F)r$`L|}b>I%9Gg>`#t)VhOA~5mMM^ z1g^EW4+t#v@OT}X1lG>6q1H+_;5w;&dnGkDDm&pRO;lcpj9H;1Ewq|sJU5T2*Bs9{ zO?i?rji7=hZ`hR6Eus8V$^MyS|5UO+m%K$&#SN9p(wy03MlJI2w*{)a$b&}s&IsSh z^MB7;=@EIMw53WEBqSPjggZEAWo9p;eY%I`;dT&3nRL!p#1|;h2y}MAe^aX{qxN0Fy=Jc) z_rl>ge$gGp`_WGPJRF3>?zq1{Sa7hiHs^MxQqg zm9Xr9Y2ntVAD8S*7y`ZMkNdZST3p?~WCp|ZnBi&F+yovDOKC;U`|?B>fx)}3!sm^N zu~#CO)J_BL64Jg(`~EKh>k;rqs?-VJ6)v}%m#T7p{Qw2LH}RSVsNu5=E4Z%X>=Aw? z`1U?QgkGT*+2jK^>+Yx1P{wlBJgdbTwC)< z+b`HYvqfM>S_$tbVFw{sOb5z#WgKa)Y%l0@X?M8V7cQ^6ZV>zWnHDnY;`B1i5m-z( zB=h&|?cNLSY65eu`c{*`l5_m1gD>#+HV9m51b(EMuXmV?c?GHj&U**=&H+p&iwpupST z2xPJcF*^LD1r-JcYHt$Pzkobtib=_3Cl;FLyoc(5GO7!<@7_;EVv5}qBd6#3xViWUPp&U{O^k4U+DGhrPUM!i8ONQgdvmr7mYn-l3b7sskU#3vb zu~0hP3T3`=yEkUsf-CUeJiGvs*slfwVG(1RAH_EGL3aJ`K^kns4Xzb_(zdeu$tO2DYr zWhZ^eZ&ctGDLpFCQ>152*q^MTQ-Not!JAha5V-ql_iTEhJ{b9D1@4fNoH<<5z^9s> zscOHI2i>F?`(Kx?1n#`rKaX8=jg)>lTi2X&r%u9W6-@emC|v|h6)%N~=|Z5_SaFZ3 zRK_*$1guWdg**|aG`W#Ig^xP9G;@_Y zG!|ZhZiy(uo6{~fj}hDiyv4+e+&Nf=^Kb#BGD;<=plqe&izr`$%lK>=7GN=%L9qB* z!WnO)^blDH{#w7mmG73W{S5E^fl>*s?1cF2MFt4%_FsY#$e3Tg_qnCWq}DtmE2BaQA4f_fY-}KNYmxeX!w^zX1h` Bx}g97 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ServiceUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ServiceUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..3699dff87b241d152035f3129abc57977444290e GIT binary patch literal 9880 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 fldYVOtx$Bbt>$FAw>bDOY1;A-};WYO6B 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/VolumeUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/VolumeUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6b83d6dc27600a3c6f31c081a99467e54b006607 GIT binary patch literal 9550 zcmeI1y>lBy6u{p)j`e{PCyt#D0^#C(AP10u1PF0HkYzy>BwJXrGpRi5)7skPJ~VfG z9-NAbii(Pwe}Ix9%s@p$LjeUXEj2a6Tiw|@+iUxBL6$w^!djj8?Qh?{z4!L%?XUkn z`w0N&2c;D3Wu9ddCqPzhYH)t>4xVD=HyJf!HnFzZFnY| z6Wnm?I4lAE1WvTa8q`|O%`84j3 z{e@!nez8)V&6f$B+0r{RS6?Vi5ja~d&elq`dU3kGP$=h1l@4CpuFJ>E(I?mE=nNaU z%`GnO5;&3>pC`~?z!fIo1c9N>f{Kn~J4qNO!`J65hq<<~!Wx=xn=Nio!EH-xIrgH# zO!tC>d-_&$!$*C5Zwzi4wqHCCo&SFmj4)|;MXJ=HhQW-Q#|2X?OB1$6HL==a=~T&V8C>T=b3KfX7zHeR zRXrU;o8||;%(%u~&9fS8iCgHpOW1?osb`3=bXKciOqD$-rBO@zx(^N^)2Se4?xNI# zMY|D5PI}yENX51|cz6|6=C~X~x+Mw*<>sD^-G|F5wwlbubIy1!BkaS4L{sTSc7DIi z5O2%Yyjq@RMxU0Hpp{ch8As8T9r=qP+`k6 zjCpE!Ocl-ckH(*Q)Dm2*D(t@@+6D2w2Rna23@MY=;9cD-jl1YLAx~1g8NKk#gS^q{kYZ712bQ-y>_q%i)X;tl_uo~9;qlQ2%mP&drgJ#R>LI~5^t zTG|R@&K7IEN&5adv{v};CEfMyIGkXuh}*mDoWP|{tf?{GVWM+bw}XldCmVwFW~soP ze7VqhRIPB>w&@>X=+W@W@8Q(X_|yld@pGWva}>_t_d#C@&cZo-A~@SIlsX?s zy@Ksl+N%m$MM--t0!>rUYD(Hz1llD9?U9mpB?3*Q+k%pIH71QIX|G41WfUuYqNH7m zKzl<$bCk5VBG6QC$QMdlHYV*$B`p_$_O@cBUnyztMxb3+(7smE-it~5MoD`=Chc1# z?Sq)K@07HgF=@|~v=3v_eo@kH#iaeFq)o)6{i&qgj!FAVNxKu1_P2s|1n%NV&t<8 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/WorkloadUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/WorkloadUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..3c8e015628c331fe548240be65436c462ae409f5 GIT binary patch literal 8491 zcmeHMOLyBu6uy%-mF>RL(s!Y#rH`bvHm^dV4^SPYH7K^Rl&0Zj6nWyPl{7liI5e#I z6D(P=Wy6YdfCCH8VZnkO|AG}ifWsZxj{J~gBgzJ{NXFy&?l*Vt+_`h-`j?SZ1Njs+3EL2t>Qi~JVT~-!V0*AGDNJna~d4s_IBJ)CSdi=iWv}gvh1opa{ zS3l`+6UYi-y{Z(|4D2JY4+lNdrJ-+Hl)%w@sxq&sx?b1S+Wk^dtqXVt4iY%hLvwYV znhl4BA%RRyt!kyBq7xvcUAX>f0@LNnyoz5;YdYnqR93f}p2=GQ&M+gsyQ!6N$u+um z<2DW-tSpz+TD_(&s5P}*#HGz>l}|hxAb?y-<7j%^B4?YSuya+|=e*}41ZLPfN{1Xs~2 zu@k95z=8}E$jsMEUO+?UY|w^mG1s@zjJQPE57??h-S7=Lmo?U@+@O|Y1_(m$d4zV9 z&)F>Bar1oF&GQ{M&qr>4PHr$7${ypgYjSH{=Ey@I;}-E=9y~mGad`4Vz5ICAwm!D& zvw+J8Uo%$&+qy1WrYELarE+&cJIEa??Rd!l_jGi^(*%)W2WdY!E3u$Cjw}lGEzExY z3&081`|m>ZmXG;G7%rQEhq+;xU{ski*_8RFPjlH4=1R6@b2)5bdWyF`rjbF*!u&{X z=bf{2vK`7TuR$>NAR=Ra(FK~FE3(JD@G6{o1VDa+r&MTxvU-~tYdU~f*^`Y z4y6LU>+d9_V^Em8CLnUz$)ukosy{(aP^x!v{op$-+i8eB-qs-PEITbImt8dd1mRqE zATdwC^lCnUo=o*oQ;+&yWYU;`k2Oi>wJ=U)8iY2!>pWg`Oxx`UO{RJG!7*lvE^IPV z;dVN8FvDhnK?8R(srY3xMwu8mDRJ`iXY4e|Vv|i8d2`nYlZl82j!XGEYseu6P=|8n zp$E;jqtX?*-6lju@uCqyRUUfLN8Ug1ejBsw;RoMj+HXDn#_(_9CZiQ~i7|{jkod9L z8_IU<@-NyY2Up<5eJ}?vVG(O~xH2Y+9tSmy@#U7gN&~~hI)*5rG0SxBn}IF*oiBIu zbvqpYy!Q{Q2mF5U~vHeWBd9H(2LQoKfuS`i3?3PPKk1Wwml z9=Bau@;2_4=pmA00B`nIWnHolXt`Vm;1_u^M&R292cJn<<w$-5b%1n*&;d+U;y-~$mmq5`@E9}$o`$4P>Z2^{EuCrGf0Gesx4 zui`901B2;+OG&VX#btaSNwAKzovc@ahq$EJ$`UvPPK+vmOW^hW;2~m(*TgdWq8*A9 z%)q27gtLGX;SUW5;1o>59_&fjn}Q7Xb3OgN*x%pN7x)=Cw1q#6{iomv_K!yL$FP4K zPT=QLa1#GSdm5gO+GpTQ)IJMx)SiWNQTrU6kJ<}xF={WtEVjpya}F-!|L3vy3TjKR z&3y+~Ru1RCffs(n-W0ry|AqGWlL=w~_O(%P4PM0_ULD9V1=l;M*RdUDdn1AEvqZL= zDcQbAWV@A;?WaVx+bP+8Ph@*D9UD2B$o5uBwmXSzN=mjMk?l@Owl5ReiYeKCOJti* z$2KJ;vZ*QAv_!Urlx%(?+uf9GpC_{2OUd?aB3mgX+aHN+Z>MA1bvlvlos?{9BAb?y zjU}=zreymnk*z!dTV*(s@A^KG?cJ1YKPR%)QnLM;z%~Us-cnOw0K@ha-e}9P0`J3z PPzMt%pwI*x9)bH8aP4Yl literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ZooKeeperSpecCheckerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/ZooKeeperSpecCheckerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..2fc4093c55b1995be8e89258898645a292eb3bf1 GIT binary patch literal 9905 zcmeHNTXWk)6h7;?^@X%4>4i3-?Ka#TE;g4^peYnL5hT=3g6)_oFPV+JvA5C1Bdt7b ze-yWC;Yc1pV8xsp32({6F2^s8+@<{Y2ZyIf!HaD9(E4eXzR zG=WP#h{3FOX=CRp*Cm0=_0@7sTiMpuo7X?O#1g3Uv zo4~oXYWYXJ@h1KiCTnv7)2mv!(pcSI(JJL91jyPHYU3G!i~akJwW_wU)lheD5jg)q zSVDe>c!k9#;xD5PGB8hIW-u$wacn0GH_7bJTb9FJ+vxEY)orsY3?_wb(XM0f7~FL4 z(|oSc;k3ndL%luiGJOwcMHhr!?CZU_ulHhK??qql3$$f(ms+-@CX;%HO2pyMa1CS_ z2UoMGR{akf1yOOuO-`Q4^xk?d`}AF3=771jn^x( zW_Ass3rSrM*#zwcE!y#PWE>iBM`4i)mwHxOGh zs|bKYkonxPd=s%oRN9nL`Mk@qpU*j`CKN@lLk54$cK28unI?B!MMp=CJN&{vTwhcX z`xfqFH=<8IhjZQYUBPnTAtHprz%j)0xf;h+(}f`d<~(kyJ?038oI3uxj-hC!jUn$? zW!)hXvG!A707H;gncEpYp1+*vE_X%SLx29N^&cp8{7ysWTtoNhIXXXnQ^nHHXFQFfhEGoM>W8`#$>h+fqdgrGDhtmUtz<28JIp%MNqv z;sq}VOGd;xF*s+8F@;+Q*mJxQL$g0SNQqw#XKLdxRKg_*myFI|XNLg>QQS%AGzl)5 zT=<@cIk-IyZviE6wQ#f)rixNC6-<2BJ#&XU4V4qAnwhOLquI}q`Zv?EBd|pFQ)N;W zKdi&ew7I3KguGt}ByhV>@uQuk#Y$Ajx|D?iAunUp$)bA4iJjueB#CgSz%ja_af9iq z@T;kW=@;f$Sd_(`HDB{ADNMeGHCY=#UuOp0?Y$M70mW4JMRMz^nge-hY(tjsbLl5QMW7W0dc!(rf?-$%-B%vc_ z-y@2T?w)c76izgLe6S#Je;c8rctzm8!z94BUp}5naxFj$*y}%$L zqq9s#a|g*t>v3y9NcRZ*c3Olqxsm~aeBJ-X_JdHhfSXYcR3%sb5s?hs$D=WR#-4!( z1a2JrnLGn{3g$`_SO&g7aPlW8FXKs@s&HLQ4IB8~%!NCEhiLFn&3UY7oWm>NZw9h> zH;4aIpeh~Hq4ouA&xG2SussWx|Chgl?W>{oHN+%XD7lW;8;E!pMT8{mtwj|NQbB0NjHI zX-E)y)l)z`4pA-P)xMCVej4Vg<1RZ-KxW^P9z5 zdHG3sqw%C#+ia{ZmumzrRm?V(tW|dRxD>9#Tve4~kGGh_Z?YSU>t(aLSSk~kuDs~h zME%`u6gXKDuCJ)88q^M022K*lJNwsN>M-A<79)@@RUVr4axDW>1ajEc87hJCwZ)aS zMU;pXMzqx9lJ2K__}DUWm%CiuCondDtwG>K3GI}Iiv%WLC{>nH$P8Q}r*A!UCG&;7 z$6AIZ9FN;np)Cwgil)sR|BjK%*4xZzG0WD2H&E4Gy3LF^E()EwDICmAp`&mioSQkL zC75rxLKzNKR@+dB!=8FL3vnEr@q(W5f>y84A2rg4JD!lrK=Ccwl-#;)Sk%>BHJNcR zppoRrN^hozbOLVxpC3u`k(G{I6<-Sv5puiVG=|$ppt$`e2o5mbkw|Q#uTn{Eo7rZ- z6-#gcLkWW#YTskI?5gA0+~Ugc1LTd!dXSdMz(Q_mL>zJcn!$Y|a9eDPyGT{Gum$gF zV5_)v!B|Hos#{RXpswaN5pWDLmyJ`*KAOcvHHCeM-s~rQlgsvGq6yORv6~?qJr1Ez z*FHd@%u>K@q{w|lk593xX7iXKxT<7R?wB~Q$X5r`qMJ_lQF;LJT(-v09V~A1h*%${ zsnPuGQOPM%?vBIs={ZVO`Unl{BnQEyU9e9V16UyLeglZVjt0}ti#ckPd-kzd7!x&2 zxdLfnc68VsFt`T^Qk|4JOtnP|7pwWE5H_Q3!osDKF1_v<-L`*`Dd)0_I&}*DGfAUv z2VK{hcki|7RRZwnRd0|r=ViNaR}E_uv`@n9#JxGPU~fa1f#+c^>OZ2=#Tr0w(?Khj99)1ac{m5}U>RxtaJ@&DUM4F@3^oF%$z)wG?YdwiENVA8OMU0%3DxF4 zflB50YF}6e%ITU)cnhuq!KiWE+1lfdO(jY~qcu{{4$b5&r{ zwNGG9zkR@5eN4b26F%aqji&)78nwb5j>Z40$wFnvQ~NQoa6-ynn>mPPcTxxfSM=A& z-H@N@8aA3IkX-F!VPCPQh<;wTNAp;rO=kPyfbi%b9PM(HLLT}mXNFvGh3g$+wtJ5Tg9Nn4iD>f!pna5p_Cq4t^#RZdhtUX2MEhh&wC@wqJ{=P6$3(On zL!$kZi1yi#Xn!W6-5e6_uSB%ZheZ235$%iN&{FwCv|B@>%_gGV9unjn}J{z0pcqcI7oORGHRnuePn3 z>7{2zmQxg*_yaf)PPyc7pbCmqg){J1z=;uSKAL8&9!!IvD&ogQoYqrt=Ud#+hC*C1){zy_BdFjAa@hC%%GUVWW^99S0 z^gUzJvJi^}+=-M3pFDrzC=~9Ys4t4(=*@1@u>Tj5aWwxwu9RwX(uj{l%rEWx`K1;0 z`*_O_?la}%h!q(8YlqTicKD>v3;709%yqfjibTjK$kx2RD;yEpL4-pk&O|u5smQ^> z(@u_&bMv+c?8xu%uJCb?>7obMEONtf>7u=YW2)|fl+Ap7@=3sB$U=Vn6gt7OaZ!EB zy@wUVH1a}z-^1zz4XyaV`aFbUTPJ{GncI zpv=}WgI6POgR6BNK3#W_4s+XSIMc>sVNV1WE!Ce#1q*eYbAwVzi@PY9NL6PW+=YhR z+fiz)}#est+)qMI#x)#-6(>n>*<7b|k= zb&F2U)zj;R`SuKzEV?sU-JxP;(Zx+YJz2;rT!o@599%-Pqc}=x1vnzP#wfpI(dCJ1 zF$P_LTH#p!oB*}DuGqxDQTA&_ekeR%L)kA72z^??XTMmWxBO1zN3 zo}nWy8(Qy+uqUH|MkpGW+2hLj19~;-J#Qzq-J)2wy3>~d573UmgbeAc8mN}t?{Ob( zRbOXu$D%pStthS?nG{boZMa~Ji(b{DXhW;(vx(XTOXwjmVYHPz5%tkG|E?pgeEn?Am z4IjAuwn8~rC1&R6E?hg7BZyak*M%`!Y{@#uo)0Hj^p-}g^6;@#TMdcr`pGJPyc}WX z`y5^Ac%bvfxX#gP-j;6U!I@aogHfyYYTUMnnXHYr=+?77k8Ih6xc01wwQa5xO4b&| z_11yMMs|){uWcUrAnP(TM|C?xL1oL*xZ> z7kS^6Pjq$NqSv&_VJ;5y7!`P|yNJM>2lnepjPQZ8j~p^2KG98mQ6~&o;JL+ue z#VcMc5{meMcZ@QHmW-6cmxSJmE{t3>`u-7@()BjA`#l+p)N#zr2oKH0$pF+`md^*_)u+Rco#o{{#WjI_r_+O3SVUm0m-(5C4&X4Emvtje>`G3&QR zZuP(B{@%!4dWw4|gS{UaxwVX5{ezMAUN##3$HCsU+@j@-G{;D*XQchoNL$HB`<;=t znvwRYk+znR_D>_Nk&*V9k@n+kwCS@(S~DZpNNXBt>ltb0e7l#CW}fx!j5PDC zzn_uziP3LA$w>RVk@kK@+P{so2N`Lf8)(z?Q|vxd^t0hw{t)+l{5yyD<~!JveohjkeMR9HeuktI~J#`49oGuzp1n9EjoPXsL= zeE0uYrB(XwKk&a;mZxVoW`=Y!GiHJdwJ*EdJEy-s-RFL$|M>ft-vHn<_@oRa0$(fX zG&NVcd7o{vrU;r!OW}Pdn!$ierUTh@+)!yQn_kf6Zqt#WP}~W8Ed#gNibk#BsLgSz zqgMDJkT{`(sAV`r;8+ChGQZbcUcb*BP2kYoh4vzW*`@7At2o*3T_JE3;gn{+USn>^ zD^Mj+^B&EQ*dS0fb64*zv=%EcO<)?I`OM>Lz#LBC@STNQcNPegm+r8Q2MqC!Tou01 z*9c72=hkrP7Ve`AFA|v9UVKr?Kvv)cIsVfZzT_%!H+h#jfj1B?(<1QcKnCkB_tdAf zR_*jT?Q+Lu5{Yox2du~GIT18QXV=&|yT*v=Ms#+K#Mzyr-GD3V2by|JJAJAVl|LNd z`NUCCJ`E$EhGDjmca0&h!ZQ+~+moroe6#R6r(2tS#wi2YOWSmGz@ZlIlPAo;-TzK< z+Z(vT5t^zHJpoVr2V=ugZOq@v6> zIzI%CLDs56cVH0()d6KxKN|3iM3Emz0g7mDgu?Bbt?e+5+-qjy-Z;pV#R}#<$2PO9 zyqEX4Y;5RaJg)mem-?aWMh@PlHpUei3Ddn+Fvo|G>4&%%h=t9#uyanWRkIvhM1w(Y zL-axnu_n6gt#T_S-a5h+dlPRmDHsMRv z5*m>Z;yorY4Z*}m?JCY~31v{*HXG~;l*9cEopTD(=S=m}*GugEv1~78ft*vv#gI&< zx8<-V2D2U4bC`2N@&{@#nSF1zKp(;7AWg9VyLr{B_W$ESC{r@=G@E%sD^iXzcPu<` z6D};1iTRr1Bl7`piNSuTn){6R=^5Pk*~o2wlewb1f~|s3I(+e=!v`5MxtKCCrMT3c zz6`!q^_GjntGj_-yF@Wdp1(%F|6zYez1spQHW%Z1BJ+vN;{|?>MBu4Rd1IXQ z!O@?GbYCa}-z*($!x#Ilr!+eBn?f08x{2(Mz?qfM*TUoIh=dYIuweR-QCW-39a%Cu za-{-i3F&3&!=^`$@y-bor;}b#B@6gsas&eBjl359o#OgZ=>E-N15Z`pJSqKIj7)Ow zI-UyWoH{OLxB=YoQ2+Z$g1t>p_FQ?Qk8F-OLslZ!gYPA@1 z7{BB;ai-~R=@~H4SeVCnG--@(y}!wk-X)Y~ABK1_t0A^p6}U*I{wl@_$2(E5`-n;N z2;cB0R4t{DoivYf7x5`&bsXL8!~vn@j}Nu zDV;3FKiDlW9{Qein|A-r99u=ZOJA#~inh9cu8Y!~xt*GWSC{ZA0#ofk@=l-mLp8$6 zw4P4e7XEF8D)%lSYtO36#ax0-cMiB4g7?5yqi*XhVcHxQ5*f#1X=(?(LUd)S3?G3ySjk>IyV^A6 zr|?IZff;z`M=>1j#?9_zjkQUr$>0ZHv^x5ZbaeFT=&b(y>(}1_;A>bbz?25x1in=f zED)7lx=$qX@Ga%wn}m9TxPd#Wa}PeB3aaTTSD>(KH%0)H82xK6RPjWZTSVuEkKxMYFnY zm@N&8rb#=@4)EDkp}g=R?Db0jkXkMMQUZEuei&_Jq<1_uROw0)Nq^y zco|h5jl=ML&o9EO+QQxsuFnF`-e+B6c}}0(RB+EFec$WY%n9xiz0~e8(q)!SeH6m( z@6jDbmbh0wG<11j=<=bV%aNhWXpJS(^;ke$PY{O+t49Q4v4cJuIEjT*Se8>*mR&5X zA;Xf%a>o(sun#zMjEQ3FyI^!%MsSpTlb zL+Vr8W_By&f@O4t2#-)Ap7oht+Hm?dx40ldh-`yP2x-9&Eo2=M^T_fF;Qt{ngHnXLa*@Qq2}r%viU?>#pOl2sWHSOWExaCbyDJBKY^5bF z6EoIHg>a}5p^a!C3#oNT$t-o+&rqqC1{+33WjyG8>T`;enM-uwX>uDHiX1!I_jG%Y z*5ZwoTOt%y+R~JSCS-X$W>;eATwb1VX51Ub##v)i zoXc1*j4X2~Qd&zn@N$Trwd%Al=9(Gx2vmm~aB~)}!fP5_Up}5zlj*8C6VJbm(CIM0 zEss+&|K?c~1D`dQ<@`=365nbUZz-Ji8r{7f-;0vse-(?oy%hYX@c+TpG z0=(aWmtbaK5kD8PRKU^{6tS!)$}eI05?sc*MVN#6==TaNL@n_y30%XL*Rk{|qG|Z6 z{{}aHTzKUdSo{M^Q}8-|OLVE}4g8*srQl5y*dykLfuirm@27vo;qX9JnPZJXcmM1pYW=$#03%nh^J1ffh5%S{mJ9+!dC{k~BBpp#!$-OCLe-+&1MGZ~0v*#Dxt%|lC| zeorW29}qazUf3isv5W&6FiBu~FZQu9+BD$|segN=3{SKi@*WL!6bs3$(2B-JcO{RK zyVRT97;xI-p=1VwVixYOKBx0S`vr4nNv3sgON4;RBT~b6HUmr&BN*ZOAH% zD?oEOMcfW_5A)ex$91gw6{&T4cX^=YG`OsdAEB$Y5h_9%jNCXmj=(e$JS>bo< z9p@WMO}I>I??>6XkJlnO@#gGb@8>_>exE!h-dvXSohDo(wYC3Gt0#t@pF{qIp`*ao zb!tNXL^!9O-Tz~iogv^R;2{W)UVtq@_pf8yz^BFR8NmAl&DSmO15ACvw>6l?*2MtE w&R{#0-Ft8zTKGiZ0`}J6Vi7fq*Mn%6D$rV$Xjeu+yIO&Es}gMv+0@|r4+fRZasU7T literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/logging/LoggingUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/logging/LoggingUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..dc38d130d656ca814f2211de7c0b1072b902a9d7 GIT binary patch literal 9695 zcmeHNUvC>l5T8xc#C8K|(*|hEpKV%N2imiU@_jAG zY2gKXc>Od?61dm^@fe=pE*)}L6PUU$e4$qfoXaon6PR2>lxfHkm~G0gDTCtWe2RJg!?Xa znQv}c;`HeP`d#XgAjuf1H(sNLl=XS zMq!p;q#~f9U*-qGM=w6WGx(c@o=!?TbQ43_oIxqdeB<^JZ~_wD65ZZn6RIU;RDW6L zx$L$oa}2*vm5DViFrGU7J1L*c78cQ5c88-1uJA+@@7>Ujm=X*#K`y(=>Q>)ll_h(icQC>KCzV=}#Jlt=3xZH;C;kFjLbh=Br zZXyGxm9g~RbVfbn0UMUy1p~9 zvCHd?u}QZq6g6=jG&JlVOQfx^R^n>U^w9+7iqd7?e%x2be@^PE2nc*!9M*Jjg}@z+ zjq8JGD1lp2w9$MfbahMm>&F5|jK2Oz7?rN?guWIvjt(ONfm(iGMrVz|04g()YTM<*cj8+{DJ8_G7Wl{@ z1C)@@heQ0y>zFOvChO9H9jTpyB^w0ijI1?F z(z?{5SPQKLZa3L)YiU{pGmt0b&olnppARMjw#|O&JRq|2^Y7)8p0L!mk`_#1>GCxP5YIkv_Gt9Z>2zc+oIdwR%TD$9z zg7^k}0=@&!NFc#G9||#RyQ!;l64!T8)8dERo$c|@vorIXotgNbfB*Ok06v3j^Dsl; zE2DkSa$~*w?0|VfdB$oH{wO>ZbIq*Mo-Y$)x%NU8aOs5{ulvT^&c3(Z$vwP(9%cz# zN_%tM>N;$zuOt(9)UMRNK3ZzIi(k_SAX zz6xU@nH4Icu~q}gL-Q%^wD(4w2HclSqfpHJ2W+3yRiS#h=DkOn_j1j9sph?0^Hmxs zZfK+|4Vm>v)FK`~j8WSn9@?en?9y{;_Nt?2`iU@B+ETo2$OdSyPpHo#_s9XKj}};8 zGGAx~%oj{j>HX6dow_TrLY^jA0qc1X*$QJRd||0ckg!Oa2z{RTNL-pxuzQ^fLz5`r zLlI$w5Ah2AW{I>#=^ouin!76~MOox1kpUMVF=UYvC6=XDQAX{sJvTiM$#N2N~FBY zWWvjAdd3iy?T$7YiZYrM?Q$zT{6;IcES{LnLzk?$&evYeve{#{S$vy6+~pFzf^l`S zGm5sIp6Gc942-Q^+!mw#+M!hwVTU6-eIZ4*O&(|e1EvMT4Ybofa$7Yoqkl_0^#m#Y zcbZpEfejU_c;^B=G zk=H+CT|J|&5F;vkBw#8n(u@i)!QFV-}J}A;U+dW zcT~oM?nD8;gN<0CeLht#j)6`}!!f|~!N4)KnsvIy!yaE}=V^7!aE(9HuBt%vdOJr4 zTJZ7$yacZhSnl>8PhYaib%z-ATd$*L$vBB(T(1KEtLbs~_`|vvwp5fm{7) z4Ug6cEVyCIO<~+)0|F~MNn}OHF)D-+ceDYl16=7>Fc!Q8%tBj0JPoyty zbMoxERst8DS98<0;4O0Dx2bxoDX^;)*iWX8NrxcyvQIj-4UZ-e!?CK?~j?v%fTKPXAR=Z~9qpay6y)vuPgBd-FJXqJ7?cJXyO; zU^P!xZlA%qHV(P-(gTO~B1ntJ7Em%9PbX~^_SMYNP48WKT6dPgJ=Q`ty?4`lV;R$F zKdTu7fzEC^OZ!r|rg}L~OGhtHq%Rr3Rlv6-@ZAi+CY|8l9DdH@(MNce;CJUwXx&@t z{0<9$VKGj9n1g# literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/NodeIdAssignorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/NodeIdAssignorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..d0f73fc7789c092d90e7aa0495e66a40383ad9b3 GIT binary patch literal 11379 zcmeI2&2tn*6u@7vf&DNLL=cn@hwzm|+(kfvY>4KA;L0X}Y=Y&@$!urSFf%>Q^aS)^ zdA9fiEdK(JmKUqEN_;YcB#kB4O-U>ZaK`<1>?5nxO~;5mN%{y^2_T~t5d_&T@-S3x)h6i-GmUmi5D0ol{SXQn4J98BA!Nk8>U8nvJu^ zH*n5t;mjQw)tIOGcAc&<8>ht@UcukGZ;GgNQJcpMA+Mm6rrUBJh2RJhqa5dvVt_Tl zHC+>*I<%0Fr<9!(UZQA=!AutBlFnHenz5m~Ovfw}&Pj`kb&g5MrMjTEFzJodFgeD% z0;i+&j&^>_j~W7FGN!LTz=8$SYDa37=5k-m ztmAPr&4ET>c6%d(!{eU$lfdO|yIu6f;#!S<;#1q8F&hY+PcR9$s9e}iWr+@*zW;z)`&fYX>>*c07 z1cHYUJ)~m2p5Ct4NN~hFqU>G<(U$Q!n+Pt4sJG;b6GmxoLqf^mE`ujeSi>EchD^Ks z9(CouEeJu~tk{coP=DdWC@C=O%j0M~!o^8M;DBtJV|E?$2{u&h8@hwd2bCxSh4$$$ zfl)=}S*haMQy#6xYFaD@^EG@frVHQ2I&`s{-b805+u1VNLC?V?AyeCDy5Kok%&2E= zml`wvNo+1Lg>)O3a#e1UIvh{n<8B%Whce(!RGZuDvTAIn3HkDQAKL_5(ErE@1c7q5 zA#Vmr7%JTY=3zJOv;otMpy+-d!${q_H7(^}j%3FA!Ie)ITnVByIt)D$?9S3sWXH!> z!S%1keb=CKOrED4>U^LXycv;&4+vzNKFvavz@AuNSy;f=KIHvp;TFCIf-7bgmIw?+ zy_bdM*xMuF$qow5hYv}Y@rkMjCjj;F1r`7ef9-1#M1AJCTyMtfUR6q^&AxCsWcKCGAv7+UH8z>6EmGO4^x}w6B%4vngrc zC}|@pY2PVnqbX^>C~0FUX}>FJZ=|ICp`@KlN&8z#dovx4RY^Oa zl6G53dn+Z4DQOo{(!NmAE~cb?rKDX-N&8kwdpjlVS0(M8l(avUw96@Je<^8KQqulW z&~k7U#<315WBrkViJ%48R o)6$=9>F;joUsvdlxBAb(4V28l`>=xFd(kr$xC!&H2)Cj3FH+;$BLDyZ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRangeTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/NodeIdRangeTest.class new file mode 100644 index 0000000000000000000000000000000000000000..e71519a05e84600932cfce6b18844537a55a9387 GIT binary patch literal 8548 zcmeHMUvtw&5Z^N)cHBT9KwCop9O)k%2vR%KCz5(54Qaf%oWnrMv34@;mU|BW~6dGKh}mTH;{eqyCGg9DShpB@L#LH&B6iiAwU&o z2%Jk$e7xu0-F?74LtuVqqusjw{q{!Zo2@Q^)9o%dYXs)HVh}PDD^B3Dy|>;zn%hMk z!ogY-<<7P`;{dbkA{3@c;8bH}hrrAxs!@fr1Qw3wZz&~J4bG8;NB2X;we$)Q&Z^V-x>IXzt6m`L)1*a&}` zU;(WET%;95zVL*hI>wMhFNWxs*u&7IX^b^isL(VH`+QG?Xz)FJg8y0Uo2;}$?_eO? zCn!Z(Xg!nyXCUiy7>YSoqefCj&7+8;L=v6TgmPhCIK177&!pK2E%2#fUY^1Q-efaD zz|BzhDbt!Oa~t<{N1EPH$sZaRXE&Slr=N4e&2D%b9Q0UHOn2oQ37N6Plz^PDdSY(f z*!0l}>#cB~`J$hJ+dA-gWV3j4l|GYCGFZh`6S|RZ{O5CjxwcosZ`1Q=CTzp;Qi!Wj zsI1b%kl9l*NXmk|EP)^KJ+8FPoi>pKLTfC4(u9%%jOCH?ZKWm4D9KQda=#tXurilC zF5zB6o-9TMitvTvHA!*FRJ*TY;rA_Zn&6C+#dR%rNO8e$#Jz~VgA;R1n6jY)EE z$@@YZsaPitcDd>?l88P-p_*woj~CfsKU=mWn6ciyd2ECT#%% zSGMEOh=60&DYQTpHZ0Lj9-;=bZA&87YVaO`zl(GhrdJU!lx|Ks_{mX#?G|g5drWDb zn5G6F68Po+v{C{~R>jOF*gR?o)L@y++&vj}Gv!^$1)q}yXT0^~08DyuV|2OXORolB zI^H>Xef%~`iXDD1$~rapgv_>1Jj;Y7iL~suB*-QCPfwIeT36D#H=zAR;QU1DCvYu? zGUbt|8mth~EbuWZsp|NFX@(mSsCQ+oJpQ$?9Q0zQT(x{JIj^n4O+0c&wpImq?3_Eb zE1q-TN!zwPJO)x=DWp( zU*Y_p$-IkrwUU5nm+(5DO2OOk4vq-CiwG6CJd#>UB#xt9$w6~-(cUkB_CXHXtz0x( z0PSiH+D0zgM+MM6&Oy7Mg9h*^Ttn*}THbmrwR|H7VUUARf$KP@0yp5Z#P$_f1?OMy CqAmge literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/VirtualNodePoolConverterTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/nodepools/VirtualNodePoolConverterTest.class new file mode 100644 index 0000000000000000000000000000000000000000..0d5f2c9e2a53bfb092d4f39f48d2bdaafa52c7f9 GIT binary patch literal 11177 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderFactoryTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/model/securityprofiles/PodSecurityProviderFactoryTest.class new file mode 100644 index 0000000000000000000000000000000000000000..a49bf7e619e096edc56023737368d4465108507e GIT binary patch literal 2607 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 XXxA)g6?hNlXa$;Z5wBCYw%-32_&1d> literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperatorAutoRestartTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractConnectOperatorAutoRestartTest.class new file mode 100644 index 0000000000000000000000000000000000000000..74a890ff9aac59bc85697c8e853133d5f409b710 GIT binary patch literal 10513 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractResourceStateMatchers.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/AbstractResourceStateMatchers.class new file mode 100644 index 0000000000000000000000000000000000000000..d6b05eb954c2abbe7e72bd371883d477fd6c8342 GIT binary patch literal 3250 zcmdT`U2hXd6g}f6tZf2G1EC*48A55D6ukYQFSUtOrA0#B6bT0;#M5{^aR$~q*32w| z{wJQ1TB&{Se`>|uwY}bLt=K@KsxP}cGxwgk_sqF>=g+@?{T;w<-11Oicw|lJJ87N& zL_8C|(!O;@4SrF+9!eveHhvf-)=4v+5Z1~;H+tcJ-z8%ay8F`V#Ducrgp+&1g@@8u z4@(Sd8EPcrzJIU#M23#xR9nT$?J&I8*m}sYw5xm4Lyci|YWt%x+Ej6xEnj&M8$yqs z$sP~&V5lPDl#cn(=x!tj_B&p$?H@|slVKzb84X4FRP-g^RJu7%r8!BZIZkCdF-c{U z_q4P;){YO-__-rY`Fuzb7cq&fW=d8w4Ym1ZJB;E~gP}H#PhEK^;&j`t*DDw?<5!iMh<*WJM|QlWC(CM0cAQ%w3uLXtQiX|u7#mE}p?lLsoMV?Ur3 z`W8v#iq=iOM+K3tkQEnks*@3L0kU2j*TIa;xzk*5_hKmPwV%YnQ*mE*1=UC>=NRvk zOGg~YAC&0F+N!v}*d~iv1&Xrzw;GGl?&`RwvidvPuAEiY7Um$IY-%SL_ijWjWKM1! z>ZtLoiYrq4mITyM#hDc><1E8QBbc_((Wb4m#jXY<)Sr_(~YfQtV~*{byPnVE-@6|<>^X0C~K*;)2iY_hL;Qc z7Z#I!8Gp`EzU3(~oS)=N5 zue%;Yy_4NI@2Iq$Z60|M%`R&mKBFF!GvcAaaJHPdhi#Hfc`hTv!wtHprX}E^$>5Fq ziia;tm)49F4_}vVy(8r?tn4Y9{;<;qVsRC8{iRztutZDtL!q;TtG=Mz^)S@{TVRhbliv+L`S=-80=geboKezrXzf0H4EG85nWk zn@D;^#UfRFLbqv=i(;fC4}RoD(PEM+A&Z{hjuexF2^vK#*zk9Y52e^*GOC7;BUavI z-qsodWnk2S34`X-uvuK$c)~p8KyJCTRH;2Gl`9ThbqDurs4r~JIdG{g!bs6jty90v zvXFCNJlMS*(tt%R>MTcU~^{TuUcHB_w0TK>FK7C=E zNwwoZ#$DGJI5RfSL$2;Q@Z9vwI>MJxGy^X?aAmNq7H%VQvh=f9s zfGTg3D8yttE%ZYi6J1}>t}kd)3rEw?v6BZaAr%=sN<12BwHu7|7WypEK#f zNJp4=QiQ8P%jX_fBx+;M#l(PVP_{kHy`+;or)LO{NIR^v1`qKBZ{Qugrfpxvr3+*U zGqt{hQiO*3$nOBhAoICS!cDQsN@#C(O+h@8@Yl4lMTY`zQ^_eN%+p*;j}Hu0+Hq`` z6QoFK!jK}O)4Zax$&?8hA{v;b(aY#F%$z1_0_{!Aq?9zeWQF>KBPo#$q(j{xOHuQX zVX&~0pLA*+2-p-X6VwSZ`CO@iMxBllO(7F>9I#c(Az@T(Cr!Lm4|v)usJ#&|wJGW( z5Z=~w*+(ulZ=SrD@bYOsrQ?AlGGN>f3zbHu>~j{XM^bF_x_58t&aqA2 z3uA8%4R<>SM$$=@wpp=dA;>^xFB|6yZ{=cEp@+kFc+4mIS|G+4&I zMJ9V%B6+wDua3hcyyn2<^ugkbE?r!4ku@&2gAFFvG`Z4M8sSlYy-T*blcSoYI8bv> zy>O(fDI12aU>Rn$9V#BMYPiiKj@FcPS-})bQ29l-Piy9~@U8 z9}6=rqISQYloi?Vr5H^(r)WoKjOP^XP;NamYn)RwQ_wg`;>JKE!;TNkW2=dbB`QzPsAWAER{*F;--Y>{jJHWg3* z{r;Tk_Fyl~9TYQ7XG=HTGBEEzwzqj1z`jyr#T(A_iB-g>BeZF@Rv8CXE-W3qk* z7Lk4ICjc4va!*&VQ!YR=mN*u>!sZ&DG7-E1*hs_f<4wh6C@z z?U)^fE{0x}*3ns2F#+R#!m1qj&;sqF1T>b2HhWC8pA*sU924!AM6^$iiS~B_+6a7# Zdp!c5K^1=|Ff!+`i+&$UP=*S8@gKXEE8_qF literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CaReconcilerTest$MockCaReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CaReconcilerTest$MockCaReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..39927ae5cf0ec0284490363792d0a620a7f967e2 GIT binary patch literal 6801 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectorMockTest$ConnectorStatus.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectorMockTest$ConnectorStatus.class new file mode 100644 index 0000000000000000000000000000000000000000..e10a8b7cea929280284da23521b262df1d7a20df GIT binary patch literal 5068 zcmeHLTW`}a6h1CnFQIIuuyJQ$3>YsB4?G|?_A(7^s2zxwO*|mvre5kTu_N1^R{j_g zNbt^&LY$b%RUvJ z^SZu|cmmTJyBT(shX$|}0%=!@J?;_6mtScqIwPX?RW7($Be1Z1a?o+$;~fH1>$1Tz zaEZX|VCoH}q{_l9DXhH{ifQQ|vWD%-AmlzZTnal>vhK4$Kew%1G|qOZ5YpInX7}+% z+SE4fkXgA}li3aC`c$Evkh%xdWA-AKr7nS`9)YDUfrEw~fs1xSGHpkb1k|`q+n`N$ z6e35*ZQ?5`MX#t7c~v^w3>`mt5K3ii9J)vAio4H7tSv#FhoykKN(Kz$V**P55wKv! zv?p-4yO9&*&^O>@oFpvqWQQa>r29urqGRwEIb_NlO%NLiu5%h2+B;Htf90a|4_GaWSD5|a?>2KmF;60 z@=o;si_tpDuTM{>tF17^G+XadCAjeP7!6kAR#Zd6e?5#CCqK+Kl8VB4*r&Qy(}s6e1tmM-;osNzw* z+c;&KTod?M{;MJkiYJ8%GfmleLlup4Rh-nS%9e83OCEVQ{~HOh)_@D#5~#;$jslP{ zn;aD(YmM)whQbXlJ-dx!%BIvPM5Q|rcmf12pe&YxB1}UXOGU^)7M}#K99Yvwm`|uEJDeQTK&lxOr+>4$21uA>XY5)KL literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectorMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ConnectorMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..2fd86e059b357a0645a3e18d478ad433558fcec6 GIT binary patch literal 12657 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CruiseControlReconcilerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/CruiseControlReconcilerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..023b6dbbde712529f078237f92f8722b7c24c73c GIT binary patch literal 6523 zcmeHMTXWk)6h6w$wn&;ZA*H0Wh;U1|*f10*O&V|$!(>pLOq8Tk-q!Nk*+$lCc2_3p zA7ch);E5Oh4(|+SWjmH@5h*jxkm>lrl6LpoZ_i%N*>jHn`sdf*0pJmob1-JW6Di!1 zqEeNfkv1tYUXn_%)^k?k0To1XQF6UdDk}OFL`vGKd1s|f5i&_PxvvEG_NmK#mw8ki zAYBe7448{JJ>oY@yR~Q3RR$EQ<(-PNSKh1`FmLzU9URqft{E_cbW#yt9T6|2c_?5X zpR}k9h)WHa(Eal;jbFOffc#Nq-`U=+ItDD-Ka$1?Iif-`?w4%NPr?8xC#$<#6>Oih z9jdTga9GnPDiqj#PS>s5RbHq2w6V5<%{Sfnw48vt1}xYEbJdlIoLXl-QyT`1udE)S zM4QNxgEtMB?N6*C1Q&U@W6b@1=nE>j*QRyL<*k5uM4_BkAb8EAE&0$g3kS#4s#Dh^ z0zo+A6VjyCGULVWt`vK_Qta+ZzoNG*%T}FJY581PEu!3GOCcvcMTu3M6ZgHS_r0h^ zEnaSfj-0F&aG@;h+8{N-+y|CRd_8Q9TD^(B`pE9aWSIL1$wsSmp>~W;$moPzY(KB! zgtVzprx`T!f5CClOcU)oL88l4u@+4eIs%4@c`psvzrxcfuL60UHsKYKrE;pMUw^{X zal(dLid)1|X8|<}=o#q1ErD9wTs`SmF>Wdg;0`xL%7R0ku6sAn>v z4~j=|QbS&Ad~v&xK?*9F$1G&*on?`(C)H3`l(JAm_{Smh>iQsFxC@U3KcQliU`WK& zS++hqBuHR23j-oxwAon``LLWfv*)y~&s73_{OCjxtiwa$CS3;u zNUgz|5yesTG>v#4!${4#+YQm3FhJc)UBq6u|5k@B8hHGyMSazyPMM-ZT|u*hMVq;_ z?7BR>#0XKRjPg{e`k9N9J&va6EMuR}5x~=u5x<9#HV#t%f%=^cNy-{s7GD<4P;UXA zc5Rg}Rt$&6*E9v3%B&6ICHT^Hz=YdycN!Mq9;RnjhVwl-Z8B@)4N?tTH7X7WW&)d^(cBo3!l@`w~2BrW66Mb;XNGvef&1@{Qf&s#)PXL<>|(7@E6>kGt%r>n?$<3EZ(k|hSS(es zw^F58nyVGAVJ}&u>T6pTB1$K|Mr?OoDy+1d)#o3vq>E(&$b#$B|L zKEn8TWb5&+t;Zun?7~G+2XVa@j%)nb70uL~^8rG0mEt1c@q=wZzFv zH4~Df*i@`=q%kfv1;x(iTSeb>sUt#iH!5fSv>tv&Gk01K(Z}?b%k6-bNC($9q=p#9 zTh#UBv`89bGtZNw2pVFy=z%QJHbskd6)RXcDIx3HcpVK?N@3+(_DM>|tj)a9I_DNO z9mOJ+=1I0E^06&v8t6=+^DbC^n>oQ&MKRm)2+=1$?K7(><8B`jjyHP&efAl6VT#0& zLL^<yK&m?D+jZ*JOf0An*k|yDX)T#9li#Bsw}}CLoEujLJ}|#RAPs*#ziNFK_~ECiW1RUlZ3c2h?>ST(IA-|R=Z3|U)Vk(Pm6V0#gH$p>XfoNq4eCNpA>sWfm7^s` zK?28Y-nfefYPhT(nXN)SJTO?mQ(mMhxJMW@g3Vyy;Y9+aWDifVc_eUjP|qd1Bktpt zPd<;WPJ9`ltBFx?+rEw370nKwegr$ji2)BM4Ox+!G?X!IVhaD{{_$FAKdo#ra_g!uHM0Gu!sRkIXVq);wC99%xkcWFE>Q)slhFLp+VY3gD>PA7W6f^ zjjuYOw`yRbB0+r9pn>mh{5#ZXfCG)a(GhObaaglq0l$WYe-DlW!r>bxLvR@Xx8vPm z(4y-wWP|TH*n!s^?1Y!`x*uEYg5CJJ2fv-g){D$y=%5>4&B7dMG!DRsL96X4mFb#I+kApEFAn0W+*2TFtzTwNQ@wYAa6$QiC2l`cOi skv@iU>e2kHK*+!+flaSN3$KSUvd+N*RGn z6Ze1c!f)W68JK~0ei2U$cP%S+Y}HZ&v<3WPd8NB&uZ~t{&tCoZ$4|ciz$b7w1v3P` z@|2y|%+vXYv_tb;<~^-=`w`Demno{H%G-|bX{H7zsOPbE!|CQrLUY~S?g#ENTMC;y zOw|xC1+xSedY}#!t^9W5A+t4s%vPaNs_qnuB?61(!SyN*D_R=_E)}KlG!=S}IzCH7 z2KxxwW}ZuJMqt+TPs1GkGiM28i{*N?R@(ihSRin*Tnw@;QiQs2mkX{xC2($SeGfYn zWs{{~iNO3|+>%mKrQr%$_`WU_^Q6;ZP0N;TmpfE*DJ)mXhQr$49V?ru9WtxQY=f>hWS%9Yw%SzNhn7Z6cI+ZM!Z7?gm(P`v>rT!yKz|u65Pg$Dy9{rzZNQWtXoM3)D zlQ^kbaj88|AwBWeyv_biNk4M}tG?^v3g_)pCD2rO5#(7~TGY~Amt`}hW6eZ!pXu{TE%k$A7p`$=oqkJ13l@)lQwRMYomM@y@fD2su5AX{9 zr@o_yqjOdT{g=6dQ5F@(D+Itpkl9SN=bvJ7N)&YBpklz1#)ZC+2X^XltaYg36pdCk zQ<3&j5vi_Ff%Xci8?!CLJnx{f`c|su=S&2KH6}h02fJtlePy${=1$b~`8)Y8G;m^2 zTUXGXIuXey94nr+B+O{mhllC@K%Mo3CAd?mTwp>Qr9T(WJ#&AVTxjcW0CRweG)vg#cVTuD4Qtu-Ka&v zY#7bTWlh?DCsd6u=)n;Ur{rHyx=mmED%zza65OYdM*;=dp$cmXSnS}BSTjNV(+bJL zB3zq;d3cGym9_DziK%YPm(d?=`RxW%HM5SI@`|*nv)5l&`zL4hA@>M8DF0K1AFR7v zR$(c~n5vpAh-O{(G9Q)L4U_qeT@)hpxc5bedmK|Qm@-ArEnub>%7*2QG^~)>)g&dF zsn7?u_O$9G)XAyPpW4?C+k>glo6XYmFZ2X%Md=TU(7vg+ZiTgEFAZ-HxHnl+dPUz@ zMIo>>GUT>!x&*GSJt#*?-cosNsWGMRa+`y#g9$DRa_*`HzY>&44I!qs1U{a?mkg9eCt9e?M7 zD7XQyV2i-3@EVSCvma&QF+`ie{{h-^1lndK+Up6>RwK}Uh(x;uZ}xM`;&Bc0Ss%*J zuodL@);J`1nt7 C`TA%8 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/JbodStorageMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/JbodStorageMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..5a4ed04a03e176f14fbe9fe14c1617a760c553fe GIT binary patch literal 8391 zcmeHM-E-SS5Z`l~%68H=q%HlTpr(8zrL}<;C{0@GrY@vWJ{l(}<+HMUajubcMmmLr ze}|Vo^TG_wzzlEj_wdZHcam*6Q7R>*4AbVtC*SS;Zg+3@c5m;`zkmJ}0B(TLAV*-< z_pGv@z9>I7*UU2GWnXyA`JR<|i+ZNuUfHq(Ur?{xVfsFG>h?zYUY$2;NMbhWG`Ch4 z5JrQ81O^qBZMx0!Z2d8{1c8GymFX&hA)`A~!-d@D7=gnR-1UX&iY3zyXdVg#^3KNP zRdadO#LuPbd~I@erbgg|F(vz!sOK~8mJQBVgBAkxtx->`6VMDC66@G=++Q(0+IYad zRq9pOsTClb$e7XFgOrCXn^6}z95SYYI`v$N+L%y%IGT4*F4<3@-;grO?<+V^a7~B$ zEz`o0zKByTWKT|OE04g*u(J~BY&Oy=5)HOcdsLwC!sE70k-yW1R0?W;ZqpEwYiryN za7|>{FqkhS6E)U!O%Zs=#5vVDZq!hxHeFJ*(cX;RMA}2+%w^&xfdeC>OSm5syg@a% zK;US1N2;F3y*#`@27g?1J?e9NjW%?PJ1u6L0#&ZJJYKh{<6qZ{g@qNWH>hPxMeC@E zRWt*AnDJ6%L8Z15N|6P1JK7dBtT#CIb(ag>F@?3F3&f=BEi{=pCfaC8+Gt6#TH4tP zA)m}?aZl(tb=jx^e`mbkmiI zNC+H*EEZ}iZB5}Ro~Q1BRA$hNXi$E_oJcDPBXQ03=C>)tn-ks?@=pGnLYG}bDL_h# zn=|K>IdbuY1UhAwOsG>x5)$i_8Mi4~8m-t#=R7LQ{E9Xs7&2}`!!j24h zJD9k3E6aF!-MdZLbN)grshW8E*?K353nCAPNq3p2kY(~dgIlIew?$erJ!axXuUN=x zbJ;`IME?l~sgccxwP&gAptgjclzm$*RXu14H{v;9#9+LE5*h`bbY$itIh= zJSbKe)>-Zwdt4loC7XIXC=fV1AGm@!bkbd8K0|gYvLvAjEx3BW(TN{pd3cwQCmCuo zohd2m%<9&AP4_~C9IXGDQP3e!G}-|Ockz7!zh~IR_KZE+#Jvt#C{$?0@|?l)?TFD1 zO=Hr@1|q|iqbT!rl51sAFyEb4Ym+ zI?M!tJLwFjM`r?;kP$IY@%m~po639l4E-*A8mKfHw6VZrj1#!Lg*>F4rw+%5fV&=d zdgw1~pk&#hS)){cxsuOy=eK7L?C9Pa5D-x|1YqE4m=RMT~m zA(6m$lqMA+EBTSp_Djn7=yTlYW^|z#DzC#AlswF3+L!c11&_}f4?K(B#Z4h_DyCBz zZso?RhYop?b}J^RslGM&KBfVlv3*KZ4L-wMM}2O-C2R0Gfn%ZN^*onp@FhMyZH~hl ze2s5Hl6MUrq4#v+z6Nz%B2g(C;O-v4P1Il+*Gfp9HNfz2a+@2u29GgNN@?Y3u7QnG zDaX*jMGiOnhz2b*p59QVfqc{JzF&ox5Y*c=^L=!@1uQ1{a2}9NeDdsvGtdWz@SleN za*)UWMeGIq9e~5CJpxBnI|whSb_kAPn}g#xPqruEW!0X9Q>s0U7_$E?yn?vr)c321 zNiYx9@%KFTT*cK1w#8py_~Fp&Kf#;7DY{YomD~VwbrF9DLMnJ0F5$ldTtxs`yF0|TZzNHZOz?q1F&AWbJC-N)U_!94ib>gb1y@Bkjd V7w{E)114BNp$QCD!2u56{sR>USP1|C literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftMetadataManagerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftMetadataManagerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..a499a0e26c4369aa5c1d49f1947c606e47344783 GIT binary patch literal 9590 zcmeHN-EtH~6h6Hq+3XSpf{2RXfS?KLu0K>M1dzBPRVj9(m25(BW%bTt10SRycUle=8pCU9(Faht$Y!?Rc! zjuSXBoP9S4ykHhyBlGK9Zoop%?la3UJ;&!Z72IbHW=&wbJe}!(ygQ10?dP zxr zpWN}iKp4ZRhDlwyY=;>GL7xSs+Ljz^KNmVL=w`8YM4~sB7fCP5Ng~1Rtj)~t4KI>- zuMRJF_XKmT`&{%iJ81~dpoVzlvuZ`fctst`ApLY`OB1g-zRgW8j4;BygVEi^cpaIT ze~dVLEG!y4G$PkxJKV)Eyn}D>nMSrqQ`d|ZW-IvysSN7MxE%whAQRp)So((H8f@9t zS!|khC1(cKIGSo@c?War;ViOjIoxg7oVnt=!0U5MD)Om>l4f1a$U`#`s!YKS6Ftu| z9M9ZcXxNxpZ)&)^t=UtVYo+}dM=5mVie_m6eWX`7WFk0 z)r!u%HH5LZ_G!Q=mblf*3JcAEcUYp1aD#;^0v_n*dTr>T3MxepHddfGL)@b~yL2^@ z`>LVD$``9^&5LvdQ-M{|H9S|ay)5!PKBL!`npsdec~(_46NOo&y-k5`5oRbUKV_rG z%w6B(Zk8f*ns2qT!7%Zf+~#qsHZC6xEqq+6Oz-;2R;%^k`?Zz3>+QAngR#;NL0=_H z+VZg-Ka2pO11jhNI;gSR76*qz4xCxBW;61A?774HG;pyx$a1OWpc^?@Xf>!WYt(UO zeUK<=gN{p*445S5$GXg*&E&6I(JMI3RVor<*;KIBnLM!NaMnX1sX`S_%t0AW5;(Ka z9G*DEyRjrsq)s%kk64eK4hz~c0~45UdM35ElZ>1UPKh2532Zn2kK;6XPS#P)2!V4O zkt?{v*4#c1IWn{?4~$f7#r2Oj_nVfbS$Lbkk2y}v_NQc+RGz>*j;4x-e|T2N0s__M zpyfdp&l7NRusE3U-#H|3Ru;7yqa<))p{d4~7UTb;*%-OKNJ^*ja655-qL$4NPQ!A> zjFkJP3V97q!Jw`|%FoeD(}xi_Ewwu+fYAeFqlI?9Z%x~?aD^P3%4<0pIxNyW=`BHv zRL~Z*SXq)x)JTnyVHBe%_oFBoeCreEQA;Ne{W8idOke_=wRLaM$0zR6=*fc#m4;Oc zk@-F8=u{e>Y041{!BVqfO$=LKfAzE*uYGy&h%(Lp`VK{$3n4j_`?HmbQ zmIk{SnI<*|JCXf_;cofefLd%8J|V~cIxXHN&ots`1m~55HPW8O*kgkpJ>c#?rx#sX&9`=~ieQHN|`{FBnR5_&#H?X+X zq?a<>L>iSq%Yc_RPCl7S5xd315YJKC_$eoZi-0#g@YV@32-7fwPgQ&_!z})-;IC`= zmdMfHp!#5b?iYCd5BybvQ}}mAy_tr2e4dM`;558}zbbGB5lZl8LUmS+0bEsU4ba}w zpw$&xNzuPEf^klZ@va8r+CB!r1$ZwdiNuX1F*Nh8Ya{`<1n+ARE^83(Xb{j=;lq?J z77{t6W{3PNYS3C*w2yM2eXK$2YSC&r(CQkrpR{P76-4`4i}razw7)fICHMmMUP62R PTG{|i!Iy9ymf+UE*z;e= literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftMigrationMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftMigrationMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..3151770a4c341a7f245f86d99e22e07baffca111 GIT binary patch literal 7649 zcmeHMTXQ4D6+Z19(p#}_2o8$wc~HEP+t9?d8- zJ;q*00zB|1@|dbrePYoRqh=JkRV5--y~+1@RR+~ag|dH3R)c{ExeCIn>&1~0;i!T~k?424gX&6? z_tdJ~hMf%j)xh0t1IeP(jLsW4kNexz_0CPI)&StA!Z@#xyTdgyibw(yFjOlML zGP-9e@FT^2wZ*+yl&H+8(m!}Eb%9Z-S>JFPOSKjw);NWEoI>4Jz1eE4uc7V%XNC86 z`IZPHI8=3lU^gBB_SD95jnSjdhR0Pe2>Z)|t2h)J#0tV!-@WI%XGp8 zFz;H*yDXiky1NRwlN4g!Hw6^`e`Obh+j*4Sc_!x76)WlGP5oyyyhB*8?B-_>I=Xoq!?xNsgzHO zzcV_F6Z#{%j$&%8%8ARd$3w{xg;vUD`Z+Eco9nUkx_Z%W3;M>rFGTq&A7sE($~7HM znjkrg)nu5F=WhsKAPhCmITANFJQj0uqDvbx&hX~wXr|BbLUgQsvL_~Ni@9_hB@XY1 zOpP7&uMqJYS{9lqwd8TxZ(-x%!cok_jWBRU6g2}6w~gaOFj}1n4vw|I%hzxpnsYRV zr^)+tj`8R)NG{kp=7;y~9J@j~JMLay06XJ)p3}=H?dWYir_XhPH;brwS&_u}aaNR- zS`Ue%e7I!TI>#;jxE+-22!mI^ZaLQJog6Uzs`~LJhUOd?W3wt0?{dXkILdQetI#|> zH$zX-0#aJ@x97=pmgSs-cl=u1N4lu3Us*bN6u8{mN?&1Vy7d}?R%rF`H zY%;}kq}LfW@<%drEHY3<=lmr1hB?2* zXgS}LB72z81)aQGjy>-%4Q;lJd2MLkb)r-3D?|Mmvl7}vrwyS7vBLl9J)LQWG_-a% zF{ctW8NHtGU;gm{PqcRk4ZIF=m}4H!?&>tPzDAf7y51>_=H}D1bH;{GTS|0;Q9a+c z0*4YKTc=7xHE}LAeA88*Q8A8XT!HsG>E@8Z)zK|dxs=kA@B$y_f>eWG2?{=i^z zwR$IwZexoU{S}GmL^Bq3bS__0Y*81hVE!I`6=n_rS89Z5dnxYb(D|Ghoc?Qq-(7kB81l#kbyg;+2ypQfT-(<3OS=uwQL%U_ah%ExHVl#kOBC@UEANqP#uPvhx#@Q&%)FKPar*=Ihd zXTLVKRs3pi310sizcYyy{f2&vr!qYcgemk+tbUJDqdjBhIz)RR1MO3THf1ngn!tED z6XTT(jDHXNuV!HUJ7ZRiY7-t^A43~)w3LDN-wd=Vs?##O zcmpU?^kxRzjSQsEGLRUpkdw}`f^rpzYh%8RX8Lvp;#Zl7tsjoaUdTWsYSZSJrnKf0 z_P1{LiTx)N;g9sr7{X{)f674kUk1Vy{n>E+7y20G6Lf*zBTg;}+9pZ6)Te;{MiIsI MJ{`~p^mqE_cVbmulK=n! literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftVersionChangeCreatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KRaftVersionChangeCreatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..063891fd1534e69a5781c6a5b57d655917344e5c GIT binary patch literal 10808 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 H1a3bAp<;i% literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockKafkaReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockKafkaReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..4d204765d649f6dd3e63b86cadcd48ae5d19e6c0 GIT binary patch literal 7179 zcmeHMS#ujj5dPM2vbN$7<0RxHY(fYQhXo-(h!le(?8JC|VEG{C9IeLI#H$_E>`2&D zQTz}13Ghx;sDgL?6BIqOk}PAzQUYaj_(6M&y1(w}>7JeW=GWgJ{tVzYiY|H_d>yMG zt$D1|4_J+*g-pjEh}6xEmb-QtFh*4tAWKaFBihi^b}iNXJhrZ*}D8Ri>fS~ zmtiQPwZ%%25&8ldxH2t+b*nMY0~rM(Z^$oRP=$c-T8WV9;QtfR6@$c^@VwNeQMR~dgUWSWeY zC%EloJXT{OWCally_xZC*fNRh$xGcp(^8I^N5LZ<)8opuB?mw3gLm1)I}`UgDMJco z*Y5V_NXf-12gkR@#126pPCJ9YEk=sRGOY2U7szsjqGM9St0-9rc{#r2rTQ02+$-`R zWQv3;ELdl2+`BB~NWBO~8bvTtFM_RxMiE^0ijv1(B(+y&Iw*OXF!@G>^0*a~%521x z*@$s<Ene?m^GwN72#GZDKw(xS{ed1M8vT7>^A!95#?e}kd%4b7wC zve2bAIpAsOF;8z+c&guSv8;4#HUK-9&8@;y)dE)$r?on%{jKsfrUav{N2)(xG8>NZ zs3w$*%CrTWQ?e$CTy^lx?4bXOZjPok+Md%UryEP%OV80}=u4@JcX^a>1|9nGxbk*4 z+vRW=VxTT+ScgTLBH}jgr21Pyb0uOQ+RZuJGNT2$D+OQ5^=hS!@mAD-qEOxv8yy_) zO30R8Cm`Z9XagHBGZhh^(r&a`1GX&HI#=TxJg5>o)dAZM@}C*14mvARPH|3bR)ebP zSS@>KrCXm;IEk|Z7{ocEwuX0-R)+66?u&@eRLeBsEtrYP!H`cpTewu8sOpWqx+I8q z`^Mi_s*o7CZ})+p>WYps!Tf$7oO?3z%y`?c8XT;Hi^B=!me<52#)cK7&rIeTai)en zrMO?+RUqpxNl~;c==u3-WEOA4*NRwBMvWPQszKbQ{Mi~;ioSE1KDM~#pQ=qEbALyah|UlTCu?mKZ*i2Kv{n>(wshz7O@T2 zyR(o+4fd0(Hl1z>V=8Ys-w9&K9b9iaxjc$wxAY=a{A5Hdb4tM$}#@u7nYyRr2y@}x)S5-t`g;~Tb;0|FPz4$jbN zMB8Hk7x%43>p6&vj|q;7#Kou7U;71i@i{qZ>eL0>cH)wJ#VHumB97_nyFe>un(X^# zXzg@Q#u^?7jSh@@>30}M=nA;#qtOqRGM={WRKZYSZh2zxPOKpRAnq(5mA)KJr z8-zAM_tZ}~d4K4cA93avdh5Y?x*j17W90%}4I)Y5SzM&ML3*x<g`2pAEJpDj?%;h);2u7Jj~UEi9t&8)M_9op_zYhl JAiW->{{T4lUz`8{ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockZooKeeperReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest$MockZooKeeperReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..7e603f21bd4c4da9360c75b8cec8d0e5daaa1eaf GIT binary patch literal 6585 zcmeI1YjYbl6oy}=X*YJ$Hl&mmdfS#zk`` zsW6n$#!9`y$@(%m7@JeU<|CzMg&^gU2viivP-q8(3?qs6kVhN&h4Nz&7>3I=zFij9 z&Q7Od)KmdCQbjQXD>95eQEE|D=7p%lOXP!V>X`Ls8c|?X9z&)iHzIBtS}@$&`NyPB zy*%HSv6=LDU6*L+(S~=Q{us`#D;)^(y_p0&t+mqR^%28~Nf}9VpW*v)zda6_gys3G zLYpnmFSO>YJtqYft;-FM)Uj%i)pmQSQLl$mXwP2^xgm$O8Ic4VPc^v=d0B?iYg z$eQRCQ6g*@8UC+?hqey?21nCdMnsi0X{udvz%|O{uGy}OY$hpL61A->dWdHmWuYTM z&+2I%^0(=mTuV-+M>bQc+Ja*`YD%r5nuyGzR!vzEx`!`YVE&c91=`lAdZi+#A5ZUnG^V@QWUiytGixHd~#wonQaBlp01Y`lq8DBtWxU0-N``P(Y~xGSTS|E041rRH+g-m%d-2u;rBQYlBO|$& zeq`3cXAH-PB|G?>;dFcVX~AFzGYl8@LcR_jGB_!{b?^mse>SZg_!N6`LO7VGkZj63 zSR^vtWeaw&^bAFB9Y3_pb25(U*jT1VJ=&#)=IPLXsA2;b6gmA6U|+{^g5CiKL)4m~ zs{v#&ijx?o>p^Neh12wYhVJfA58Imk2_s*Pj{bm`e@XP`>HP$0thEdDKAc=<@hV=U zJ8R)$hlP{Wc2EnKaG89!qPv2tWWoA#>9ZY|9ZSpVwddnHcC|}f!0Q;>vHHfJusYVo z>T%qlNCxmG#_1E7pjVb+Ww?pAXpT#CKaR6_8+p8o_wYVG#7FSxN10DBg#xDW07cAV N4h#4a%cLH_&8LoAoA>|# literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorManualRollingUpdatesTest.class new file mode 100644 index 0000000000000000000000000000000000000000..747d71722f32806f518e12058fb6344719dc851c GIT binary patch literal 7998 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..65eea981ea3bd479f06a9fa8b08b4ff2431d3022 GIT binary patch literal 9221 zcmeHMTX!7A5w2d_8fh(T;|utfWN;K)GI-ZuC&9>=EbFxq8d*Xs$u z^5g#!(X;dqjdF}`2fkGdc@P%wn`>s#_KHF1+x0i>qSxTQ8G3%va-tyQe!IgA0$yKq z9uz0drB$<(d`&0xQ=YXt2SAN>Gddtq9n)PdPA}f)R>)|;n7)3!GRtVtFudhu?vFDX zE*taJxytO_8>OiVqk~3!S{3ZL%bE*rE8O=yR(%UW1?IFA)D9*UF>4CXN~*eIwQ@%q;MUy zhl3T<=e3)jzsmi}I=3R|0sr4zDoUH9EGyXm{DG zag9b9?Qic{#rHjbkj}CL|C@Jx@a(Mdnr?aZhV7UkwnT6E-lD_n!83Y(Xl{k;HEuaV z-8%HK3LWUDY_E`5Vxh@uAz`Q8(X_-XNzW+t$;%Wx8V7MXomm-Jxu2DcQnpXlaMi-qBLmbF^b2KTHde zSMxT`#`l8G^Ov(k-62t5wenJrLfgqw;0|HeC(Cz1J?*z!)@J{3PD^DyfwV1&kxBEM^cOMD1%sp7j|%n!v8WCl+lnlfEP z72rqlTCd6oQ!$j*SvsKXfm8&-^KeNjwIv&ofwnQ+%pmTJKQqW%;b;ckwltK4tQk;S zMX(vu1P4e;bOy2+vy}OX?aaxbd7i^+dC5`TG-;zLEg^4`O%}sdOvJ65?Q;{}Ht70P zvh)kWVnq^xuj4#!IxT5#1m)K!>2c8>$-faE^K^!u7^V?Aht$&O=G>IXgX}lpr*1@b z`URtj?)e&#u4&EazV}EmnTh!$QD-!d0+xA((F@tjG$&-Ol8=QI zrvf>`QA6zbguCR8i(MH`wMrKU1xMFTh{(O1+tAI322+nEXQ?h*}~pWj>fsulmi(bGpc6{#-(j7*RWo`wdGu=QX z12JG%MaLwax;Udyv|7(+H!v~ZsF~=97Z-I2lvGg4@SF%m02t+Jx|G7`yyBWsEYorT zIAE80oN_ry>0iOzku7;mUUhQ_9N@-9zTFRJ7RrL<_@gC)tRl5cGA*xgTIChgfOsu7 znzCcsb=*xGR*ekHNU^cNJ(Hbx*C{S9+Oj-V*ZdU0$31y9*QfB;cgN%W=Jvs{f6?Qg zNZJB^2js{eD&qfeOhxDENqh~_Q$Wbkg@o!NT7h;}%GgBvxdN>w(Q*>wmm4siR$^RI zV63+=7>(2A6d%tf7(yzsMl9781;)DysTlog14pG4T3biYE71O}K+DlpswlO5O@Z)< z0)glSnt&WHf{z?cw)U$nnV~@XzXFNT4Vq5rX(lCE8|@_p+UH8NYM*FdDA3-bIhs%D zNt}{+-xSg@rbJli0pWxKfzi$WBw|k~(QfsLc1ekLdmCskZ{9mrQlh=mC)#xd8qurt znsV<{{1^%ZMtA$<=bi$M=pLD^6SLSlF>RYt@%4@ZiILSOU+*i>h-y9P>7Pmj-UGtN z3Is+=eMF#IkKh4yib2eJA(Vur3U#F(i*MP8}wWHJ-tPL Qpg+>P^d5acAJJdG0;N)ho&W#< literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNodePoolWatcherTest$MockKafkaAssemblyOperator.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNodePoolWatcherTest$MockKafkaAssemblyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..9f02a61337e58f9aca4dbe93383436716e25db0d GIT binary patch literal 5774 zcmeHLTXP#V6g~=R94~2-rW9JrMT7tjv^KW~hJ?(743JEn3vpV8M|rIzYIY@8(q;rH;uaJ2T0?Xc@r3oQ(j2d{UvpN`H|`u05fU*E6eu?Om3iY6_`UE20DMCwbIjYh0OncS8ALdo$?M1RooR(svzxZ)sA> z-9@(URINYW3OzkV+*R6AoO;OGT7;j_kV&^}o72qD|39)H7!TVokmABiW2?hILr%H2 z56ir%^idfkE&jxc=-C53w0pXctr)lNP*`dbJe+V#mgxV)9V@hV(A1WxFf@@JekdgF zorm}a?^zPrVRW5t;}PiIAc`{SHrt-yA(26~g(s)X3kbD}GHTDd+!K_Zl{o<$7L;N> zPejylru}7K9)|vNifyxQ&RRjWXnfrr7rj$DXI@XoQ>F#O^D(G?#U;mMCbi5R=n0@W?w}}If~M3pif4h_W6TEXdZKEjo(5=uJ}4((h7T4xOgu@j%SuYGTqKoJI`r% zaTCpRK~UY$olItltUF1YYsrz8Z6K+XWg4exS0>Vta91rQIIm3c0{LjwXa9vd4Kik= zvHg;1>4qTpd-QPGEM_mlb#)n}$Us5zXHg#^49u0Wt+l(CHmyoSVv6pg`a`?5R$` z0$hSAydzM7X}ng`(E#5Ptc@AGUdEA+@!8>npJDdfh4~+0;nx&*4X;y(0hID0UL77$ z@Dg0de}bboaE+Jo-l1;dek@hH8+H3H7fwT#?YN52>a->~CA2|EpfJOWV jcoTmC>PTP--bPP+fX_3i|2wb@@4;C&6|S@r1_fNixmujypRW zH9YhO@EiIYctrvU-uXwoAkOSXwv}~u;;I!wez13E_uFsIoH@6d`RkwG{s4e)U?m3= z1UkO7%ZmA`{DdCSG8biEN$&o{%c9F9RYI0+C-4=My$96yncH@b%jW{lqu z9kwNevrCnIz+?-#b1+3N3AeZHCQiZM)f8ZTzUI@-R)Hh=5pR0_WB%kJl>%a`;x;T*A! zWec~<9jdtStgaMohq?ZJt5|3qFss9Che`yYxQBF~Sqog0VilJX6_;Xpdk+#7FIXMH ze9IHca6}aS;;{E z|Hyb^48}f2^0Agq^$v3jIbu>h%hINh`&p3C`2)qB*AFz1?$tup+^)lIt}H*mJcJ<` z^M(v;%wJZNZ5Ed-?puM^VSC)e*tv&q@SX;a>PMHXI%Yfl22mFEbg+$x`zVWrW|*N; z^lT|%QA-_nnIS05OBqBV=25_%jvm^HxP0b5jij&BZc1Op!m#HRoi4&8=%;)a$#_I1 zr5s;TTe^`@|a^-mye)?iNqE}6?b<(qXh%!IxV zu+-z~cxdO*4C#_G1Cq#=6s66ei*B6hJ;`U=7(~-lP%KnsC*jNxVLfOw=`k$Js@Sua zC2?qWS(Lio*4~nVGqMyTkcm`rp+8inp2ZBf)=+#j$$FR%8VsYZ%^e=bm4_Lh=z7~_ z>Ogcb)Gu;RrG$K4KkE*xP!@x=OR+G5B&Vybr;rh-ji&8Y@s2$&!vu|H#|U(~3B^95 zQ%93IxEd6O*>hOvHFshI8~86lQvEz*7Q>XB=rs$Q9gYX1SO#B3N_wpQHv@MT88>l- zA$ezbr4*Ty8LSAG;OaD7gn0s&7f$-{?a z@`cI1&$vDrRy{_BW)uL8KqgVrJhX*uhRcKzQtY@sNmj-qD9^+k2;5Hh@LjGB>U#ea zy*`QSdALa?ZjRk~aF4ftFClaXgH&WPHD)^|Chk0t_+DT63r|0(a6uq1{KoUPdFZl#Y%mtI>H+sAmGV(y_Zzc>9CM zVl&(hc+7RaUk(K`SYL%l7I==c=HU(y?pfezlAnXm2t0osMZt}_un$v3C2)1 zkCyamJO^LlF;#e*B#s<>J#g9;xd#q0)^7`!pFUg%JZZv%xG9*2b8sG8Ic!Zp9^1vf z_8Zu~0B_>Ed6=m zY(J;6eLN!Di&VDd5!rr8VVi^!+QbBu;S; literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNonParametrizedTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorNonParametrizedTest.class new file mode 100644 index 0000000000000000000000000000000000000000..06c4dd3e0bb7587e73139349a93cd82cd8647961 GIT binary patch literal 8006 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockKafkaAssemblyOperator.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockKafkaAssemblyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..41bfe060975f1b4d1501ba09a847a3d34a129414 GIT binary patch literal 6300 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockZooKeeperReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest$MockZooKeeperReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..731f875c46634193a58b760040c0ad16575e3909 GIT binary patch literal 6272 zcmeI0TXP#V6vzKclWgLYwj`7mdSP2in^3U1Q@Uv(n4}5WT!_VQdNSFy<-g83Iy%y>e!u_y^REEzV9mn-gE2ZP zSYd48A#d`6R0U(TtUZziRTr9Dr3+EqFjnaO25yX~mE+yQBH!HRGwp9HZT+gMl!RR; zlh>A1wEdk@i$c(EYa&ufBx9jH3^JTa{lz@lDy)u z62rh27{(tdMIM%gsF*eK!8LWvg>#K0a;kt~v?R9@ZW~%K+}!(NI;37f7)oQO!+qB! z8f>x^+@(K;;c1yjdzazI$uNsnrp|+KLuk7bgvC}avauFbvMIL$QXAFKk;vLhje0$n zLI>e$%J&a&Er9vR9tyiTzMC2 z{^>ll;*_}ToNO72%kze0}R>-rVa zuaJI)9Q7v9`|4=A_q!gRM*j<)(p%kz`aDU}mq#mWqFd0ZuwiBVLJ6Ozsd{l@nccA> zsXUOj+M(Edt9weMo1EOa91tk~mdde%3&mYj~hxltEi zk+%6Ip3s4}m(ldDUZsQa4@y_=iKInMy5#C<^#>=qMF_e$c(x9Yvz#tY4nvZX<+jrn zeQ+`Cft{>t*Lg?>(yKa$Q!M7evC*)d$3+~aORxE`BTQCq0c zM&g*)fv}hMW!>@IQFacDE>}t++#E4RiXknW#|wHNPNqnTs$?M{ENKV}Qhf7-?6{7q zy9_565?aZ{*a0u&VUpqdf3Xl4&K=20Z!!#}Gw$JCs*5&(EOHM83cn+e^zc5zNXA4x zd`N7wRV*GpCUa?OJbcP9mVRs%mWR)1KGTNwCfwR-JWz=ZI&$ja4#UOckfw*v8BS1^ zJkZ!#(PLxO6-a{~e;x?2d;;3dxnVhb4xI4%>={ zl|zuZl#*VW*d=KUJzCf4;Y{m$WSO3Y^U7HGpvZ}g577S*hUp4;7@^it`ZRzX{YnYL zNxHs7Eg#YMF}mk|!KrV@&-{e(-%{OKx(<`ZS$UPNPERVF!+E+hyoT4QXUpaVT%0@g6>)oP2^?xQ%Jt#TWPzUttdO_!=RW@eQd5aN{3pa6b|N literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorPodSetTest.class new file mode 100644 index 0000000000000000000000000000000000000000..3a4818e399a87d29dd3d2c778060067879612f81 GIT binary patch literal 7690 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 J8n@PO{|)F@xhenv literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaAssemblyOperator$MockReconciliationState.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaAssemblyOperator$MockReconciliationState.class new file mode 100644 index 0000000000000000000000000000000000000000..792b39132e95e508ed44297567051109f68b3a07 GIT binary patch literal 6207 zcmeHL-EJF26h32|uDygLO=(Lhg>5LU!;j5B6%Lgu%T=Se4T{rL+#rqD6MLHVj5RZB zIXnV4Ak-V41PLU#=NWhw#F?=-j>{%CR8^|f7werlbLN}#H?yAa&%b~D9RR+9n;v8c z{HRq}GEAG&Bif@SE=$@d-uaG~WS1#wq$-6`tPN8m0o9sy8qt1fgYNFp+r!@GQ2!w} z?TszEYqk;f+C3TWrK-7+Efz`<@`zKzrKlTfmd)07{bGt7{H=UdeNF%{BJ7^?Bt!UR3^ZwyR@Nrcrys8u*)`BkT`n!HHV3r!uOdb zpGE1|-7%|>S%n;be$FanRw1(rIqKiV>DwJWrc8f|ujZ-Hld3hz)#pjY{c$$D!zLN+ z6l24q7fSJYO4TW`rP?=4H0|v=rIG?80~(n9F7xv{_SkUR8ZXroleWkRIJX$!}*Oqk(T zNv2K8gbz7*Wgg~Wfx!7fZNz`nkxLRS$B!)5xM26=4hCr3IznK%CPNzS3>_N^v!=~8 zfuBx{<2j0#DkHJ8XZfyCPzd;i)!Lod#ERi?zRp{M+75v$2Lo#Zj%YNid<%6iZ^goX zJ=U@4HOFw=w&aPUgwT7xwu#?#gBm1br_CA66bs?ClM3&>y9=t=Ke^LaX2R8_O`)pSyaOp_W z6w_?Sl42U8P2VFh=kn~q2S}F=%F=@pid_mk_y|kbHIw;FdGHB=g`_{g^WZZA=f-8O z955C4xYoF%xA8-Rb(*`6=lWf#4Fo{oC8U)B4*~m}!M=yBPf?o1xBnaDzFGEvf%!kM zmw`q6wK`UJ34iBZ+lRBTj6HyJ@G8zckF5+`fQ$IH+OOd|LA7%SsF(hYn*BZ%^)kG1 zfO;hrHFGTL52>hcJ|*hoRMfYg67}a4)H%$Pjp$Wa!8gF$_$*`p8eE40p5X*rt0?;% Xp9PHgyYM~~;Y0Ws^Y{hIGI0GLGT#=t literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaAssemblyOperator.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaAssemblyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..87764e1aed3017891d2b5c22c4757823efe57f01 GIT binary patch literal 5961 zcmeI0U2hvj6o%gkNj7#(lctoWQ0O)kn($%sQJ~Z_BXon&Jhq>3u|!XxjQcg~!dGc&vM{PEW>zX7;|J04~j z_G1$itcY#l8Sn6d)P>j@89kQ;-4cddZ3;oyj;$~Q1CL`7Rl|eACa>@DyS=AJJ^fQ@ zo15FbZgVLw{TACI&?=CjFbwC)iIah;$S@aM zZUw`Ia^Ebum0DGtnd;|nOC{~s3_q@wcZIS0#q#5j+qyQeV1Xj zq-(;%s|<^S!EYF&%>owL(w|Qh#ihfJsQH18S`?lelixDB8j2{s5OPDJ z77z9)Vt-ZYd@ptRe(LhQ)C~;%)UEn8En;73>qp!MP2ZAFvEQN;4EvQ- zLZ&O^q_2z9w>vuS<933#=BdzW(-=3@mr0U*I9nNsaX}}-ww2-kO87FR>XgK?v2TT{ zxm$S3O7gAtxo;0zBAZF>#ECj~H_YSrvSG2i>(YrDKjlVA)riN)liNCVFoEY`sY3=& zXb+^h&t@u3cjMhq9ci?RgtCu~?#P-jV}fxE;@`GSz1ffHZ@b3{P9Di-yDE$lbhVyv zjwaT3xRIPlK{k_0UB*VETm`%cF>2SxJBV7Zwy*ATQZJmzwXd$g!bUVLprtZ>)65v!z%=rXXrPFc`5-93slZf zO$J#i&(PBiQaNk(SLD83KKnD4eor*#shlT`YyBFPx#WKq7w|eg0T;0{FF9 zhuI%eJj~%uYBPh&c+0uN+w@ybV!MK?6wxYqzectq{Z=T_cX1u-_y8ZFfKTulKF62% L3b(0t23P(DqhSi2 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest$MockKafkaReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..439f9220524254253d82e0966f5596f5afbf1c8a GIT binary patch literal 6712 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaAssemblyOperator.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaAssemblyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..996971297f3454545c615b6fafc2195c8bcb93ac GIT binary patch literal 6259 zcmeI1e^VPp7{|X$fg=I=RV%Hn?Uhyw{z&{$wKmumBNXH)9Y8wzhclbY61H4!GrJpv zz6#%f# zMu&MTjLkpgdps{y-dHWG&tzWJgyvT1d>GY@75cD(8zZWv=petsw|Dt`^J=ZBeBW|~qt}Y60 z>spxkJuV|&l999rg`h~HRUY$-&?Kd}{HS#Kp@N*sy*lg5mwMaT~u@ThP zjiQRTWu=fh!V?3T-D2o3sN40|M}aPI;)~RQT9Vstx=!dK>eCl zrASoGT|b-I+!20Rgb~*ys_}4_hT%_3m1|}|u9X3~W(FKqv@&4YFDqgESXsZyZMfrG zvMKg!G?PbdQjXo<;XC(2(*e($m<2u|qU>I4BiJ=uE$C-?W8HOL8@BGpvb|97SG5qv= z{h!WBlRK%YHRXDoa>qlCVfYA|^zb2tI+Zwj_?WO~BTqcsCPbRdorlk;Md~zqxI>Gx zZMl26%P?^QfO?o?xY7xsdLY_5dVCNb9uU+$UYBIFhp!keuAjnGJ$y~wPqt|fi$q9W z9(!0KTPfQa<=Cn;hIX4x+TJOhhaM52TvEou2g5l+2Ae{jZLrIxImdbOa7{&;l zU!$wrbe*9x`#VOzn;icYlYi1xA1=^&kTlN98+3MhQeg@gsRS%u*EIrC;w; m-7+0lX&?Upd3=OV@F_mW7bwsl3->XPA{Ouv-;kycxBdatjZa|! literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockKafkaReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..bf928e0b271674e72f3d45b80e40ae8aa3df43da GIT binary patch literal 6649 zcmeI1TXPge6vzJ^6FS)hf&ml+aX^G1n)QN;Y>38{NMv$xHv~aNduKbFCbQF9J-sR7 ztDnGEtMm)_0jR<%efL9Ip6TBpFBI-WW_o(g`JdC>r)PG4`SrI)KLfaiuQ>V` zOlqR6m8s3%7waOcbT+j{RlinQU6V#wZL(2ZPpveY9U@I-wG?k;Z;F*QG2OgcXxiUa zc6CwfI9(#ub8|Xc^JWDZ=_FFIG#vd5hkdwMB$ez!>As9C!-=ZcD9M73WA8AVtm{Zv zrIVC_%`zNabKw?sd0xtLS|D{{$So7j)RV~BH%c^WrkYkN-h(lZ{O0 zby>RAq}gh8?450Yo_shCGmLI7@^xdh8N?Vn{Qa%O$W+JcvK&OZTBEsfixm(W{VNh3x+P>{UpwLV6Xl)31x(?)ZCm$GZCv*vC8jiLleAve!@_Clmj(-KwhG zD`{_7w<`W$89q)+)yt*(_ux+Ra{YmoN!j6)E+rdS9f-hg)MRGJg9>k*x)15?pP!w^ zj#JQ!BfTw5qLNCwhq=cU6ks39-t><&Xb<_V%%y0B?Y5CS^S`V0O(}^rwOpmyBZkjw zzt$Oy;^+v5ag5>Ec(@5LiiE|IipMddp-SX@y;_oHNf5JO7z+ti#mmAdcirslx2uZK zl@0%W#O6qtX#qEe)8h?x-9;oNvwl*Go`R4<$pwVXfP?MV5N zH=7I{peo1}$ER8zJK;X3F&WM#R#qIR^H9u1Iqkph+D^J-8i!)Se=?zMMf`HS zV^m}9iw^5d(UZm*f~O1@x^A;A(ABdnD&N_JfM)6=*&Bo=g^5--7)E9jiky!fDN8wC zVYv6tRw%=ft{6B=RoVuf9IrDB_{!vX)8FyfIWIWgqQP{Qe9FvkM<5u4`tgmywJRs%qD6d8^e2$goj%pAA8N9rJWlW23? zCOO(X9Cv8E{KuzTZyMw2n8(v%);OY|(g{@sk&?$sxNF;9r&h;YCq24Y+LokuBvWiJF9-% zRrMTRYO9{_s_MqMv+56BR0nW@eEKksi*yEFroRl$3&SP6O7nh?uHT^9n!syxzKpkV l1y?bNDZGyl@F8Y!10N&AJQh*F5|;5P?&5QNNq&8}^gGRQn}7fS literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockZooKeeperReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithPoolsTest$MockZooKeeperReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..0658364889c926355e1617c085cc4c10526125ec GIT binary patch literal 6188 zcmeI0TT>%N6vzLKz(7DiaNX6tIE%O&Tur>Y?yx9EkjQW`LALb4s?MY#y-cQ4-JKNd zH}S#GVUX(TzXEQTc7Tk{{8m*Prm?oh?0W=hL+Jm-U?&$ zk9mvdrOF$tW&MfFtA^0rDxD9)rm;dFH*jM_y%HYg*ZA%}U+Ua#cH|#PTia49G~1+g zZe0cY-zv2x1U)W^Kt+KJg?2E=FqN1Ld9;_`tUMNhWw=@AhZRv$VR+Q37`0TutyGa= zU`2-MCrWLp>V^nm`tXoyWxRJ7Mo!g-1TGA;F8Z?e4by9uh;`++PuIB!l zg|?rv-cZ`Q)OD9vv<&XM0gqy{72&3VKKqiLfw@HNeM#BR(uK35Um^Vpxp@8TS4h7? z`W15C*F}GJ{Ij#86@OV@;+_3W$SJ+oE7Ye+B>8N&vMzc#od`Cq4F6YxPt#EKed)d* zJTEWH2UbMYm{)WuS=TC;yY{dlGNZ}PKaq~N=RJhujX%9O%pxc(VWRZ2T`H z`e)qIqt9uGQMTN6o5&}FJpwOjSD|~@NJ6-*bOsZc8OIo2WVn(&%VA=`G3m=lY&7c? zp|?3P3t~P#F`#gVYZ>2n8V7An5)(S`{~LxCgC?C4Erwg!Hp_`~+%z#KBJ}0W6Ml+8 z6bawCP+-B|QL>sqsOzO>6tB2MzNC>9?^29AQUsRqH|ag7WmR}1c$MMy#khxP52f!c zR%4jU9-%SM-ww@|s28h(EEASG;r9BmSZ{)Mo}LrYWy%RBTOka{aJM%?Ou!Mn0IxDINE4CBQp61ot^SjsraGJN;%mIK4pbD`!vhM{EK9lS-=(Lsd;?jTPQ zbR~xl-eDL?;iZH32tu|?#=!@qE=iDsj~K?1%XWD=_?SjDY3QsSZD{C#3T-e(oDLo` z+_;E6I{1X)Ibxy?mKY||3Eak=4hjs{O6NdL2g?jjhfg~Ag1VnBAO{3$hmv*E!5X;~ z7q^3ThM6wwi-XNmG`O4~SsL4QX$-BQ+q4SPL?788j<~9fg$weWDE0vThcHY>z`+Q$ zj?&ctGW3)ZhH*MRPc84${TQ7yKV#yX>8T$v{c9q3g^t4{6Ki>ijL_==)5yml>)uEH8b7cboX?RQCUbHlYf=Uz|*s!qKc9a7MqTAZ)f zYZDrc*mJ3ZIbAZdOQn1vx0IPS3mP4>>@`QQis?68!Tl=p!@S@Px55N$`qR1WOlDT2 zBUZZQb=#{n_gCCis0`09PML+QSv2iZL1?R+W?m0@cmbvDk$ml0ftSc1^;!zIV7vjIAyQD61qeSRQ4 zwifN8Stv=20UFgPftBb0p*EkInNMk?w{`|re?FJ9N|-v>n#%GDlZSU{X$n?S2M5(} zS#A(Y4{dkVcfz`0GFCZxwq>m>C#8#Oqf+DzVsEWSX99)8scEF6n6Yudb2+=HV#Ze1 zf+NpjdN7{ilmNI6xXqVbc zE@~=JOMML-c2njHMG-co-+`*Wb6l)5VK!O0jt;?&*5(;#_MdfqH=NXH-`J@oje66_ ztWFOj(;IP^LU1uak7|d$S@Z=9xYuA6qs*%{*KFW63+o9#BTdi>s8ZcdPmW5k>)F?Z?+;*86?Lhzgn$f}RBKEGP+s)DyyQ5nn-3qz# z{n@RMZiRF!WV>G%-R}5jyF>jn-oWw_Ry`eot##R_0aYHSBlrt zQFVQZ|9^11yqL|9`4!1A#gwcOa>Fsgi#3)QRR6InZAmNbplsJ`HGFXd=N#dKWC?aq z?~4A8Vj$FI!BfQ$iy>8yYhRp<#T6@A9G zMcV#z&;_j4LEUXANjH+Jfzzluc0J zGQ9nA(MGb_Vom1#@^S`pUqh0GVCF8VPV)s(<>S^ z{snJh?j#hr^eARUr!qP=?M2+HPN)kE)x$&D(Pr`Z~GbXCtCmr*%nk%U21V zswfckF|yN%OJZ6sw#!+kSFw$nlJ&0>E`t#@M4NWJM(9+R4+qjTT4=HLI$glCz?P>2 zoi2j#mAtr4uY&*vm#x#AxFTin9q$J^y$$m%Zv{HN3nMg&PVb|xwter==|cpxspWL~ z7zt2!j830|m%jYE(dlz^`DU_Or!P0X(MUue2_IT;g8-k3_&yEjIKe4A937@n>Z5*q z8YP_ulpLgllKW{$$?NEVk_YLKlGoF)k|VIjLE>`{-3a@eI>tvaK1Meyy<6y3C2xzQ zp>{u^>~4qN9dxH!zl%-+uQfl0`BRsT@1}c{-o11mqr3?DGGqzTf&2>VRpK2s1qy{zVHF|^I RqIc*$`hY&7Pv|rH;x9+_dXE4A literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaBridgeAssemblyOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaBridgeAssemblyOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..8c1ce197e595930cdf4efd08c54ef3e856dfb1fd GIT binary patch literal 7350 zcmeHM-E!MR6h3R3$aeqJKbq23O$($gwM!|`CN1FDPGjQ4!LnW2!enH59d9FRJ*$7)z;Q zHnW~xt*oyV3zb|ZTO@EUZ!}CnYgwnw1b3R$k!ymtS&a(RnP^iXw+Lu?gp*sia%3f2 zD(2G0db+T>n0r8AD&O>8$ zg_2P!rq2&L*Lq&ptU6_TWGP)RJ;?c zX>MSg=P=E_^Eayg7S7qGDg=yn)2mY9P@Hu)1|{>$FD@d~E&dw*;@+wCT?2@mQ%r^%}Kowat3V zv^LRIeTMNww=5IeWtr%fWp81-ENAo@r>^dBsW(k&HFSxXbPE$LgP2(O2^DWbxtjQQ z7CL^iW{V4{qiWs66k2z5%XF04D%H0G9ZQaqrS4`Ak`MgErF~6(yrB$ywKseWI+00^6cRlQgvE9KIQ+O8k(|V^3p1rCwSNEJ6tuqJv zk~-eOYtyr3P&%QnVE3)=pp7~Wv!JNz(#v?xxFI_6*q+UHh;%Sf zE8N-~Ro74Q0DQym-2V?DKNq_j@&VBQSu5DX4{vKUtzPRtyrrRahT4f;#K9m(UL+d! zly94YnMfVPV+$0YADXhm-k8DCOx2Oe8Z4%si#@G&PJ_WBakvEU9D)n*F7jNnyO}4& zm>kXHW4-D%k#8xfNEAiIEz_=aBkL|6kPYS%_&Wa***Zn%RQ)s}(N^>v$(l5WM4QXd zuatVv`fLrlaWKD=?)fO(B#_&m*ipRBj>i6JMRv+mTSOq9-`*>U>n;CgG}g( z_DKthbXP%?TQwXzGdJC#I{p3fPa?I;NSsN!CFj+CP3F}KdUTgSX0S(ti-f@S-QK8| z(JIfddOdA=E_GLVx`6~L#oUMZ-ict__bA*aaA}}x1kNkF8EPZV*A2VKZMwjm8q%U@ z$!CT8vs7vb{>**YpiXDqprXwz+F2%WEj*GURc|cQHL$K}xmDr?2kZP|xUesj;m@3I zs6~qJIg8meZQ8cm?@k{`HwFW%)Wd|yA~kEz30&T7rgPpurh<1p!(ubICoH;%b_iSv zobO?@woe!mIF#>wIVe`Ot=MA?J|}P{0D#4_!}Ds8$I1%a?47e3toG{#4|@&Pkbw2| zuqXpWxdupzAK!JpYEVM9dCxbn23W`wetB!~B{K9cR=Ng{`*{1#DUT7aFxSQ6DBfWFj$;hoLxc$2=t?DU)ba0{AImmcG6b#eqeW0Q2JiP_+zQ3`AOvG`2ZO+e@KL~z zkGmKuDrKV+)twNGR!CF?=0-&OJrr$z2(){ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaClusterCreatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..a3cfd92b929ca8ac13a710018947df80f4459fa0 GIT binary patch literal 9174 zcmeHMOH&(15bl)?i)4%mekI0_1;6kMIl<1uI8KBRn6OAh5@6@0EUN*nS?wyjD;`eH zshsl*@)MF%s*ME6LQNTr<`+2rDt}8R%nD^jqOyKqDsxqeDh6r&-83h?~{Lj z`UL>qg|B3YNRV?KJ?;_Li$Bs|yF1ig&U)U4%rX7LfxJqe=e#7rtTn@FZ4=u_+cIh@g29+lv5 z(zaYrv%GoDtdcH>O3+c>xM8^xbSKrhTt1a8P>wF>mLP^bTr~-LvZ-Vyot#pq68Wi2 z8mCvYM7J&7Fb&N!Yzx`D=2O`mcIG5Ft}@lIpO1)OhUYEpueD)&H!I}D9jGN?Hn(}{`cgaoorf-SwQrLZuSzh9WmWK>io z*fgC@Oyni#q+JCZc*Gx=wu@xewoN4H^SgY8Tt1PXLyA+)jfLBVbY?t-oj%!EZRnV2 zXhUOtXpHgBOg%`AOK_t8&`5Ds+)<}F9RQ>=`2r&>B+?IOGFfzSFY88c=Cc`9#U+x! z9}#G3obkfe5y9^IyvLGr*=#DEM^BIE3L`a#bf_~LUF&GhShh5;>JSM=XxrW9Evc%8 z>j~QLjow3s#tAk(-myv?Z=EhX?k{hh0^O44km7>vtPm%)PV_293f-fPEr{&AYgmSN zPl5wOSLP)+n8c-*;TCR%dbp$<$9B5lO{w>fIm;ogZLX4{qTA()VY0ohR2+NJBxU!G z5{u?bL@5&8qzWh%O<&QLi85%|!#vK1YjHlzgQ?z7i}OLHXcJelY)>g`o?cQs+ENYTYANal!CPf^}CsThSD6qe5a)mKrcL%|P3L z{RDY0K#fUp8^&FM_fE%PYTib}Ae7!b<}lz~!I)Syi1gEV0W7#cyB^?QBHFP2A3?(F zOB*|~n08hjowRXy8y4o{v8rJfiPHwUciU@{Si~`OHaAW0>Eq6HXc&^mFm9>ys^%CP zrr>n!7kjeTWFh^6EwSKcLq_^_~G!(Y}vad#mk$(&{%YL=Isvs0=7}D4j{0# z>Ex@hXL|Ho<1(rQbZtnn8(%{uL>SKHTUFM5sTnKU)Rs-#EO zy;175PL;MG!+FY(TF0oy0&GhfhRPCpm&~DW$+*2{HBWYdawToY!LracFjgYUmmGV| z-9kB`Ve;0@dl7kaD@J9LGg%_~N;9sX&fn;bfGd<1mTrY?(TPqIfDE*s;I$a0WAJmF@x+QX)6b)U&3MIFJMGLn z1vWP)*OKigYDb-Fb6;{uEXPvh34r`bD)hgjfS2`iT3=MA-fbHuppSfw98WGG?` z3)6EMmgx5d`u#s80?&u=`7rb_5_*RMZ_(x!s1oy+S zNqs`LsgP{fg=`;$WJ?R#rbDusLN+xd+c!eCnUHMX3)#{k*`5g5G9lUi6tc~RV~fOu zY#)YX8xpc*L$Zwv*>WM-#QQBDlI?4uZgU~oz7w*|hh+Or$hHuY%|B-wPi+Yvgkw9< zDb(#@NVY*C+eabU#)NDihh$q8vV9Vg?OP$+ry<#X5VCz1lI?c^TLcRD){MaC@FmJq X_}15fz%m%H0%fq_3vi(dYq0SjKw$Lc literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiIT.class new file mode 100644 index 0000000000000000000000000000000000000000..32ce34ec47858f1317a7ab9867bb85a2628ed7e3 GIT binary patch literal 7938 zcmeHM>vG#f6h7-FvE}C0q%C*44Y#C#&21<&Z5h|3#DhbiG0E_AEwAluWJ$AHc@qBc z0=xr{!3@m6e_ntY{_qAo0>fF!@hyrawaqj@{#df~?YHN)d(IyH_V-V}0KgsC%tD61 zmM6`k;+`r#WL;JiPSI0RbiNfu$K{eKM;1-X_Y{|d2h8($r*0hcKso~B9QHI5V%s^3HigZA@w?e=`NS*0Fl*QeS=Tt&5*bpVhB{L zk0WbO%pM!^Pq~gn(MW~B%xz%{b(g?})wNxGQ+66W3zrBi3{=^W(vdk>CJWzxZA2zFSF(n+Ey3(mzyyM-Xd85|mw82e_Nd&pf+-EILSA7)MU1vw$AC1qUXqg zm4Zl3V54(fxJX7~$C0f#)14(qZ&AgG9Kd`ftp5V=EZP76Bg@8t;&x+CsCGmQQRPrZ z)uGGtMvxx^w5PMq@x6K&TL2Dn;(OLtOXp>7%yG5t)j_^ETw*qg{ zN`%CDqtrw_66hNmresBJJ0nrBozxsj+;I{nZ)`C)#zWfNsC&FmVnLhCYbTozi`n5~ zGr{DiJtFXLyxY>p=1Hy@2?or{3|B}Ei^e!x_^yi;ptr}Qjc)T|;KA&g7UN&>gE;o6 z*pHcE?7)!@t@py15lQSBwCUGD!XsX2FGL9mr|dxl)y98N%jpBYFhkhIxmqo5`o5CmLT}kk4Umy z(ponqJ`am}>}BC)0+*w{y4@NFeJykd8SCs62;K9UF91x7lPuMfFz1CGb~(c? zL>VGgckq z!|5)we4c}wg#4aB<6+9lmNmvFi-C{p5CeaN4R36tkC|W$ogf>Zv>1m=`KM8e61b!z zrQF8;KCe2h79MSLaEp*XpRB`Edhk(dqOG=oY9!lh5p1OhHUr)mk#e=qd!xsDBe2<#_HRb; zZU(#=#2fJTh-`&Oj$#DISA7lw@4|bLc6)zFQ$1Vgj}If*_98ST@DcJ3>=w=TaRl36 pk!L}fe#nyY+obkG^dlt zVfbInzzlrnM|Ief?AWm{NP%=p27j?EY46eQ-tMz|cYi+q^>+aH0zS2%LSQeEUQ@9| zH6PI~ZF12}l;q)0yeVQPsS>j31!~6@ zm?5x`;RQ5mH@`o8gaQPve9j}Tz9jHWeeHn2%%<>}1vLWmL)k4Ug{;D}WPbfYBv~SY zF7q8vgfS1O;v#ZlDGmb`CZ9QWZNI}DpLqe5C=^rgh_;!t%0;7ZL}Oq?qi@9U!N7=B z#}_PdBB7j+DzD=x#ALk~H6F!8H#M}I8d}xH`M!|r$-`JkrA=`>8tLyHGG}1nDUl(1 z3CS*#syCJMPkB(tc9Ba;h-6cpDjpPJl@=`V(aRvR)l)3;A9B?(c*aq}p^iF^nO!^3 z!I?=XI&~-GepFb~2lu#gk`$>26D7hdPCcX`CuflQn!^((jeOSP5hiB~-{60m20E=y zq#MpI5|)00QVxxDHs`=2LKrTX%>^16_{}iFuH9#d?D2r-40V>7T`D<6?y_t5(pF2G zcm@xIOm&2h#@6?cjH9-}Zp~8K$BscqZJAv&yfA)ns(e;sa{jmw&zFd-EHMnzF`5sV zjKBDjTZs+#Jlp^8~Kd-Qn^&w`5%}zvo?SkH1U9LniliS4v>f6&?)^`dw=O z;f(6=guny$32YRs<2Hf921nQ2uds*qvDYPV{eBuL9@+?S6rR8 z>s5G}RDLeAMS#);Ggpq2rfq(IH|7F6<;(1O0(W%mZZoP<$u@C^Dqy5NI*Im@0d3ic_6od;dc2mQRp2_@Fd}RHb3K<0$hVBhD;I!#*ND7&f;@x%xLKg_ zn+A=yjks_9Yuq0VxBzun!x?(etp}ZWokgHz#SY@fp_2&ye=TpO~iW_ L=k0xrsJnjwwrqSN literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiMockTest$MockKafkaConnectApi.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiMockTest$MockKafkaConnectApi.class new file mode 100644 index 0000000000000000000000000000000000000000..93859152ef5a3cba0d7282291d907f228296e23b GIT binary patch literal 5583 zcmeHLTW=dh6h0G@Y`i2*no@2Jbea}$xY%3@4>$z5R;pNa8j*w`9>?pkJ$0MdMQxPm{341nITZWSJ3U5GkL=CJ zoCEU&*5W;U7PN{7^%uB^z=}4^MEa2H$TymRQ~M#}5ib$Q9f?+ebBYt#Nk+G8Pa`|9 zUE62jc5Nu_2z3rxrPN3wzqAv72rO=kK$sl@xAV0Vu1v4g-)HNDz~1?>m)*sRny<(P zci%iE+Tfng6oNwL zow63En?e@)hA9jTQ|KFJI505GCT&QrX&?>lFypnUL7BW4;uBBHMAH|n=?hlX!u57Y z^c0;?Dno}$smB7lZJpD>L0=x(wT8Na#Q!x;s#ew!rUr@a92wzfX*6x%ZqM+b@slv^ zF`7{$DWm2r+^iQiaE0uInk4Hup|LDS|B99CC~fPxvA!aTkSZmnp%p z__?{O#m3Bu;zT%ECyF~b?7_@#&*Nd-l3Zl3BoAL0RMsUYD{bcBNxwK+1!q|jD|YIk zOwlDL>)`*fv{{Lm^%<`ssgL-TZN@X&j~n$u=~OVyZtkMaIjzq@mn$V2{POd=umbDL zkb^q}?&ecmMxWiV{K9GtUqPNnojO;?wre7=UXvd4Px@U{e{kNk1(GSEHYIik>6*oa z$RY53zIML#OVcv_qg2P7uFvhDDF0>>uE!1$xOW%@Ms#>J=n5_Hp_VO$5qGWl4Bgtm zdZi_JAIYN2DICk-3>I8&ZWMhaBjxd@!rF0TBwhw&T1?KMLsSF%vMG>>3(THCYEF6W zGXl$1EFY@kTk1zU@QA?CE3i3%J7YP$kI?Q(-F09KK_h3dG4H@91YX04bl@`r3vrA) zP$Y2cyq7re1y0A&c=vZ$`FVZySGfIWjDG`v?P@?Ncky>QzIWkGcnkj# zcpKiqb%~^R;a(rT5hD|+3wWPMeQ%7^#u%v!a39yq;Tay_6<`y;F78F(A$))*c#Qwo Y@%ka;;bZs|3h+7V@FjeW<8$!v9|37ulK=n! literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectApiMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..0418114ec7e67681ecf2d67512a6346393c4039d GIT binary patch literal 8602 zcmeHMZEqVz5T12jY#)Y%l=9XTmQdOxP+Owqt!a@QE0H1`0&yC|$Mt#bY_s>Gy*(@8 z7w}W~2S^~ncYYLN_H4&jbM9S1d8>|UK4xg9|~9KuL;bo zt{oDXt$8h;hgS(K3^BKq@>Bs9$l~&2SMk7;UEZR$=lDW0Ej*X{%4u|avymH^z^1#?~-`HWtz}OYq@_0a9Pg93!`-p19p z8&%8CH$qQO;rO1?boeT@nQMk^ayl^dze`4+AOqt6TFz6QG!rgOB>K*w7BWqv%NE=^ z(cEqQAoNj!W>kBWQGM!js~C|nk`4@S{_SmX;T^}9!WNnaA;t$JoQo6+ZHyDNNAuM+ zDgqk1E#4L`GNX-8u+2iL`AM4i_aP5?3gmXELzO19%ls6W1}-&j5|!gq z-E*rHq^eTvbW`F2gn;L=z$(@}DKV-e7lMRQt>Vb4mmm{Yf1DS@Wok#cC`81eWTa&E#P}i|TjI z>LU>lcwE1L9TT(Z(TqwD0yp+UR||*lxLpwl)Te5y|0vi4&FGwh6L6%W?c=OvM?~^Z$AfagtpCj z3+sa&$H6PpT%JZ=5t$TQ`XjHHubUn;;1_?@8A?TIsqk6st*sMu*{k3G8y7qr5&V+s!4Oa8syg30pMXZ zo~q}-f;pJS))M5QfY&@eDPk{HZg_Ver3hZF-=Xy5(rdrM;-7ezgKPLdA3d3aH?Upm zNx^k^6Yq-f79!-}?Y`7Icr|G2(U=3YcN5TVMrgSRWBDnJn~50jC19+aVGy8b=}?cA zK8CT%jM1~|!vu^w304vKCH*C?YjiD87SlIOGuov!E^2|2-2IW)gwG^ZLe?xN3>1@t1{ws+Z999l2Xt$PHiYLfOV#7X z$FW=7EMz@Y;t6&@rCP_oGE5OT8+GPTZ@c!m{S3VcOm~@7y9COuO?|OKVCEM0xVl5& zm8IoP0#glPvof3^FhB5Kl~TxAc$J*{e#4V25KfobrX^gTJ5+JunZ6Wlhq=Kwrcqh% zFwP^l_-)#dqBgn8dDhGs;&ogY2cv_~oOm&29 zy29F7YB;DqZly5pWGoP^Mf74c57-tIW=D;(-o_~}3SZS?%gfNciI&32*m)p0flyU33O-5CS(z4#A zD4yHg;c720varph$582FMoH z8S{Ui1Pc(+DKas@fcZHn!&w3smRf`I%No{-yzLcTo|$i<0(}&^m=M-A(Gyr`35zw!Q0>f?D0lg&f& z&1p>6$H-8}a2-Y#$rt(mQTPO|W-!yL7ZFq4vmXi7#IGA>&%%df>Zb_@O{xro3f@b= zL6c90L`C+cVpRgsF>Ok74VbM*YfUZ#g(63vw$8#5fqSDVE;_wb%C= z!)lBjcTQlXfXliNt5iCBO(9d>=TqJY%kY%=a;iB25L*~)Q3 zoiQo`?-xM(AOr1(Oth;7&_2pQd!C85JSN)DnP}I>MEfff?c?##$i+;wPsT)RW}ube TQ(OlnsKS@{KZ94F!}Wgv6vS+! literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6ccc038d324be256bd20c026d076d9f1b95d29d5 GIT binary patch literal 8012 zcmeHMTXWk)6h51qVke~`ZRwRF0)?bd8)zw|X$!9F6jS9gc9PNpZDo1msF5Y3OD5r! zXZ{EL0%l+aW_aXBF?_qe$*E!~ZPGrF7q6`S_UyUs*`ss*`SvrdD%y6?DI!wNi~yWJPM=ka>Q+Ron7*EaOLW82*DbFG() zt!49$v9S!g3Jo!uki;$Bu4NZ1Pl0AMqAlLNTPQIa)ikG8LN$LPGaWa<8zk zm+vq;T8HAqdq!iLP@;IgjER)3*SXiw4a^K~7>>|FKLcRNM8m0;xeqyg*Rd=P4o_=B ze%N#62f)4c@kAxitse$PLpr{aavTdS;c;P~NF>h2CRyw5#QU z>pJczO|yxgR&3bEu{L>CHJo|_X7XWDwc$Dyi`TvDYC5&N&ebY6ETK~sB5vq4u1=Xw zrsa&8wlij0R_VTIJL8mEb-1V6j<42r-&j|D(BxYUI9r$|+&v@QJtJ7n>}`i8pJu(` zxW0;|YkI{sjccl*+hW@aSKERv5pMK zFntxd4tJ4|AO&;-1KFF}%uJ_eRMS%fyUN#08<_)=Or$1jdSLlsbVi*=RxDlIc`4wTX$!9EC_G%0!zF3 zE{xXKTAR9S>c|h%sj|%1V|eOKyJNu8VPY^{PMeu|47`)5$KVnP(=V$}KtCe6k6E=_ zt{=1PHpk)MIV&o5haD!Va`qc{KsHR`KD%MkseSj<+!{X4PDBOQY6~7eU5eyySw>CSPy%2+xSgi4nq220y9e$ z2wRJ?1mD7~`plgd)`md7FeFVE=;Am{(Fdq3O+Q-<5@n2|8gBB1ppJ^nvbcFfeMWfE zYU?Iyy&Uq_O^;DUJLtlhDEU;{5th-}QegXLofqv*(=)+eP81zvDFy6|X`Ns^J4#m= z`z1lurL!bPze&%?e&hCd5Rz`64h^F-Ck< z@gG7py;y_>6kVsacATFTr*6FExMCJE-(&;n1Tr^0H$kvz?-iq*MA7~5P6>SmzLYx! z5m26urt6F~4@b*W&;=;=_Y_fBmWLzWPf*Y|TyzpR?j+I7$TwRaj55>BvVG{jn(eK+ zH_X|GGum7rx)35{m(7|jTM~?}?rHH2ZPhWWv$t>x?lM}6mu+tsDWh{fuF?|6_o-o8 zJTK+V+0~Us6@trqaVJH2LPz9*1y>rQJMmlzP4z!*XhH~1mh`~m9d=gihWL+YQI>6o zIk3oRrr)QKi1%VQS;`lYq+2n7A%-_aS4SaqZAO~bQD_CXd=JHjsnC6Brsw63MwUVk z7#))c=qJ>TQs`T>Sax1g3Vkn{Te794&|`Q+=U!4s$6ozDpA|9~oob)0ovjyzppug! zRz-Z`DOAH%BJ?40XoXCuK-yEG4Y0Y>v%@8aJTaKkXB|DX#GCg1;! zX8w}c5Ai!9XNKt#o&`r@&kSWTrsyM37@&_^s828oY8Rz!ZEBYzsLe}i1Cqw4Jv6RH z()cWb#-k1mMxWF55FfKG8bT_uM^maB5j1#&RE%!*aP&opT31J3Mo@Dis1eA6*O^yEm)i4x< literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorPodSetTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectAssemblyOperatorPodSetTest.class new file mode 100644 index 0000000000000000000000000000000000000000..7402fd7af84549ced9dd81939ce057ceda7dd6e0 GIT binary patch literal 8181 zcmeI0OLrSJ6vwaJB;&Ygnbc4|8*Esr4EilcTsG8#Fg zEI5Y^EcgN}`2=h^2hIW3>{#*z_yVlhaJU+eW2aG*bPjBSH&LYd>!+)$JF@-%_3s~k z0)U%Pu^>U963A*=u|TCC&{dk|A{{8n8=vvCXfjEakm;(|3KWyw0U89XQSlz7XX)}o zniam!swxu=7NTkMqE=$6jARQ22#kh!kNWj=q4EIr1P1b%IfuZQ+kI5Rwf*`Ofqh5~ z6!q02^;#?m!vs=|N0+PZwFvCb7Ut#)c_&|9YEy=FQ<~3Yoh0ldFoI&AHdxT4RYoAW z=oCx2LcT=cup36b$Yj8UpLT_K*lOa6W3vm>PBHJ4ozhaICNS>Kwkk~e3^NqXKX@yEwbNp2< zh2LPlnwMgg*O)XM>8tRVLLMLR<_~t>MVf z4eoRGCV@TY&M#uRv!ccvn3myu$1nt9p71HfHuAtuuRqi^-^FCOb7V8P!a8pi?swc1^Ir_Jy(=R8?1Og-o{A z#ER%;VpUG+s+`oJPCnfV?KpX(DWtM->N2fJUcF{lsjrul^t(05Qv zeI@T_Y0KNDUm^Vp+4}RSUm^d`3JJf;?cny@6*?j7+ii9CNy4wSEycajR_N>rRKdjOR@yVUoa^tz8l{ zNzjR*%V?LOVdZA@KYA{KgWAo=N=6lnJex3M;jw9x4E-F%*3^{F*pRD7aMIaLlXN9S z){l@Ks|_=%g(XZXTWGH153LW*h)@0X;UnwA(NJ03XHpP2svj&gYuym@Vumj-N5OA+ zLg4f!^@i9mc@tfQE9!NucC8RCy;toR3W=f~OpmBnaiWWf0@j#YlzT0GfESF9ag`$b zq{Y#wDo$szMP6S~xY`rNg{JoHsMjkV)#Q$`$M6`V6iv6dSIe%TmC0)BSsim9f3xxY z23NIvN#LX=MbbH5M_UyaD~q;8ieZJ%XPAdJW27nyk4>?I(H{S@{A+r2&GBiP>$2g31DI2g8LFdnvt;BeR; zfumvj3>?E&&p00T3EtT!afMUZyNat4Y*RnN>3d^mzK7?2#$E!>;$IyFU^Fk{-;uTo z&cS)?4Z{T_B;aDCx`eH!T?qHkp#C7n+a literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectBuildAssemblyOperatorKubeTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectBuildAssemblyOperatorKubeTest.class new file mode 100644 index 0000000000000000000000000000000000000000..f5f17f23e3474c3f4e5e1980a8344aa84bd39e60 GIT binary patch literal 7066 zcmeHLTXWM!6h3Pbd?64BB@`%B3A9bp#%?>kPy)10;t&@(Hn9_?Pnos6iI+%P&uZlf z{U3em59v%h)4un${VRR#^sH>ha-u}R0}Mm+V6RvE?RPGFB3i0Pp~6Nk|Z2 zp0sj`c`EmewrP%woTnsre&jjPVv;H$bC&IUipl;3>Uqqm+s|{4>Gm#N60XZEwdixZ zk?*dQyL%t|byh?2B#aQa7+A2WyOS%|pWzk)>9u^RP_5*b3Irz1{(2RCaCa66oJV#~ zQCDqJ+h-|A6Bu=#&$}Lh5xqABV+1mI#p-xL;KEY5R4K0&)@oZCKp?eQSg#h#YgGbQ z%)sMKCOt0PoGHYv-$E;6<&9cpqqbEngrat zwy}tQwV70V1d=B5t39N>w2R?Om*K{)NdlKmos)r!h`i=Csbr0U+vZZZ4s%sSiZ*XB zN#KTAJ!%nmp1sdqt{xINGc&u1Nm&vNmV{db#{1bUNGW6r407@B4OcQx*lpG@Ea9{` zMunL$T2j<)=6LsvOuE)&MuSw=lB3!pL?Dqko}S7}G{WFwby> zG90R`rlF9N?X~dC!<<-pS)J6Zb~XEA7CL@%rzNB^aO*a$OK#mYEb3~rb!PMeJw?9S zEOpD`1erfY^3yCGdvBgr$Z3Tf|MWhskhiHqf>)*!JQLq&oRB+lA-qYD;AP8K+>Uel z{|S7Pj_NJ(rLd=%+jz=VGos`SB@Ak)=Pi~=2aQvJ*8N!wxahQOZgFLJK6abf&S0Y` zeG5BQqtjl_%o^M?e7C{2xr=?rHm=}r>f0)e&Kf1`Z}keI4C?Aer9&K|%%rP9OB&ZM;AzD*^k*b`$uj_ST+Y?Xwy zJM7*?hQ-SAc2xSp@#nWun2Co~{ZyVbMJ%M?69UEKg&eKp?C&`KC{ehgx{6RnGkfKPHa;b= z8gHYwAO~E|^%kk#4Z*e9JZDOO+$Y*yF*03al>Pcck7Rpz0=91t=k3g2 xk!<aUcfu)5ftGul%Nbx{sSTBjk*8; literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectBuildAssemblyOperatorOpenShiftTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectBuildAssemblyOperatorOpenShiftTest.class new file mode 100644 index 0000000000000000000000000000000000000000..f68763d40201efc21b9e28102e5424b7e7948146 GIT binary patch literal 7109 zcmeHLTXPdP6h1Nuz7Pn6TY=IpP-sGn-8+;3trHA!S;ubdgy~a8UMsQ4TJmVMp3s;6 zEN0r7_Mvb6Cw=H&==4Z-l1;K?oeaaIOkON&_31kooxPmzuYZ629RMCeBMm76F9PKi zGz)a$1?|xSmxVwp-uamqWS1$br7C!S7-*)pF3=!gou>b?@Qkjk(OD@3^Yl!}{Z?_X zQXTBYQPkUfMK{nw8b%15wq|@PRtweU3*1K_J727n>b2r*iNJ)rwO&U@#OgGGlV~E) zROlt@hb#kG0;8RmcSJy7#O%$$7=avK@%pY1I5k_X)T;BP`NpyV5XdZ*7V72de4W5~ z*SfvLRKTSuxKgf#U9>V*U2N1A8_VTN@hMVH5V*KSd8cW@yYEwzDgqax*yXumeQvql zSe!w>dQ9nc0%;fd^*Yj?Sqqy?35FX7CJCH%pY6Pe$V)++D%L8A9#>Lyn9wyPd%VRI zfh%tPb&I(3_yaDuenjBdo#4Kc%Qo7~X)(_?4mn-wts)tv2|giI<7k{$pS}6 z?R2R2+Kxs}w%)}vk8)!DewKxr`$p9o$m;!OMbf}|Wc3CcK8zPG~eOCgw-0Aw<*}82t6MTBh zplFwx;8_%EI_*WgU4xiCZ!%D06Fcuti-y(I43qpYSr5`x<&<38a-IFJmMspWe{gX`w>c_FzWer+FeBMCZ55!h zvk(f+JFJYdPr%X5qR}p_B7?QFb9p|o@VQM+8o)0yR(=uRiiy4`(esl14kF{ z5~wA+xRWW#)hnB>KB3$X6^nSBf%^m=C)+d*CfT`Z>@0R$C?%S=X3Y;*xtMLEA{w9WDlYV>?!cdVyKRG7<1!3(o@54! z1g<6Kg@AQ%0a>X+RWqK9fEA+SP>(~_kh_lsOSdjVjN%D5xA&L()1$58h`O)4^$9bb zhB=gHqwmv!K%9mjP|Mx*N=k!^!tHC{1ZkMZ`n9E=h8n8hJF7ko3)?jD{x=3XRpCK^ zPxA(TIt6eIP})V&K8p{$Q8xM zT%UjoaM6zM!6h8Wkoz)R!Qc0B_7z$sIOcwXt3OSA_zJH5fwL5RguliMKyPm1ui1qt zxCI~Mn1xAXNWm2TH>le<8n)Xuh7Gn)V%VCNEoC|GY~#qsaui}XRyR2ad=6hk{P=pn zVWKiN`cZuo!{Nt7Md02LY~Su?BbivX=^@x+d?UZavOPE$Tk38s+ruH)Vj@lb6U+AK zU~I>Fv25QB!S?;`Qy94#%QkaBw!dT9W)H?T`YMJk1&^^tQ&56Bj;HWWdJ1KD1{J8n GkN*KXg`U~~ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectMigrationTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectMigrationTest.class new file mode 100644 index 0000000000000000000000000000000000000000..591a7574682e14c23c235f0950e057f89196a2b3 GIT binary patch literal 8668 zcmeHNZFAd15MG70vfVZ(x%)ktM;2Xb%-@vdZ*+_1bNO9eg8S+Kvlb(BSZ*QgD+x4G+|MD9Ed;uL5<`h`- zT&pCACrVGuZL>sq$rCPhexM~jAg(F6Te5856U2>fn4U+Rb$eKPU~X)g70wv3M2+?l zPC4r!nF_}gI2$n9ChM0P>rW7(z_I#rO;=#Sh#s|ZI@T{Ma2km`VKUJ*ZJ*>IuRy^W z-m*e^1?DS_TC-8t>z&6TOI|kZ=5j^P!D$6fA()vC@dlV1cG*n z>!ExlgYzwafHTgw^h%>%sT$Sg4kA%vqeXB&i`q0;3S!Q+?=QFXmB)I$`?%R^bgL_R zOMxp!d((7DPiNcI<;)>WG+n+;d&I>tDzet~N(W~MXCA2t9~D;grqOs*!&RWf#tIqO zd?<$p!;H0dN79c39u2F6`bWfxJCspzSAmxnm%6CU3hxmWt|@RP(x>ja+|7ZeEd02} zT;g$ioAfk`I|FJ5i_!)zU$=?leXbSqolT zlgVk5-Q9wYuyUvQ1pElR=yR368t{G|@6Zg7@7Q)SdxXhUxx4 z5Pe4w)_X|BW`brl!8KD8!vQJe(ea6$04@Dr3b^VFY-&-Vc|HaJ=s3_RyS{~ifEIf3 z#U+h;n$LP~+K9tuV)r<=iOHrFYf??qvSfNSGJ$3z&m_yCFrxxog&U{fGQ5Gwt;OBh zKbg%sgPwuZeP^Ax9TO8&GEK-W)9#usmHpApV`7tf3OqEPOX3ofY!_vgs?H-n!b87` zlcMOsSxUwgn4A-2N0g=LS6V(3)FD+&2YM7`U6y&NAlrtcP8bqj&cQ7OR`$=y1t~cM zCw#7Aah(Deq>M=t-b{WV4~clDaEU1hS|VQiLj|rUgR2ZJs78A|xd-zO#`X_<+!RI- zuE6SIENeNAAj*cc?_D8C*@#6M$B!Y8YnQGy!X{qb#C)>Yw-EQ0=9_EZ6@nF~>W z98jq66*9!9P~jd{W8-&5IWQGg#t$$!i&c14SjD*_x30o{1y05y5*5CYMc|2&uL_0& zm-fs_seonT^NGQZ3QepaKOG;cfc4y1B|JO_;M!``^RV#U!Tf~>*8yv~Se4IXhDmGIn2v((`a8xPKO24%!7c7qqXy`JlZ3uLkW!xP-0bybM?H`Wp5= z#@Q5X3%|nEM+>k24A+0h-WL!Et+ptHXM lCaKps_$;{IhBmgBaaYRt|BWwU87iQ|*HDEAP=f}1`wzZFMeqOs literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectRollerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaConnectRollerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..f6d4950130075ae759afde893622db02c481975d GIT binary patch literal 7667 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaExporterReconcilerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaExporterReconcilerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..e6e15f5d007719743b61d6ed944d6797f575cb76 GIT binary patch literal 6860 zcmeHMTW{Mo6h8Ev`qFes({`7%UD@oGY=FJB-37}wz;N9nn4JW1lA=!oEi(xlNi;~x za|Y}$?9c3Bzy@sZ+kYB%DA~1=XqHlB7i4~sMDf$dqeJSPk4L}#@zXB=@CAHQfE5f(ol~X=YSgIlyE+!4)g7>9Zp9t z`rkqhotVMSDN;t$_z5h`oDscYCp}i^MQon&?6LYZkaBj;_!aY98BzD9U`BeIw!+Wx3Q2MN5iJnLu&jlEN2< zTBWsv3s@&SQ!YIhItjgT7iYzd6rPAw&uOg?k@lGq4E0dC)RN9&9p|sbd{jX=AE(qs z+>A}sKi^2zea!txd8XhqId%*6TA&>M*Ivp*lL=JoXrq{8S|}ouV@f8PbgyOcY`Jtn zU)`?xl$8<242#3PgyDlU_{dQk!yQjM=;7C%x?V?*O;}o7^@YQ0jw1u#jObI0uc`gO z3J+0>#-D`i@IDg1f+9;l;JwOJ_}c2 z5lbD*r)wv+fHBuZ!LlBB9j>-*4z@)W=`eS9n3IP$^X5Qk0#BQNQ}qWcE4S3B9%Myc z!?)ISN428x1x`lkRr>-rw=hzoc3<=RLJNGRW(yLb;6Q^fHLWLCi|`i7|B$5^GtCua zC4HvYo*G7`xdN+z)(O*G5!QZ<3u=6L&$sbZ#YOZ^3? zVyXZ6UbFxo61W!M><$b11-OrY7EUIQ0(^Are?uh8aHy8h8viV8qYBk<7qHTge?RiD z2s3aATLo<8por~qtbG~VSKwvrTZB27$MXzgufhTzuVL!}vJgC%e}?N%7hd@hUi%eW zIk<^O%WCnr@HiWx;5NL0EdqCdBI@oCwS?ypTMn-ywl@>l9w)NBoq_G01h(%J*_L0B i?e|2sl^0_p`2@BcyocV&!Ta#B^%Blr1wMd#@Ze92srESl literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerClusterIPTest$MockKafkaListenersReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerClusterIPTest$MockKafkaListenersReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..0d850ae28ae4a8f3bceb949d561e95f6b284965d GIT binary patch literal 5967 zcmeHLTW=dh6h0HuuDzs98`@H6p+hK;aIv{l;ZmuM5)!ewC{BZTW4s>Q)9mi7W@oJg z3Bdz@h2MY#61?-H5NF2TdY#x_Hxw15JlMNC^Ub-=IdkUx`PZ+%1Hcz>$AK9F-zUni zYM$uoBi3bAA*+d2BK%HNWy}@RQdRvRO*B`70hS~@Yy?NuuUPAVc>-r6u6DUEBVPnu zt@IXb?Cc@k+ndrq7y>2(qyw`AE?Le2i`v!g#v|@)0_X3FNa%Y6eq8c0v|w7usODK( zeHJxuCt$iIRk+5PP8Cn?cbN!SLj*z})x0|Q71!H+P0Y9I3ZD-Kc4ew_pBqsdX(W&5 zm-h+GuE-{LpiE$XAn2-6QkCF&a{1?n5iXHImp7>|!x*_6Iccn9Bj923Id#i>9Zs9v z512ww%=`n^=5$fWO5fI%%+{5@tp@{{truxi@`OfG(~xPuLp9RmhcTKfPZPaaG2W~g zQ7cczp(m#ZW2rR7r7hM_!oNd(78$k;PBTT1Bl~KcAQpmQc;Fh3<^l8dOWls6L9hTi!QO zV$q2yGEN@NdGJOU2f`PcCMi}xSe-kU?GKdN{gj| z&Z8@I6DvS7gDA=(Q+MIx;JkVkq) z$*yP`bxxEedEHIbdD^vgtbn6Y0iS2^zXch47Z}g(GJ{)@k>-a*aO=$ik{0tI6+yA< zo}OjDH1`tWTi)3+EUXv4mh6s{qfUVQ=Gww5hk=cc zi{V?*ShfS{Hd#CZ<(9{dTT%PbJSjwbVh{M7Hs~zB{x2>PIFxix$a23 ztSTO30v<;Q50I9Up}mZn9Zs#TS*T@hIMxxs)3b%AgfXqT#D*eCOuDt}$1$4Pr@1&A zyNhz0^{Hk0Nqva1g7k$=8(c+P^Q7qT90A^MO2h=rpWeFK*qVHNV9x@DA)EW zSeEUZUdN{ZyxrwWVL>n%=0XWB%)vRhNZ{&{H)!Pa4x5^3^vru$-fX2IdSlOIbOH;W z^jWaq&+z@hS=|u{fgikQ+BvHcD66dFM!;QK_SRC<0W%YI(T;38jKJdKiMz)-Y3Ng| z^J@2S!HwNC(jw#=SY{;xRljdKJ~l<6rmmOSxK@If39L`UB(MO!=K70&^P?9{DSQX`3YuPy*ln+ioIob8?IGb?j&M zeB;0yxXq3=869{F<<6gJ4lEP6K4gtt@Hp@evYeD}9C(kw#o;J&pi1D%@K|pLIPd|1 z3qy@i2R=dq!_89%K0(=!HBeFT&0hN6!|acHrL=`r(AV*q zQ8jCOR9`wtmHae<>N&V!>D`1^@CooL{#>L=;1;}wQhtix*KlMJZo`|f1aHH;P=WX1 NL)79koST7Le*=2m3qAk< literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerClusterIPTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerClusterIPTest.class new file mode 100644 index 0000000000000000000000000000000000000000..aff7827d7d6e16d51e829ab297c4464b129cb7e4 GIT binary patch literal 8210 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerSkipBootstrapLoadBalancerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaListenerReconcilerSkipBootstrapLoadBalancerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..7dc4e777476d88226a1c11f57a67a9000a97d768 GIT binary patch literal 8774 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 S3>2UUC3pZ8cm!33=AP$zWxB?^ zi-pe2VrOmHHP@DrxduZ7Ce#iVbz1qw`eSAa0wc!aojb(}flkL7$b1d-n?Mj7cX?AMV6J~l2Mv3R0)vM zAgVlwW3^(XT3Wn^V@C}oeT{iOcb&Z9x@$ojSr0BP6bPI)mMkiou4gYWDguxBg>}j; zTIUuQn@D!VU!@*v+;=_HySTy30HH!1jjba{IbvFzIjHQUaW|+l&tVAnyc)yVQ5zwW z;{?VG377nT2`4fRwVB_hCeDodLA#ABaDyqM!hARIOxDG?+L^;O6K%IqWdgwwo@-f> z{)8bxLwhc5n?my8b>@i;0-Av+hz%SWTr*t)XG3UqGc3}MT;~oKH*wL-Y>mLsyxU+J zyiMRx-(W@Q8lx~nCVpLU5JcBnXARwS?KWa55O=-pxpj-#{xvkXIry5kDnrovp+1@dGYZS=M%Pjvd6bo!hWHMh4N zLOHqJc0Hlv(k88Y+`Our)REiPnch|O*(o~;r{K9y$@fv()$8^>DiEje<5!B# z^;$`g?32VFHtJXl1hJG} zn?PK$G50jN&@l^T9%gTtdV7J1`K})3@iVhJ_w~SOuqJmf&BC-9^SCArED@#7>18Y= zn+Xen1euViOdZS*QJ$E*tEvixn5ifT(fof8q_Un_!B5MNS(DA| zRyM>eh|2REOZ$ZdT6R~Hu2YXw%(%0et%XX0Z2b+w$|ZrkSI8vLrLxmb1y2gzF?CPE zD)nU~&?J_<3F~h${6bj4ii^%she(U!i>CXRjGYGBooM#xt~;@bqFZQUQzO|3d-_b$ z?3>nFp_ddX7O_u4&T!7J639S*jE zr^{2Ze>*VGO_GIkaDE)7;a%(*%{<+VlD&^Z2A*j50vo$K%QCpiUXKK_)(N(q!6C8A zeF81xKk2z)izZX=Mj8SqD}f`p%}UNX_c;n#knIZ9gh83cj9yTh8->e+{G6g+(_4}N za#~+`(R8mw9K-G)?L;yHS)&`((27?HJV{~2?urB>zN|QiN`+o5;{$enXN+#Vo0Fg3 zc*k+&Eb4rNkOL`n4m~$T#Odyp08XkX_fldj1_9+BA$nt>e{{gYK6hz%uw++O`A0HT z*lIRC?3J@<+ju^_Iv|jn346?u;5`?1nK6_**qtr3`P{==yyd9QJAo^E zT72E8xx6uV6TRUMfu&>x_jalfI4tl4sxT~COm4B2b_11GXTx?z%0WkzzoIY(f!oQ# zNPu>CHauLU082FRSx*Z5N~-EsU;#x!xD!)U8EfTUssk=Rqkip(=nt>Udle1vo@696 zi3Tfp&MCHii)nD5z?sCoGr`Z zr*GEK0KqvXzt)(_K!X+rQwfU9rZnJ)gEFZGYbfS+>uO-*t%vkA4e-+B z;MM@C!FRZ(e-jc$2n4#!eIGBemaz`^;SAvQ30_SdfGHS;5&Sm=8jRv-2LBI07T?El zw)=h%-w(lrqI(S{@tK9ga6~Uj#@Q1hqZP4%wh?x6OX zhO@ZCTljVvr6H2)cR2T8@||B`_D@Co9{!G~nPIqq|Hnfr$Uz?8GVnff7=RBtR2T6n zxt&+Kb-7)N;Z{@J1{9AExA3?U%j2UM9<3e^0w2S*h#Yer9#Sj0N2t~H7#>cHRs?Qt zk?4~Mw?0On#&G)~h8w^wm`5pYBbNav_Rt>c$+Zx}>BksO1U`dOM9a@3a`m;m8^i6V wSZ?KK1c8R{ zS?PfJLHa3OqiHVEe&F%uw>&Le=FvcSY0GZ;0rR>G)c0AlW^bey=<+JfanBQ8j;=EA zdM4T_L}!blUS>fB;WZc_Fc#{tsnbXoYEPLJ5E#g3at48Mv%6JB1DwVTfkRp0_yKi- zDz#f|7?K2rnj2S}&FcgXXA8MvA#da>OKpUt9LmK^))T#bxSl|Zif!(t|w|XYx=kJRI;+d z^g6R_>4=W;U8N1CU*cjqDxK+0=}bqZ(_QG4&LzDrn6En`(3>={R`dWd*}980(Tj=2 zIW3EGTADijVj9|Z@}?`iK*yuYwB~W^hHgl~%1D4!$m`;vS=O1pN3 z{R-Kyklmjh`xWx?S4jAZ^cN)s@?JMq?9tfT4!G_CHNn<@=PW>SdR`w7KzcfQ>`9-~la5?lKx}#v=ABRUlKzKH^|66 zDYcw{H`zQAH$F!jGm=FJxe+w!pg9}LWo&z97^Vqa+?_^276qvqx{S0Mfs~n%f5@{0 zj!3#A>oFRzh|~$g7G5z~Z%By+Y(1EfVH+~#3LYAlhsqc*w&-r2I=ZcKQL7TeLvP0aX+-}J@jmh;+r7`r0z&W`TDa-K& zl8V?RDx%E|V(>!672$Hrzwe2b>l^Eq-KrzlDS5JYXVylx$>u&1hvVkxi**Q4 zX`{`N+?z5pUZW-XzP2JXHd*EkhX!HT*8h8rw-xr@MKi+i=cv=7HU`PY0JT$1K$qcH z>|{E%76n=%Qe+3)#n3uIJ7*J< zQ*8&My^PDzxl}n!$2~5a%C$aTb!WahWE_!3HoH&384Zfa{cg>p2FS>chQM9L8dUJs z^l8%oFYU>`<)}h6_#C<4a2IcT4>zsBV~Mu?@u0z%l8N5JJ8SR+HSAP`8hnj+YDWTE zgBsqTu+wOOxf|QwbTq(b(8J-kpAi_O9QS=pa0Oo*e7FcmHRFF6Qg9juVF+g$&Jr+; z^Ayej$AdlVBRD?{qv84(90|v9m4%?M6(rpOk1f+C z?H485d_1(FQ3YB8K7|G46GYK#hlCQr3~M0=4IEG7^Q8cvK^Yd|Av}UF;44@H3Kp<` E02UMpRsaA1 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMakerAssemblyOperatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaMirrorMakerAssemblyOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..040a1156a3db20814c71b62763fe4e3778380fc9 GIT binary patch literal 7103 zcmeHL+j1L45baT7%aTJbPC{;kY|JHgz)}bS5<3YvwoF81D@e9;fg+4{NA|?KJF3}T zVMFoG8{fcBKowNMJDAM+;9OO+2oExj*gUNwZ~q0)KVje=0iFUwQ5R7Xw2zr3LUO8N|yi^ zuHwtV*}{CKI8}W#Ri2wEe#mI3v|&vZ&iYHxdSOcWLCF1Zk-L!?phNid)o@*@;ql=b z*TY{kI@!?5iEN>7DHS40yipYz%LM~8gk_*RwqgP@e(ln=%TTw07868=PYC`)0QajKHaOuv|9}$ZF>(ZCuO-B1hMi&|FpHhxU(+EH};#M$w zK0p`QVSmBbB2aEqIF_xvhQxx{MGL{Ixxx#^t!!p~Sy+y+U9)XggWD@G(;Aj4*Uq)v zdamW#xwi3PJ=caUM~T4lRcLuUw3n?Am}0eoTudUFsQ+f@hLkm;u zyr!jn)v~#7maPeE-O=Y?v%N7r_`atp_oB38b?jxxUWV-a|M~xBNZc{>P{Yr(p3+O* zTzHmL;^R3ArQ6NuJ;fcHk7sF5_iRaS5Vwm7&)IV+8L!a>GvToHdJEq8Wjf#eLJ8w}3k!vzg9|UKh(cRn0|m0sj_BG0JAPy$^O- zVOH5IyPX>cxeI z&>R2EA|_G0#NqiS-aJ6B(inK7k*!RQVJr@n@Ew6Z0A+`5cI{%s1(a4NMplfhn9B0rR#D1yBTB#fIh=X*?Aj zpm!O4(*wKmWJ;I#Z&v`l6jB!K5;tW6HmbBofkog&?vFzcU3kEEH2M zW-`u%*gI2OAo4=78cvu@=r5Tsu=9OJ(>vQ4^HfmY*+fPs%<>BjXJh#}H7)D)wqct_ zKmu;jp5fAsG;(t5P!%~U78;CBZ;uI8lUuCXylmC zGll$g*M#EgYZ}g$(Sg!Nk2H~{yC66_n}{~CoFN!v_n1y`Na zI|*o?#b~J*LdmxwmKOSIn-(F#4F&1~J%)Uiag+dZHqWJv0MB3f~mXx}EF brRXE%Xo~L8CwLx2y_M->s?q}8qX&Ni3)+D^ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperatorTest$StateMatchers.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceAssemblyOperatorTest$StateMatchers.class new file mode 100644 index 0000000000000000000000000000000000000000..9ff207eba9d8a42e013197bc530760698179440d GIT binary patch literal 5199 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 LbND6v8eaP^vbx&= literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStateMachineTest$StateMatchers.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStateMachineTest$StateMatchers.class new file mode 100644 index 0000000000000000000000000000000000000000..475f2a639aff627b4f3c65def2f28ddc1d0fb45c GIT binary patch literal 5032 zcmeHLTTc@~6g~q;+qDRy;N@w8KEO-+;)4-2DNT*U77{=VzD=i7IW z`tFZ1o^6Y*v~+U5z&zLZM3*94|l*Y*j_egz{u{jY>;HRS{Lxa}`>}KlsiB}#@>07fD%GGx)*I6}g3d@>6mBuZ_BYrFrC*6S?h|Cao$qgV;Rcs+R6><} zuA>GslA#>-QsW(6N%P~p38fWzt(?(=wy0jNHw4aRk@Mqlxhmd!;$dxb1-$v3%Vc|n zo?$V%FU7QIt?3xdHlD3U4jIO_^PD|V9Pdu81w3>rj*g73c`?yl4`g$@(BvX$UD1ZG zqwDcEf|W@~sR>J?P;i|rd60y;G~9wa1eR8d-ONV&>|BpBAM-^#inqdgS(v?O_a?Ad z)SUVIo!z`sIpb>55;!VeB_}grM>{tIv`)a=ZDnrW$SA5O!yC79Aq3K!N(qzqql^kB zksc8E`0oNHF!xu|ia>G;x45_3I-r25CCr=wmQy$avsfnZ>lxM(EWK}#JXrL;K>7!M rO~E`qBMcyR0iWqM3hu%peoezYd``iASi;i7e*~7{A-+9o)i3`BrRmw` literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStateMachineTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStateMachineTest.class new file mode 100644 index 0000000000000000000000000000000000000000..522b5d532989723649ee51bb147096146b4b007c GIT binary patch literal 24990 zcmeI4dz>3p701urZa2Hz7HBC2OH0!Suv@yjJj$zE9@#XdOS2D>bW1C+&L*?F!zP(H znJirtQB*)s5g!OBDyWE{0)l{`AgHLIB8UhmpAU)(h>9XA;s^EI$?Hz$B$G@p+7F-p zK{qow_j`Zm+%xw%;emhOc{czY2mkUx6NBwpBi>`GS+nO%Wm@Uc^q#C~XsNTc9zCNP zim4kt@nkM*sz&*SlFh2AvE)q8W@UUziKt^rQc1_vsHvFhfD)h7(rOHeK4@mJmxaae zCwhj)&Q#+jgXT>`(HMgT;qq5etTR2)%V1tmPiIXfZH_3(oZ1R)4BC=vZX&78VwE&#v()E(MTv3=@0aU ztviFEV61;=a5QvkFf`0RwZc9OI)j!5^pH!4sOYmYmQ?XNjd9WRbZAFh&F~Kl7Ka9g zW7|eI2R3dFAiFOR4h*8#(cw^#!NPDw;4^9*W4A1@VZ&%&WN0&bPZwMf2@MR5glZej z&--1FIjkEPch=8fZ`=K-YD}vJ-VG1v@hO{UD5Yh+me$PU8O-YF9KjY3>Iu~cD;Vrq zZu5{~=te87Vtd`TC2go#Jvpr={Bb>%(UJ;}f(o*ijG7;djw@q^7C*)xSJJ%NG1Xsm)VpQD;X0VREw$ZIs+o1WGvtkwA=n|C zJL<^zUD{4JCfr=ul}rkQgq!3>%+jh^7cOUN$v1*wd5CrM=KtRCp&h20PHff8NkXdM z)cuOzoXM!|Z6o|qw5+pyCgU9cMdSWdCaJ|W)1S@ZoExV=I0ZIxah!Ym^K<5oPQRA* z=h6vv9Ou>v|2TewpOst^Go@_Z?H|CII{yZ({7RZnZt`HksJ$&}O}1S$?TSXuS+9!| z&H{ZoEt%jkc1*~`262{axPX_625^>KwW4Vyzg%c<+qKm>mIGBi%0DT6DrU19NK##y z*d~E-T!Xrs<#8cgg}T&R5kU!U1qFgMB)jyIFkaW6v-S#e=!j zm}T4Oammc7(4|*8P5uP6g`$uwV zQ%kA+>1i#iq38hLys)-pP~)6%smJbZg(DdB*WSJ1n>VErwfhSOvlZUUqrh;nyT>|? zX0XY<5Mw1NoTeE?&awnVQaAL&Hv#K z9p6q=cbL5ux~x6px^DJ%hBxNSoS|YHwMDgww8AeKBU#q9ZKK5{Q`dj%c0DsH$Ji2J0MYg_9XRIxWA?#mP+Jq9`Z0GLu+N>II$11(d#EcwN&x+~8hMv*03hu@$ ziJ8(#27@Klv#N8%2d7{^z9rHhok^PtF7ry;_AOza>zEyQzOlhQV(z06?&{N81BpbR zp-)-uPg_LPls>H%jTTNBPKQxsbw9(lP5n?hkQN}GnmKS{D zOYK4345jtl#N-CWET1;vF-*GpcgJ6i&Tr*bq7h zj@U|h9S$P~OACJVDT$MGC7HDjPlS9WzZdHF)8)mw7g#Z{RlvYH3Bkm%-R5zMPHCA< zijh|%2&u1tpzJV88Bv2Mb){3PqXdIPIJu(Psz32{SPQBxH{IBxWdD>=+nm8#cfH)p z4Qf&;cU7(MR?I-xuBI`%;ONl}i4r~Tbo03641)v7TB4?&$*2h-yK34Asyk})M45{T znT3jRXtg-v7%`{^C-E>_6+~4x5)|c?( z(X+!UJabpi;8>#8V&t(i=KdC*s%S2iQjGF*;i0VHEfp-6dPP^e9j?|a%;4bKeilpP zbl1gF@L{zZQ&ha9mSP5>>eGb&`sWD@j^LUCIa3d0@Nj=xN!oHfrWYN>wk>`{pBpG8 z_8QI&7-+NNy zc$lfDi(jJ$^_UCJSg)`Zi=)FdU5x(nDZ|AcXTQ~5?C+Hf2X|vZSyx3fQe;u$GMhxFb)lt8VX}Hp$CF%irI;8l z=7L@;F z+2dv^=(LuwHL2p0xs*SdHkG0R2G+{2!lJ&cX|SZ=fwiozzfSBt98T1bh;Qxk-V2kx zW)(vI*JUs0KeRr+*bFOhFT+JpVJpLFCN`L$+RB64)`I5zj*UZtoh>THt&G}m+-~tK@W`4AxY-xBP^`SJ zUA?stQO!=Mw%qTKJTYcVc+9Pn9KsZTVo+liRqx`lVzQM#HsaID6M5a1JJtc9ZO^*a zEA~Qzctr@o3VK!{#&MA?j>54*dsNREado4{50F<9M|8rkF09wq@mCGu^1EtyVm2Gs z+Bqydw;z9OU<8x=op?O^{WXKh*YC)AmDNlG{9Sw1z@wdcwrd~!7EhCfLn9wN%V3eM z1w+MC2Om6-=hyiIKp(uoU=Mo~eDFs+lCj_8XQMuN5r3mlai1S*`rt2kpyvD{hf(<} z{*1)&8j}zHhGDdh^L+3R{9%jrF^1V!INJ2VKW#sE$-hB|As^7PSzMCD@WsF^zA}J6 ziooCBw8LVU4J~-(!>cA}#p`zAdJbOC6R!8b>%D~Q`FOpzaJ>+(7s0;BS`7OY{=Uij z%WK--s&NS{#lII|od>`&{MV0HYf%m3-`)kww=GzCI~;fqUNu1n{>#+?s_evn=jN?o zH5`IhZLkIjv!Dw3@yjueK8A3C_dpySWIfBOEy%KcN^Mvzvo;-`5CtM(bOwSW8g!ffh^OpBB zh_P(ed@{BdNzl2HBws9nOs^&1FM)g{p&8%<-tuC6Lc2$N(Sn7~6{p8iUIu=)8&~e_R6jT9SOZ z1oDjp8Q=5_Dccl5dtkzJ?@!RRZ}2f(&qr$JpLP&=}k*K_`7W@HGkK z2T9GhNgzK;kO6M@7~3ZZ8iP9|=zM`Be_aCkWs-cS1oCSH8Q?B&v7OyS&=`DU=XK6r zNRq!PflSXp?v_BNW*`9fc#Q2KWCXq?LFaKK`CbX+jU@R#3FIMy4DfA_v5gTl2H%mO zbDSi9R{~il$@fbj)9*`t&tq)QA$5LVg3e1w@((1CFDJ71RT|zDN8k{O=k3^eSF2!S}j<1HXgk@J-s^!yn*J@Mm}l->H2W I{tmDF7n(&~CIA2c literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStatusTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaRebalanceStatusTest.class new file mode 100644 index 0000000000000000000000000000000000000000..184f4fbddb969d7b3a3697ea02735d53ee32b2dd GIT binary patch literal 10059 zcmeHN>rNX-6h1=;zLbOnk~Ej5-Ox)QEq2@VlIB(s*Oe&dA`D28DxvXufC=jzYi1Tf ze)k3XG?iMl{okkPdsK>g#%r_QvSf#g5o-L$_KeSbd*+-u*V(^b{rU$0Jb`aBFhF2g zNw=t((#02an-;k!DlK{AB`=C5lT-^?biF`nCZh?e6l>JH-Qp}=-=a&bMm_4gtg5LF z)G}gaV35G279jq!QCz6KV6G-`@!8VCY@Yy!a;dUXUB)MvRn^7mQaKAF z1g^U>;EGMT!q-xGQ$B4l)ub*%fbJDp7$tCL%j|0EKTC{=rrMGqF!Y%FTt6jnZentk zz+g$#Sq9!FFcPs@mQu(p+#sXBulSNF;cc_JM zuv$3W6GA?DqbZ~|TX9_Ko9ES-)7jx+NsxhcT9e#;kOmg9+NV5Nmup7_=r7SG(3i=;MZf8UUT zgTHCu84KE@E;w`OWz9cGCnVZ=U7|stjoD_b#${kTQD)FY>`VHQCf8oU_O5|g~kPTMvzj2b{?+5 ztzj60cL-da*x!dU4X}|4R;}|vqsHX2sdr4nPPo)tZP!2T$w9rz6@k@CFPe^z2wZU` zqngDnm%xt+T<_mU!b}{Pit|*yL!tB=?g>$eb6+Pkq{;&B=pv170oCJ(-ju|5Z9vha^O>?pHi zG$RO%8NY~Kd6y~GY0hWiK7sFE?-^U~z2MT<*HQ%XRS`&+ea}r};db1pqAq{yeU=P- zjr5UXGVl#nd+{Y1z*fO%e9n}-8F&(VYbi85d_`z3yf9eCI|c=J0N?t-my`zKCY*;M z9A$7c09hR8Aip<$3&$6_#ussXscU?>wRQ}y;EJn=@CBk0{LcRd*Pf4F{{?RT*}}bz zpXMp%^IiNL4yoWhaBu|3&v+NYd7KFm-cLZdn}Cpm58--2#@~-UU_Q2 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerKRaftMigrationTest$MockKafkaReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerKRaftMigrationTest$MockKafkaReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..c3d8145cb2861d8ee5489ef367121d0a8e6bb0a6 GIT binary patch literal 6240 zcmeHLZ&MpZ7=Jbej-*hKT5WBuS8OX(P5f_dD3!)y87{yOisLxG*jyH}<#HQ$Hxc>; z{7BB|jK23nsn6}*nGi1IA}!PD@FKa(=C{xP-F^1=*WbVW0RZ>m8w)Z7ep1pcXr^@G zDQ(jN7X_syZ#?4#(PWZpAq%e8Qku!m09A@Ls@_3imG11(P38*Up@vCLSWix^QgaDSg$^1t|l<*ik6R0vO-{Nf%{x965w-AET0>xMaPIM zIu2L5h<_^4k}g}1jIFeqO^-7f!M2%HXiBM$idZyOW}4QhrWH*!D^s8DB7AhL!daR-D*}3dio!K?!dQ>8)N!>m4(w^laA7wWmXEz^Zw=)oDch;^6rfgqm zyFs;Ew>8RS`%O$%w@j>`d{966z|{P38bUjHqba1eaq14OO77mZUFrvFtIUoa?L|gz zoFUJm6fK3b3hAt)v(>?0p`D@4q~1^A&r6LHa(9pmrv@=6mF5jL$RY!5Y3@BY;Hmj| z0!5GZHS=rVaa~Vv+t$LSwmxXGTo$`4y>HM#lQjTb!M4&*s)25asX&Jt!U1ZB0-M&d zufR5yoMMNS%ce3j6)5PBOBlwe5ACZv4ES*94eaE87P9s&^TSSlfb?PUrSM)5x85b; z@9;qhj{Ef|xTsWuJ-O@#cC$M|HkO%b#nn=qVuM@d9@hs66S}MC1XEXARVICgjcjyf z=&Pzz1*TdC!NbILLxX!!fA`Ir>Z`m-ds|W zavr9z6IWBO+%+)^Zh1lZrt{>`lr7w&60GUfX6D2m54z04pWzy?J zDlHqqWjF|@E_swUDtNcYTVXmkHl%QwQk%lVE8)@WS+6~3K~1yph74-7-w4UXtKR|J%E>MU3hEpjEEam@H0<%~f4DDf1Znejo}!*Rt_n2{45M=1!ekiv@e zqBXz#PsIsb*oiC|hpPl`98Yl}!-aI6jEP4A*XKfa0#2``icZPHzN$FyEVlwW552p6 zEMURe7QBWu9)YWyNJ8S(V8w59#j$d_&MpEuXT8m&;!EFLRzR;p1a50gboku3tgwKNak%$c= zXu*d#Y+SUUfX15FsCX>+n7|b?lEkfA@F{^w^LKo7TJSk?n`Wr9=q>n?z6M2*RU~r zER+Tt2%JNX98(OVFotjE@ZExO$UqicoHFz8Gp(WSh9UKd^ z+4zjD3asxh>xTrZM&Sm|$-peUi%)=?_{pJE0=M8jwD}?az6O&p2Y28D$iqkQ3Htv9 S+=Y9v0E_T7ln{}DTmJ%p4MgMs literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerKRaftMigrationTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerKRaftMigrationTest.class new file mode 100644 index 0000000000000000000000000000000000000000..04490257c0422b6219ad6aaa26ad84e643e77d38 GIT binary patch literal 6780 zcmeHMU3U{j7=EV(wh4to5m7)~5cw$5sGuT6G+ojfv-xn7wt`}vY^Lqd%}(5%)Yc#3 zjW_-a&(U-A-Wz|9H|jf+O_QeECWXTBczQvmGyBZ@HSf&4^YF*tzx)OO9|1F9h`{48 za8r_nGWCS6(G(Y{PzJpIJx_@S3#b%9%JrI|WI<wV<1{Y(3JNvg5P=g~vPb>pRI&PmxspJlkj`hyrL>hHFm89gmr=LBJVoG`CHzoQ zU(Qpn$wnYSV6?t*)2DS7HmJ+6YuR(sF zki%kZ#T{D@etT402T#p6_!qs2Jg)lF1F&U-mWII(S zqvh`mv{UtxSraTYeId;{mF|iuQ6^h&U^aHk#LY0NHp8Scb#iYST6Xe!Lj=;qsY|pP zaQBYsQeUa9GPCVyFEVoD0C^ClXe%6KNM|1%><<1vIvMl@HGn_=X`Bd_`?>JKAo`|~ zyw3Vrq=8Mzy?q0|Fdv^mQD$8-zqY{TN{rj46ecz0MuR02x?s|1RZ{fQ7)WHG6C&E`%PbiXJ1Sk?_ykG!4T*L!LZX@g*amar37{Tk%1j+xEz9gUB}!93YArGjTvj5WR5^qlrv zZby7;|82nzX3{{x&F>I5n^sxuHtBU@AT1@8*(#jU@+hyDk*L5|;b3l*0^zbSbcBab z!tKwqUVF9#YDfG*Q1=wn=)ARPpMVaE+tbzfe6JpzFKv7J9au@2fYc~lg}0H_xwf4O zQxwXW&3#sA*6~!Ys5@J6X2PZ3d~}CLgNNh_4+$*V&y~_c@+VPcNK>)2=MgyPG<{Wl zX8koDax|{%cvPg(bQ?M~0v{5%xI5j0Y!C8W$Re^pOHbPA=x^x{k)>W_rT zF@|(nMQHA^B)R})JftyH7*u@?shbKJH_6uJlnUw*TaBRDiEU!H%ZlU^xUIl=aClXu zp_BaiK=(U?&Ka*84KBI?k9yzXkU*`fv%aq(iy zG6OzW#HJ#j4L}a_nEtbU?HMqK`t(p#{zUw!0Sma7diK5n50T~FRxKLvC4uw1)nEoZ zR*Z5)ez*8z0~XORoo)tDoGVBhv5kJ z4D1cT2=$){jyPAI~YTtm%y8k9z!PY=sSK%7|UdP^Tw31+({1ql1j=%LYO#Y6&A$SLWmDPaO zzl*=4Efn0s82|}*4h&ofv69XlX-Q#@#J4rUsVr5LhsyqJ(QZ ii~q8ioi*&A$Bg_8Y$!kp9H_uNd;yQ(EBG3|f$F~;lW*++ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest$MockKafkaReconcilerFailsWithVersionUpdate.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest$MockKafkaReconcilerFailsWithVersionUpdate.class new file mode 100644 index 0000000000000000000000000000000000000000..7f01a06c4060c0a1a667cb9df9d4f2c45645a12e GIT binary patch literal 5740 zcmeHL>v9`46h3k;Yi~mnLK_N&vQ0}#3fNo3Gr8;Rkji(g{cv+gf&&$F>t6>fIplISz9pqpHjM1SV^;iRv#A znC+`yQ%b5LyhP@{-xCU@_&wHiJlP4jAE|c&B^y5L=m(Bn+HEtZ$vmGb1O?PPq%Gzw za#>DdSWaVDPGZ>aNMpF@G$qrHkjCjygfL!nS?usM;Azb5v7qie~}><88UiTJbxL|W6B)m*cZ+P zPO4Uxt7is@PIJRMEX$$@*frcgd*GP`X_qz*(EGb%~6C7 ztJDl|9gAf#ET0A?<^n~9X;K?}`)%G6dg&s1-EX8wtGv}77U8tP zeQu723>Y-}9}IomZ7?Mm)~i|m^r+$#%W1nb=u@qYH-TYGV$i;^2e?umc7qJB|BIkn zeE&-CGBqgLMCV4Q+PhHC=$tbLtyo9usSijlZdDm;TnOPqiGyuaR`)D zN?{SWu@no5xvZ*N^KrFRm)-Slcz~j@r8;kk=rkp8XC!#V-Iu&seTaju?{r02=52}| z*BmEhHKbl5LJ8-h`V3n{1Yr_v3S{3jM}kh6N62td z<+YCq%xntWBx`<1GieKM6WDtp^GslQ465%P0#i{yEm%eZFOI1N?_zi4s0Ht%>4SM- zK?V7_6H&0>Ljsqg&Nv_zd`#eSy5wS>(1K40TzS4P<_<0RjKH;Y_e+n}lp?g?bL0lY znL|^yxYk(T?P6hw^Hh9-#nvOK4LCqx0$Ef7ufr5fY1zSb93JZyZyC@;l5KDOVuM#GHizE~fL*O;E zV*;+@cLCmjH}M^6xqe+u`ZivJbh)}KY>na%(J literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest$MockKafkaReconcilerStatusTasks.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest$MockKafkaReconcilerStatusTasks.class new file mode 100644 index 0000000000000000000000000000000000000000..dfed6f281e7992e05abad399678547c26f81cb49 GIT binary patch literal 5964 zcmeHLTXP#V6h6vr<85d{XhWe;wrOaS0ydWdrA`AGPm*T3X*zKdhDUj=*lN}*kEAsT zzk|QQGc$As-uue`VK}Sx)^6B%H*^|kCJ*+mv`62$=tw&Hp8fUP?*MQgzO!J6fL78g zX{L1P3GL7l7bT@7Z~eqeqRk}LLY6!~RGP_N2UUu-YW`vAA>G@jTg(%I$9*QNn(9z( zBiP)A@b=TcQnjxv7$Goa6#6u1ls0Qmn5PMhxtnWiD_aC++ys?V%|+mfMuW*RN-Xk# z>m>qr=8uS!v8_ZXJ+|33yc)LKKF49Mv824POJJlT>db-*1SWgxSELkj9Nr*PKkoz* zQTz_8JDzB@xo^}vZ7FI#YpHvVUD$3ir_MZ|N)&2SZ=W`pGs{J>8@OT;xMDYOy^bVs zvrb(w!`Y>fcztJx-^kGb2muc5GcrmtRir2J_dc)`JdL9A{!V;#&-hgn_r+ zO)RG+uN!=yBd>Z9r^)sWmJ02Ljn`)0oqmZBf<*Vx_JUSuOws8#4M)pBLbsl zYApB!`M-E}EGS{O@y>$J(BA%xvfvA(_l~%3!IuOsn9eu~7JN#2%o~|I745- PUAPB}@GX8Df?IzBnCY`2 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest.class new file mode 100644 index 0000000000000000000000000000000000000000..ab9f15b85962d2f1ac02e44d0b55b55b78f822bf GIT binary patch literal 7712 zcmeHM-E-SS5ML!tWV>k-(w5S1C6to15SLQ=l{Vn2P6<)$5IYIwE1cy^e6=ijPG^(y z!UIn{@xuSo8JK}rhW~)Sg&BsulbkrMVk?GbppzG!?{4>ZyQ|gS-Os=O_0ul^a1W|F z^l7l{b2}}lFVc@mlcbrK_629PZ&=!^Q%;1()3(#_1?AfV#P?~fh-mml1k>S=1|tg5A?`*xUwTY!p+Pd2S;!U^GiFwUQEPj?fNQ!N(;6HxJ=Yh+ z6)VJP&;%qk7?jqzz6L|4wOlA>m)0am0)`MyPF1B58YEV-ONF_7uAspQOBuF8xz9W| zZFyd`QAhCp#o3Go=dDGDh;@(GW+~dssh?>Q=8zI|n0SI>M?<7F^TSN;AzFHT2cB6$ zk0{C|&HS2~&&|#~)ZnCL22sj~QA0o0ne-^tvf9M854Xfj5=_lybH&11Yl=}<_-blk zJ~KOy3VN_K3J)|X7n^bf{Suova@?;FPRpwvuTq}fq;><}7KYv0If9adcbUt?3`SsL zaz%qfrdOsqysp9U_AAJ8?(qb?p^f~w>|#(nr%B6(?bYfS8-Z~&>f9?iwC3M2QpsY4 z8f9ub(g34Q>?+xy#yIn)!t9x9WzSTYJ=+7V>=`%89`y~^6Gn{)yJ85$q?>h2ly*$a z&nfwur=+P(vIYEz9-7hVcEk8gByb>BqPZZ24jcC$zcHUx9_UvS@o@nRRsZVKv_SDC0p zgwPP4K@9PvPE$#BuvF6W+}uUDppNYShEV%qy$fEusJv$^V_x_XI;mu*Gk%0Zdl>$K z>U^U_xl8f9im~h%#3td4;Bh*YZ1*X+TXeB+&kDf>s0-?UQ7H0G)y0n`yt*{FO?OX? z5Y;4IkmAaD ztZ%b>pkl$q63Uc(!HF#v@ZuR=$Ya4Qcy_gO)KbYfGB2s?rV|nfUD6}2+@2F#Ri>6! z*R0-?bPC4d%^|n|6UgsOJWm}-USrr|F3mM+Sc8kQwn~o4vx&13*4l9Jkf<=ElUA)4 zLVY3Kk}OfAmuSXuG&r-=aOE*)&TTTEp-~x0J*Y~7HXOF@w?wBC@Qwy!ow*mJUXbY` z>qy5b^puqef8(;JBu(;6Py?-&G>71M=cF5=5S>)D`WYgfvu8Jn|i(ajLThrj`uF~=#Q$Uu;tWXo=*l5*2Cm`SOE+J9$}5k|5#G9QbWbBfPHQrFr(o}%(VQ}VtzJm=z8 zXF8HB^mUlm;M*7SwO*9l#WOa_jP>Qa2y;G2XbmP~%j%HRKRU^;9dTfdX-)`9K#=OH*(U_ymi zF25%q#sIl+{1@afoQ44y#Ga15K1g6c)z+8uN8l*VorYl;QSB=*s@h|4T(u|QRn?w^ z*Hn87WdTvnz**IvgY(!9;~E#hz~>nDuH)*Ooc$TbAB|po3YUJxULQ>2Q(6OP)n$AR z1yXPY-ojoI-bREzmuH+w{T8i{tRN3=g8(QfyM_Gcv8o!-#2Gm&W1J)+%=M7!G~TJ$@; z*Be@2BGR^*9?@!%Xz%xk_FE*{2fd;7pNl|CK?d&QH)P^h)CUjZeck3QAChb*TIefWIuR literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerUpgradeDowngradeTest$MockKafkaReconciler.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerUpgradeDowngradeTest$MockKafkaReconciler.class new file mode 100644 index 0000000000000000000000000000000000000000..c5fa534e09e517c0165eece8e3ff578d5ae26522 GIT binary patch literal 5640 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 O;VZZU6&xLdoBsem9l&e= literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockInitialStatusKafkaAssemblyOperator.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockInitialStatusKafkaAssemblyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..49a42c08d3c8eef311adf902fa0a604fcd0db704 GIT binary patch literal 5730 zcmeHLTW=dh6h3Q`ZtMh-rWXn=bO@zQxY*pOaH*794Y9ImP?M(OalAXWr`escW@p`m zKZXPnyz?vgC5SV#UfINUc7swBq&(Pr`{vwc&Y5q{AAkMw8vuL<_gyGCpkn3MG>diZ z1?|%sm$g_c9{t2?vd0wFQq}x0i8WKh7c`Dp)C!MkTeN*ZcQw^XyoVz0Y)k*3DY)h| zOy63-`T)K&5a_~;14~w2NJXc%(|W;t?ZBl69LGL%;Aqv`XG$N|y&poV+fqdv40R|L zulFerX^V$kAJx4Eg0`uk9i|Y9R=t!e_@0T>?z;Ds#WGPo%M|Y>yh4lE8We5{mIb1?5L{rOCw88Ym%fcP@%p*5OIL3&EILKel}l1h26 z%SgcdkSYZAsDFS4k`*qigUD91$W{lD9lppSyFvoVVj`p_5!HT|Xq3qgdl;utnK*Y< zGj~;EYV~v)QagFnlS&gD+NLeV{rkkH!l-RAk~w-DIdJ0wc@d>SDqO6PVIKWovZHS* zY=Im;*Ep#bl7036f;uOhJ zrEKWp2#3oF!0FIqbTCKyY4H;oWR8xEk3Pf1p0tQ6Wlze3q?aSclInu9VhH*GY8d)- z&AZ6@#iU|7x&{k@?5fUj;Ss~t$=1V3^=(vP5n0nPmGXKUk1c1T#Kt_wDT{fO@Gvm> zIYy&L{VEj5LLhtG;l9=FaXhEt>8F?t{}{4|m20Za!;Hm)Qh>)hDT=8`4}sGcT@z~< z6)!R+*zQaqTxc+)-k z->Bc~D*4jvR5>OT#l1pPr`5pGY$>L`0(0>C0?fi24qRLHhCPt98rdGnqKDMsNfIGL z*fa5QVA+#C4fh8-`{3n_?(*0H?fv&Hrn&=V#gNeW+?aQJ6?;MH6Sw^ulisYp=4~XV ztz^)M~X6n!3ZjKsR>omdU%c*V;?UY~=v9oRg% zcVt>e*?^N*9E#qxjjavq-PL0i%XWis_L>4+j_sbHH?i$SmES#bV4*2+k7$IZ*A%-z z9N0R;33A|W(JtWo4$P0xKNmhgqbKqz7w%zuFr6$H)(|!^pI!LKfy-k|&V^4LxOGx1 z(S@1=S0*eG7d~^~M#kH+c45{>bm0pJW^L}d@D=tB&BDL{Z>M{N*;8>D%ss&xyD4K0 z1RQt`d#?Z`yqkqf`0wJ=m-yCPE5E|rkIR*xVc~a+S;T*X0mLrh|AM`*z-3s*Cx9z( z6-QpfyAoW7H}PuFH}INCE#ZAC^{sKKrTGa`XW^!mcMIOZE5N(>tDsa&B6tsL!`JwH c9p9|L9k>gt@F9E*RrnM>M=!p?ZzZ_>HxOK_F#rGn literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockWorkingKafkaAssemblyOperator.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest$MockWorkingKafkaAssemblyOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..55a3398ed3cab7d0e198b7bb5e3aea3c17be4c54 GIT binary patch literal 5712 zcmeHLTW=dh6h0f0ZoCa7O)nH$=nx7`xY*pOaH*794T-X8P?IL&alAXWr`escW@p`m zKZXPnyz|0e;FloI%z9-L+u03DQIPUr?`6I{x0!S1oAdi$KmQ5<-@<(trW}Y871T6K zbnQ9q(HfVvL@OTu$ZN986xCAIf+$TiQ-c>YNm$&Bj%u5 z11{QjXtfXA?u&9^+JObDD59cW+ipH*fp*~111`9J=)lpkzsHn5toz?bRJWvx*BDAy zELrVQ9?>R`xIU`;4FqjbLEB6r6zzE-RrnnfnZ z(c|2V<8D-+(m0Nmx6SaY(^|jz9C*^ zx5G%tf`}>vb!l*b29hN%tNoZ(^O#oqF&(_fW4c5_$r2)@CNb4PhiH_^4!anqVVO8< zRWoZeK!s7;WF&X=II{1?1@a~V|8tN2nLq}>8BmQ!%gCC9@hYn=Jg}UN5*zaZr!3}C%A?Ta z=Ln4+_N!DNOM&chhX+=-&+&wYr=M~*{Ns~dtXvaq9%L*YltOL}Jmpkmhr-E=ZUbu= z6~VRe=d*aWB!-Ni}ddTgs{TU>07TgBf_uf$Piupa+swBikdH_mMh0Nn>OP zyCyykEc!B_(O!RN@4uYZ9iBKK{Qt7KRCl1F7*d&l8^i7_V;3lU;4Mp$Rme!i}?%J_hW&1!lZyN$#PV8==*RkP6RnR$dU~WU;?$C%#mnm_9 zIIww!Q{wX^mh!lw@0%(+_LBFuY-E`095jLkO}zQlf^SrQo9t!!T~`zS7e*(X?6*JYxC zfCH~!rxjod?`Gf<{=4|}1->;`?-!W;VbS{u=6CSG%?Q+S_AePdLr^T!yeGjPkwyA5yQ72s|Bc_vG#f6h50amF=dqO>eZ6qLxyU0yfuD+6G9|lnHSz#A!mg6O*b^jE=8`RW4nQVV1b`h37IlQJ(I7c$3j#o6BIva;+6E@m+bw zv)3lNkAOJd#ORMaS^I>$k$j44zV{)JhiuQSixoy^$`g?Wb8U?#^b0_8OOp$gskzw- zqf=$AOk2KE+4I)ICLnp&YH+`4*__dExvN_RR&rMWI0805u-stDazdV?6Bt?9)Af}) z(ZI9d$kA!AsW)rNYK#V3P;8x%QO2Obx{~;oa7FMTqXQ$OON@*awScL{RGj= zbRZf$O=t}a1L5pr;C?df-pW!5n@wzn{<0-qXd{3g8GQ#%ITawch_U+;mv)hz0 z7O-80(&qOtv6F(RkdHFp6qybb6g62<-_S9EHfLYE1oqdJA?Hb->waVKegi%+F2 zT>UVG{CFJ|)b0$TZJwf(#@r5tQ&aPEOBx;5E0ZBJfpkSCY&~{apkzdWmQ99DpDbeK z>ML`1#-i-1303f98zQPw`v=`rRKz6=jEoZDn(!iSMeTWogIEDyPlKzvtigj-uV$|B zK&w9?Ygjhx(rf4nORe9ge$lP3Q3lmfKdW(75!MjCk3B#y^$|3as2Q}`9msZVl5XYQ zkxN^3yxqg-^aQf_Hw81-;!=uQ|KN@GX95RBXyV!8|W`BD*LD=jb~fVQhR4_KRg($3iM-U%DdR@QVpA` z-aHt+un@W`nVxc6!WWQZTy-vVKSs5I${U-^%^bbP=t+jw&BiAwF3)1`ewYHfP?p-6 z7!}H$Eeax*7&S78*!kk$O9&gq){Bi_C`d;4O6iS9|( z#(YMs&P1h*D*b%ANH_t*5oL~sX^;-#-!K`tQ`bBd^z|?e;d+ja&~y6!C>_IB$MJsv zs9`!8yFUf&8G0V?jsSBOUm;<`-Mbit;ad2G&fg!t@DrK8>F;00?;-tWkS^o@P=uma z=nC%g^ePwzXrzrA#Z|Fg)iQV3t|qYE(QE^n*T-N0$G1tF72jBE#(+$}^V8HnAx-<5AI_EeU>PPZHVg?2zrp1hxY-3F{2d wUHTN)bBNPvSZ)Su!z`}zxPFFf1=m%)KaI6wk(TIl`hvcqZ|Ga9QjO~W0MMgw1ONa4 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaUpgradeDowngradeMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaUpgradeDowngradeMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..93bd33a70b6b730a2e8218c6a69b0be880f7354d GIT binary patch literal 8749 zcmeHM-FF+s6~Cj{UP*C?6QDpKuowz99~NJ2DNX~5BL~;(4=meh+SAg}Y9vp*+EI6B z9Xl<&@x)Wl=|8|5Pkn7qdrIH?7w`x0cl7km?5?!7$J&iCr<^t~n$^sm-`uacb7$_q z{{6SF0N`ivsRbnhcf!D}Nfyf5UAjkWT+~7t@ZNo16MYs?DT12oMWJNDu!Dvn>$SXt z+A{6z(ye|splxDgE^HK22&T`aZ zfzMFg3%UL+mCQL0nlZ{tA4r#%+-sf#1!FzWYl1}<>L*qmyv+Np^NJQ0gpPb`~aBhkb)?sIt^l{YiHO<-(6 zw3!7zBye$Pqec*jpbRgQsef$ws88YTv9|4sULVye(FArs5G{}O!uRZIWpjtwZRUDP ze>MuZOS{aT=3*}Kyt$OExx}`^j@0v}?Y3Z{?F(u5sC0L1iI{A^j}Df_MBkoMzCEW{ zoqMnqVm^7VF9K=f)DCS0+2(i1^V_$%+%a%tOJP%69`sqYqSF{ntumw> z;-wxYA1;?RrXeiAa~<=rAaXI`vE!s}X4dAR9rt-!y< z;15mNL?=Fx^Pz;=%TJ_>cf#R(J%@Ox<~V`RAs^)PIdp|ocT(P80NarM=giXDK6)F- znRA2TzGrpM6bZAAQdBEvP4^ucuZWYKL{qIiko%nklhtm$gLn0OBb@oVMXi;(@yQW1 z_M-;HYu)kCo)uLE;w8T$a>xqpE=Rc3D-u(R%2{YtZL9*4E=KB|;w!}!&QbNQqkLyOIaia;F}cG-0>5&; zv-dUiM$}3}E`g^vB46?zTk`jK$dR$SdZ*B@FUZGvXAqs|%kVZKUlw?%8BEEsV9_mc z)^z_D0Ue*|XcE%#!P7~@J6iE41imR?#dJoF5x>6&0*W2`xeAo{4m{(efq!0Y$jQXD z)hKG^8X*@7XeIXT0--luD@T2WLgs(vkijsa9Vph``PhRJWqm+kX|%G`gRSH z)Kf919>0%au{tyB#OIcZR88LX^0U%~g@qwr(d&MDJrGj3!b@e+ z=c`U<)&5ci3$`!ycAn6?8$Du^z|DM*P}4_m&EuS{vU{UAyLLp7k>pE$ll3VU%Gml2 z4H??!>XGTFhq`|-6#P{+KB$%{O^srv+SJ9KMXoZ9Y3&Fn72I@{L&d}4D-iCy@jX>8 zv*0&a%89p+1;14_F11H2XrU$a=h4fa1#JS4>Y;@9q>g4m2P;iS&t3~KG*84&Hx}H* z9X~kjE$|3DGwN}}0-wN>>CGT5KBa{%3;I}~I^?^<3YP^~$tS%6i%F%@+zxKH4b!>67Ff517zx>mfIQKc(946zESo*hC=53v}ACDaRW1;$|l zzpj7rE7x3RZ$OXZ+`geHo&gGZ>0yF=_emFg#|Df~1{eh1g`Z~lcrU?F zQmHj!spbtBpBbbgSkTT&bv=VN)Y1C}w9gG_C8)y<H6pCSS_WZ!B*Iq)1On^uQO4RE zh>-g5P@<+mCtn-UwoZpe&Kc3RPl@)X5$*OV(K<%7Uz`%{PX@FS+(EsU;Fs_Tw$m^L bzlM*2f(s0~z+o49AmDcpLIn5V0Dk`;rd5)% literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaUpgradeDowngradeWithKRaftMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaUpgradeDowngradeWithKRaftMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..980cddbb9a4376c9df14fd7addff5aa3b5e9f133 GIT binary patch literal 8182 zcmeHM-EteZ6+X*aT9KA**|C%OFI~GyBPFqzCTSB#t{YmWTvkhoAt^cOOzVP6h=R4d zV0N*zID4R*MEp2Fxzo8?}0|`e3b4E*fyo?sco7U49EOrzSS=+Hpy$__ZB*u|Rj z;Wi0q^F9xDXi(gxPJ}K+ci4k9h@5s@Mt$_lIeRr~(7>k{mSt6ktur2aQ`Q@B(w3f; z&#z-c)+Zhf+r+_^nJ{X%u?G%t$*$6nM}b4vlQ`CrHtaLk=FJ)v=tmK7*OmB-w)8K? zy)x7!$4*nhfM?<<7m^G}xe;{Aqk=SvAU5q#S30L4xW}B5FK8Uw>08Wa;x>AJeqqyq z6U*o~6BZEK3vw|CcrXJm8*@)Kd<+P8JG5yz+-qZ81jf*62fX1@FMQj|W$WA2YEs9Q z9=6a0JETRe>x?fZIlPz}zL+FOuOiLi>sFJ~(DJ#kJR+QJOCTrRZDWS^bK)vll&fS> zn!0$n5n?-;*XDt+uX7ZBQ$n=>HcoapDAa9wXVYmquptafTdc$mqRJ zotzV_qVENc2d!~aJ%;Fy#bdu5*)QtbB@)aXmwW$x;P)hI#a%)Dro7>3Txbby5lif~ zX)dci{}ozZJjQ_I+s}AVnfUmD8)$&JY)##cG)?_h^<`QPkIMF5Fam#0qkTZ9ppfpG^jQs zhwYmvOcj|#(o`!99F_8bzPUgN9ugNOyxLleWv z>^jJE??$MdpulmUt$kbA7|fuEF$UaQvazZ$2Hq7p#^5H3Z|cQVut>#_(cC$hha0o- z0xY7GG{0Yqk}}2_oB4Dt@=&p<%WX#LH{2oaX0q)hl_$hD3k_)6|9ibnib4&FvKB44 zD8yW@Mi_37mi!J28Cux4nMg6|P6}O`fj14fHd=Q<*#!k5RQG70*mHIvdB$OL@vueW zY@;AFZ_9(D8ROcB-tuWR2(t%WK5E@w zITYb6Z)&XG&%VD#2KVYPvs{&3HPL_M3Gn9#;$-#r{mK=Jy@s1HdK zP*Z>QpaZ~!4yxJ%+1iuEO+YPwrk?C#COpR3qP=3*gpbfn^(b4D95mtgC~M1&#)Ll_ zaC-1`G~rL!rzdsC=N87G%)$_ZEI+qGxCW??p1XJZun1YX0pEWC~k z8SEXSeu|}Jdr8ePW&4?i?K8!eQ59e>fx z%D{im`e${!kFDn;9ot_uYyiK2chHIgvSi>+*W07*`kR(%8SeJQYc#`GT81L5^fAax zJlHqi9Kdj|k72Y8-)R|s38hIHjA;!+27U#r6EmFEFaX%FI5EQoEkhaB`WQ}(@}zN5 z%difWK8BI8Ff0v&0q;V!FY9Y)L%Nnn#>Kd)Wvd^N?SYnUi_@% literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ManualPodCleanerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ManualPodCleanerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..e15bfa487bac2b19ce5fddc0f1035b36bb8e0ecd GIT binary patch literal 8288 zcmeHMZEqVz5T13@_$4U`fdZjWt|^6tP@8uOPD6w1K*~9ZViUwCv_5Z=E%&CqJu9sc z{|F&IAr%R}^HcZ{h}kPH1ZGorzp~Z7&n!t`rna@&+SxMA`p$QoYmGXAIkQjIM5gY3mB6K%=LV9xa+lg6 zD?pJz$?{w&Jlkf1K%rST>$TR_4nCSDZ8JN-S(7W=<#Lt4g~g>^0uwc_!}2hTT>C8Q zLU^J8b7bb>*REiJXLni0usp}-HkI6S4PSU|n>oR!Myc33U`B^oHWf(ZQ|o)W&x{4` zm3!tXADO4zGf)4;k$D!3j>iJS^`zlYX&o36G1;My=15}V0+iJPl$EIEC*u&y$sOMl z(!i;Ev@N)G%dn`c*tVH*r0Dsg>=`kGoMTFU?yb~iLLO$2@;{;T#D1D+XG0Qg-%xTp zjosN3o{a+k2bB7uWNzmhE)O(THl$}zLq70Xskp0rGNKOD(LQ`2CW$v3-{uyVMi64q z!(>?}HK$eQl zDA=XQ6vwuIOO%m`3fL(uB10-V49t=prjeUG6%q4=6rLkMGAfnHyfu|iSSsuX8evMs zH5EXkv_SVgcAhR3oMOh1QLYhMB^_~_i2x1AF#YlD&|x*3az`Uya?S|Yj6!8HRwkm; z$#J^bV?Q4IvHF2X*(#a*_$d>e&hbw-JCmy8z4a9LR$5p(`^CuQ17}85f*E*z8m8eg zfy;}-1pxK;K4W6`v>7^WCR!@Is!D-pQG2%+ZhJ2$ zlkKDwDdZ!LjbvIe&e8_zCj+J#XK5#kOIZ#G0@roh>Rx+bQx#x=T=;RkD^Aq!lKz(# zBoc?s$a7%)?~=4=7Wd8e+nxz&#POT)m+f@3vj|9FS+`RgSnlAyt)gI%2!jQq2d@raRbo|a@_m=e zP+(RVj+(n-q7v2B7y<{naNYmh?-0dXKc*0<2TCutpugH9!pP z#pd8;xCoOt%15IDj!Q6w&qaJU4VUox430iPYJ&IDZ!q)i+_S&JbALqiFW^hxCgU=_B|!vn-D^2syYFS>zMAhxb|Z*%erYJMcN&g?0GyA3h?4>i_@% literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/MetricsAndLoggingUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/MetricsAndLoggingUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..f856dd8cebdb72f99c1608c9d4e035f09fe70c6a GIT binary patch literal 9353 zcmeHNU31$+6uoPl#5RGHK=~>qn=k{;i~Yg_LrP~#CY>pDQl?Hr`?!|Z_BPV4*j;%X zehL4C8JK|=p8Ah?VYq84wZ>MkoX{a@^dedE(b3(j-E%*r7k~fyI{Csz38 z5ZP9sOyI_t(r2>YeAIc)JxgHuj*!CMCGbXl`-nh!S9SRcR0*t2uzOl7U4b{r`kzmv z=0^EL-ld)jLg6zjl%%0n9iIp0Yg(%w4mj;{&u1DzA@hz|pVKX&8p${sr{icO9GnGG?24|%lr}JVk`)SaNkEE*|5$Hhogn+? zm6Q9CjWo}gcqygH_dHP|Gig%RUY|i1s(XR#Am4nuj;dP-ASSYL74Je1=2%xi01GX+ zfEHwglvH+Jg9^O03QO=dft&T#q|X%x#U0lNTWetnbr1y|t`A){N?^UEJmw!I*=cgJ zYzM*+c-ne3O}iZeo36oippqmB8+!+8O2fv3m@e4HgShoLl2!!#fgB1Wa1{4kZ)==> zqtVMPSK#eb;6qY+k*BYR=zn)?T=f=ZBi1hG%a5O+naP5gS}qm1MV5Yk zjpuuj2&KFCDc!FYwY#-%d`#6JbCzI`y9Bj8U*xH$F8#&l$2AjxWE5R0erv#rt9rtDQ H^5s7=Gm@QS7Eo2rU%KhY|`n2W&nHl%|w1nU-d78m3N@f!kW%*xO24jdtZp zdf~!_0~c=m5@uiq?))f*XJxxqh-|qXlQNwgZ0)YzefIs*?z_)lfB*Ie5q(Zy*i^8n zp(3}cxzg1KtjnrGR+Wx~|43A2$Rnm@RCT>rX&wy+m{QztdWY5RzQ`8G99QiC=E`j; zZJM#@yJ-V&9p2+g#*xb{D)=pn7V6v02i(}=zKbdY7ghQ$8V(FxwCc1ZS56?c<1_7c91To<5JK%VCVW*fL8us2D^IpU zPfy{8GSUvF?z1L>am{gAV3uuiXJF{_FX;<6l0HYaPGJ6jC*04E33ND>6jSw5mq+?w z0>o3f-ro1`En%vDkx@G@6elKsUYL{6QN`a&mg z>HjqwPW4K~@tHVd!bK;@u?a-_*U@hx*~QkBbrnc&VH?xW-cr8eb z$WeECwS%DtIszm~@pLRHl`NM)WM5JLSEe#CR~>W>7Sy`67mPj)sqy(?Ab2!Vh9)OeT6Z0 zaWj=vcLv!9GHf#lc(mae;z`-`zD3(p4myZ6gdGMBi8!0CqCZS*n?3>YW_)GSH865L z(`~wL(b6y)J$ajM92xCpHw@VlN+Hj8@F5{h=I^4|yCapR6@ms}F2VlMEX|=+LffW! z{1?%?ino>-{hdnRE-(B_=l?{nKri5bE_pLc%V;n3r07MufF3+bFG1?%zSJc=kE6YE z9Ify$6YVm+HUg~xXkjMW>-5G5w4tS0XmKXmn@@@MC=<=0r4hP~xAgl=v=v$% zfi~XKA2QM2qAMfN#_RTDCfeKd&Iq*ey8V=i_U=>a_Hzc>ER~T}1zMx`@Fc3>w~W3; iRr&yVdk zeJVQD_0|q^jRT`kxZviQ0~h8Owj3zbrH9yY2PXEhOG-&K2A7=4kFSM7f&MP@h%1AT z`_ynLNT_7XXMui9O5>YdMm*;FR3Rv&?t9u{WRAFNef)T;KQo=@N#@i&UMgtvE4A>{uhi{Va{n6!668 z{o6uIJ;Q{z%}w_Z-ieWf60;Yw()gDBaAUN#VfbM1N`qf08HE`b6qrNOMihn^9`!a= zf{TvM5V{(KK6kkxI>H@;V!Hb%v4SiBE5+G2iIl*no9slaM2j9An)+qN2|Sn6&VY9h_NH5xFDMK1FaDv~lhgOVeL z&_sc}(pi?P|D||M#71POJG|V%wg)a1pLJFg@ScZ(eL*H$-$6ZF6IyfqBDP6ttMyw43O_R71Md-=d1! z@nEuGx?DT(u5oVp2ka~Ej9efHVk-~asnCjdNxH4AbC8cMn)&6F*wnUa0j&apG!rWS8t_WT3v#Ree z3-?7TW5ED{v3L@nhTEmp`VMn7ff31+h@{IDfkCInbQ#~(_;yHjBpHD#=3T{Ep#f7( z>auF+nfvk#$_-U`$n^|?ohfI7NxfHg4kxIgPT_Xhsn*dV>gr9Z-3G1utfmoKu^1+X z^wwG`q`H=!mPJpc*ySFRWyhg)=Bx7b27!S&;V}!|A~1S5+q{%Q4#OxJ`}KKfO!9Y` zXS*V3a-V80Lc1viP9CU-c79~N!EBGYK9wkhR=uFx%%0?;*m8a`b$+qs{KFTi^CxXj zFlC2A+kvsn)`-dWn&{MaObl<)gtur^EuLeJX)BK8vJ>J2{68z_aTe3_Z}`NWVz8 zv2Tm5_-t>w8GAtp(+2R+?B*P4nNa6Pk_G{Dlb)<$9t!Yw0Y+e)z{FHHRbt4EQ3v~m zl_;n)xo*f30^^QwslP!bH_xq?1G>SHu-S3Wi#|fO=aMTK)ofKhZ+dtoaA(R%*(M%y zEM@2Dk}FR;3z4CbaP+mcDAYV)OW`h894)CD5+fdlhUA@e&6J1XI)R%flQ_uXAelvd zKV95$st~x|%d3Yv+&|%SgeuO4;9f$ddCW(4 zgTU1;=r$+bKK5h9nH9okG>p*-NvKkF5wj~WEmhDo#dPXMjKuI%Oahu*L~kC){h81C zTFe_RAlFFXa=PkUCE678nDa6T+*wG_p@X~Bk8s??Qrl8mOxGN0wG@U-&iRIJQx<$d zVD*es9d%B#x0@^d3e&5zo>_38z`gYCDd;$wkXN=L(C!6PJ7lci$8w|JlI zMix}DB6Mte7R;e?owd<|d4x?3N|vJqPYAq$A+%r#F_VZ}@B?~3?td*_ZTydr-LdHjD9-+YNu zLwL>q0fisOFZ~8%f5md|;J+CKIQm`uFU0qGn1J{2X#n1b%ZPTRC3O|ADVmuzLA%zC zmRszBM&JXufoO?_A08m(PDFBgAOYHa6D>-RCSO9oXFX5{;3K$ofO@+p>dCrp^hEs_ zJ~_sRC!_t;1C78GOdt60PM<#fxd+l9e2RY0!DmpyE5PUYGucAmF5JWXd5X_B;1Xue e*YE%yLIq~vG0ehuumFqjJvgue&rl`@cmD-DDIPrl literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/OperatorMetricsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/OperatorMetricsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..bc2ac11491534b8b8e470934c1a01ea462b2cf66 GIT binary patch literal 9195 zcmeHMOLH4V5bjZI>k&bWLm*Gsgb?HeBp?Y1aUM8+1Xr!%#ByvBo}<;so@BMF+MRXT zRB_?Ll`Fp_RUrk%B?tZnH+}%ciK1s$kBv0au2mu?DPN@BnVxUDduF=7>HYnmN525T z6(}bmL158!jDldUDBPzTw7~6xD;!??mKW?gbEvSLf?;~DU{1S%x-P4g&8@;>L!`)X zjNvXLOcF*2jQdz7wblxY<@?MK1V%TQBQ^;n^%eOrMPTeQx45`UU{7vxg}}&+U13Ss zOJHAn^qk|^P6}Qk<3HW89Ol~Q2CHa>U8{4G3T|6k-LcCitGSo7OnP~pX%%Le)Ip&- zH6GA4rk&t+zF|_nX;QvnQoEsP(h03%Ggq^0q1C7`)-{2cY_pCwgfY=+dFiygR5ic7 z83H|dt!_I)!=Y7LM(17B3~I?~%S>w;`r=F0xZ&6}hPx|<`Tw18V}HcZVONq5)k}U< zh=I5(7sS5KkT6ug*v?wiQam#eKd^d&n^79QP=e3Qy}c%y+Z4>Ita7og@Vh2#jcQ`6 z&N68~i~G{9OvByDD=d7&vAueP3Xrl*p35pXX^pvf$z_$ME1I|Qh)}!D6xviEE;@?}^)1Dx zE#HU;b%)0tWO-nnV^PB~*0(gf>fh}po6+WNThah-$!yNC*kOrGIv@zRH)($jGmwFO zSxCY-fde_cUA!n^QN&uClEsaEI`W2_UaicWWx0q1CUo1N<_dMVd~Y<4h;{A~xUCPl zC?l&aWuJEtII`qfg4fuBwZUDEb5F~%gI`R+srTwFelnGULj)H3*Ii`Ur8T0zpRfi* zC8r^f(VOH3=Qu{-)95*x1EQwb?|O!T{IKeoOAJ@j;L_R0azWKe#-avKn$m;NfXkDD z;{=}c*TJtZJqPrHz)68dwrrP7ey&y*TP0><4a;@{tNoqYX^y{B$8_l=T$fV>X8ZfZ zFS(&`)S7f_v_egfRi09b!0|4{ZBKN_j8`c)@ldtwBXC9zo9}4uX?9O(rAoP8*xi~< zNYPsqBXdi)6ch+N>hHs#ZW-ys^iJd+0!KskOP6BIdeAbDz#-W^iyKR@85^UD+v-cf zSwdExU(}&7kqQ$y z-4EUm^DWwqe5T~@fG$HkVkq$#or zhR+jvCsD`7?1E)6XU3GDtK1|k5-1IsDxO3xjGyH2HwjAw?hPBhxV6+c_~^IxOA_u7 zSReLe;TT!O+|^tf0tb6_CE+syX9w7@Nw|kBI|w65_yRe9M?_4*SGeXr=}N*k7{xpJ z7cOs+yDrARWxSNQa2#+U@KY^13PxcJpAO)25>oh^#16dv`#z-;`+Y#X!p|cEuAV+WP~d{jEg%AO_lp-MW!u zO0;t^&=mWhP$k;=0nvU`qJ0DxLZ`bOr!Fe2`%{510+(PagwQ_GmlX(qDG(BH6|RL4 z+B$sFjgUB?KmfSjLx&j!!XX7h0_J+?ph8fs@*bGSSeAerP{jYk7~5{5O}8+P-^Tya ZNEVjye+A<)#r`a2idDD^pTn2%^}kKJ=y(7C literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/PartialRollingUpdateMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/PartialRollingUpdateMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6871bbe135019b61711ed80fb16f617984dbfb11 GIT binary patch literal 8789 zcmeHMZF3t%67Dg!S5i!p3vfVq$tE0N=ML-c;5dTAi(}+qvW|mgJ9oJk7_CO~#;aZ3 z?yRuypWOWdKJk^}t_rFsKJh>J8x+sXuB5fR(ymP?LY2R0Rx>@%^z?L3_jG^z{r|os zqPOT1gQgh$B@FDU6rrr%=RIC^{Awrzr}J;8>UTxJr5{vnHwvW)h8;W%MW^8&RPXRW zI^5m#UDxs2+ubIYV%@j*wt#2QG^6tx)a72gy3x2VY{_WW+PHbMw#leuS$?}Mf+a?C zE7o>>tG4;k?dA0vqYKt>S{>YYZO}Zr;(MXwp4{PXBuaFKQKfV6O2QoAc50jTwT;_# zMo(C`cx#XEh#+))uWI@JUepD|Oiu)IpOIlp8Y1ungtnslFk0$h*Q%e<8B0k(eZPu~b3;kL=k#qbFnL zmJ=CnBvJ;gG1!X{)1dEs*KgK^#NK59DGM<7w54Q%6S^}pr1%JYmGaiEFq^`5l{ii8caOJ)dByP;6LnhbtJ7k#%V9@fovxToUxcRT zOS8kJy=zKfiv2FsCXES&T~rFYs90S*-U>0FPN(Y!(!|sjZv>A0hG}z8E!z-gf1?i< zWg^4^e4bJ|r&5}z$)_6f@N0;6R0Z_-p{DbLcHS0FNwOV|c5RV#+&lsPjD$bp>}vZ` zc+IfKk7#L8^lAZKzO~F(;91#z=bM!$EKk@n}?>Lp}(SbLfgoXf&eE0oGE@p;3!x z1ll>X#>L$^({2dpqgZycY(9M|MJ4y3>3*UE)+U}KnsGFh^08EO986le%Pl;0^AF*H zuUquAVlAn0JdciEDCvzT^I!8?eh!(IiK10cOtFuP@W?flMqL9@5JX+P$ZGqx=<0Xi zw2?|~oU`D@Z$}*@ZMKvSsT7XVww*+$lFn(l z>x7K%SwB@mOr>2K`i^Jx%x2_Crz6(9o)bD?YFXtUbXEmCoUsPJV5vlZVC>TZ37El@ z98D=|Ko6Skn1)ew`674vIGP9VK9FPN%7Gv^Y4vp+NBAd3Ul%yS{*0Ux{JDG&HWlly zx&|3tnz#BsW+_gnrrgMqvb@T`MT7>uiEL|@_dxbHQFjFkVZFuJe+vjJ*7pK8a-Yc@ zsh&E*LXHqAZLQ(44xEX#JUO{#Mr)H#PGyRs@=MS+%w|j&Z^)tLb7(b z$B~Y1IIbfPmKMh6yi4>RqdWQB9q*cA^jM^;9>~QHuW&}!GJMfd?{u_hVW&jzGg{5( zvq<2;=&D5Muqp6vwH;S%w3332d!R}-qN(GbmAJg49q6bLXfvMGb`Hy2XY^h^XUg6t z+Zv;Hiu1MV2XztjM6iOIjni^$)R^ESbqQen&hDY+BLva_gWbJ8c}Yx2NDnQDm99^o zIGmMyt?(45$C|DROyS6M6omx$w!0&0%zTQms#y zV$?-GOza@qndzxYok4%Yr`9xs{sAr1pQDd;gFb>S=^^M~s%&QvM-^<;Dh;w#B~jN8 z4FY?^cY#4|M$b;VCJb^IJ=GV$Xm!k>JrwDbd1bu(4eFrCwgnAWPb-5^&zsRUW6;0A z=BW7?1pPUC*k2nIfpS=8iwzmVTX(_`rOquRzCyZ8sLi2FJ4Y93hGy|~kqj!Kw~X&8 zs^I?|J&NxNouzZSJx{;V?FD*Fw~x~kXs77cn5Wt&=_%bljk)UoGxV%(pQGo|o(1+L zGVyyE|6arD3~lBAbmgxXe)BoK^p&Pv!0)UcnW3xro{OpIxAZ&wE7L1Ln4-mms)|;j zUDbQ(qy0Vu&C+O78sm?LFka2Xcr63t;{gVv*Xhq#^9{_M28Y)M94#eiYJW<;@&2x7 zptUph$LQ@tyuFh`V*|8zGtfTGKqGpNZh$)_p~L*FWFUN&iBO}}6vFg?hnpD)Ut}P_ zW77wz6T6k#kvff7K2`?WH<@U+Pl)ziCfdfy&{&pk!uy{P?WIiKK0F~>Efa0?glLTn zv@+EXX=%0vZ5=&R_K8MQ=RQR{`u8sN(3-emuF*aEJN=VBrUo^sMZ0vLT=J+(0m&Z# D4ZylJ literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/PvcReconcilerTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/PvcReconcilerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c5552083a33747a62e5f810fb86dd2c3fbd72b28 GIT binary patch literal 9342 zcmeHNZEqVz5S}$@{6hLdN?J$@94(ZDf=!`?((+Qrbx?(qR5>>lNT}MJH_0}4x7OZX zl=PP%J|giOkU)a(`~yDojURzJdv~tS@g{e*q83&D5Zik<`^?>Rptoa z;VzSH1S!G`cl)rTW>T8Ot<>?ZPev&-Xw6mA^bp5U#(F$ zWF;sQnABGJ0fDJT>z>_iu0GHpC741ueQTR;Y*U1@+bgT}Z<-Gpt-5U|GA9X4czc0E z;OuJCzVm&3q1AjaAV}au%f_dpo2=pD1ECGG%PY$VN>6^leXhPD@Y3A;8lpEuhZW&0 zfs_5GX-X+%30^1Dx9<6p1;X879m^43m%CJP;agoP)?MZWH>^szy~V5!b6hG>s7sw~ zG{w5WMKy6iwda6p;(-2zo&zpe9l-+27s~Rea<(jmm~6L;Yo5kL7gzO)Rkf+rr_&JI z$-SDktP-mTAvSB+A=R zaW~7N=P3Bh7UKm`)ZA6f@7(8V%ivT?35!~4ugfasHJv4qbf8Pf@Wz`KzT!V zA(n5fJy=y`=wP9<;#xd6Z}Gqi{SMpUJ{E}$yo0}K=&H1I)mp-$ukWCgMSWdWV&D{H zrEEv_JHw`<6zUi3Or?F%g^;@)y&6L`E4_3%&FsTw;`K$3&;m`fGBigKqveoPDYly> z-r|{vcbN=OiXlG}Zs=*s#JvnF4uFkmg2&XBKyD-%RSaq5T)g`8)`k>bL}PUDTSEjB z*~SLiqWz}1j>m%l31pNhmeI%;UEM0u%uqUPC1LA!*u_N64EEl%dstKggCi?tT>2iS z;r>%6PF-$d-1urq^HlA@;bg3o7ef_FX1vv#-=JN+nGMfQTV#xcj5(PKa7jkU0?qQ1 zV5k0`Y4_D}Y!3E;*u~j#jyw;HLmZQSi8{)F$*D5Ks{t0CLHRnB^yd|aYAiz?4qr-jyJUp1d>A38v1%X|(r0A7ko)oT(tJb)C z^HjYl0+)0!B|#JgRCBjW{f?${>Fh4S2Lx^(9$(R!VkRjfa4nxo-I+$FMqS>q`6DEk z^ZVy53*T%lfs6ZPm*PfU`k4$;TBiurpj4D^$r53e=Z}zU5;&jIaG!EbKo^C?`-)0D zaGp-xjwZ2AlDP@eZRRq4B#Vd1PskU6%OEChM{T@CJV_^T zW?;K+<3mM9w|ErZ>K_{*13!lD3Go;jkELgfMi$`~PD-z55f<=-em^rV!tH@```Bij zn)t1a&Da3m20Z@8{~b66v-mfOqauz9P{MH~HGUb#$5Z1II6eihpzJJ6N8iVB?rC@x zKWFgjRYWEDUHKi(d^i2tuQ2;(g!=}5YAsshoA@~uOTk-U;fSC;7f|~}{H>+l!S5bg z0e{D6?;6l<8PVR$fi`DAduT*^KL^@n1KN*9v=2u_``d_C9Sx1l7}07YqWxe*`)EY8 zUyNv1MnwD9i1zVlXoWc=+9xBTZ5q+8j)?ZN0S(|9e2N)0oK2q%M{MCA1402l#|$jM R4QT32gbDnAqpzV3jmMBNxW@nh literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtilsTest$MockJmxCluster.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtilsTest$MockJmxCluster.class new file mode 100644 index 0000000000000000000000000000000000000000..01f83ef5f3745959b57dcd0c1b3528243b79bae8 GIT binary patch literal 5478 zcmeHLUvC>l5T7+^Y+uu+4HOE6b{h&f64)<1AW|Yh6qF!4L5Z7+7sPsR6K{IAd)nP| z9S|RaPlE&!yz`+Dv;HGH&JkZ+BUH$P&$oNOot>H8ncwdG@#inU0l;VQK@kcBzO{ze zoUpET!aA%bbx(xz1Dx>bTLjnt% zh$zB!0?Q*oTgGTpf*a)aPfwH)R!1EXQm*4fM$AdAXkv6L60!Z12IXd3&`|J*83ZMa zKV!#&u1Z}U7+W10TOAlX>KGckN<%FyRoc;*Io_rYWr}Ws=8VfkcUHYSt6tUWC zrK2`QdPKfan5a^YG)eo^R#~Ic(o}`wNGc?TBm9EzEREbax=I^Js{RY2C{vzE`hv$q z2IT|fVwDve<2vO6?LAk*?298|gyLd~m1n_Uq%sPt#2!IF$AkzSF)Gd_$PJaPERK=)ZX7Ot&B+!d9+Mj0E#A0_-|q!Ti|7D0KU z^FJ`rm3K2EWlsBLPTu`mhxr2S?_y|5M(8jj8J^JRWc7ZkoQ%a*my4u#{=Ybr_#43> zGW`kPxMthv=eDvLVe|2%u#FEXCiagu=np?$K740ZZ1$9qV+-u!r3(2VBb!_{$-QJ7 zWo+fq!BV+Pujp9`GiLR(LRwl!f~gl&WmYM97$)~B=MVeo9Ghbw|1Tj2Y2u3n7Rx77 z0(e+pnGb9auZKp4Q_hb81hBjWMYu)aPNhC7+Vn$Z-4}J1>v-_pP2-j@P0s=ZR_dCw z=y1RagU$ulmX^SG^?$ZZh2^KE%G#*xMBv_l0(MkKT8RpN?rSi;$`a}m)Q6r}FTtAx zwlA(h`4ZG{z{LxJq7QUxxcCyQY6R|1M5f>Dy~+|gc1QWEg2d9Ca@!JXb%wW3(T*L3 zC;c9c30s5*1or0aI|4T+i+rmDO2eI2ghvFfkL^&@sUfY!i%b*GxahsoE}F5etpf^J z3dCw8u0C9YMSLsZdl5?bEMx0q{93^O;8zH~Sy}oSZvNiG+{Wi3VgN_2;B%?>9>A;c z8ny`b-obIN4^VI5|4^DA)0cMlyfm_zA?+Hxg<}eE58lRqfOqg0;2Z?*qy8m$58EZw P^C7&8&-bxafct*|eL_$f literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtilsTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtilsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..fb5bbfceaa9c61ac66161978c5e5409512dc0aa6 GIT binary patch literal 8745 zcmeHNdvhB#5Z`kjc1-%F4^m36r4OfVY#ybQwggh=(x%u>vE8)%L+5-}VzqZCkEBao z7-skc%yZf=|M*x^pIeDDm}bU|RA=Y)e}GwAx+mu2%Wuub+PffKQ>6 zhLizIf;$CCge*L=*X#mi1tB^0zM%!yCft^c7aTVblJJcVTL|Jc+^2;qahUH=m+*U% zx}uISY1nDN{t(Nx{nf%!;}LPB0Xr*mWy^qrrH!E)F66IXH(*bZ`9j*hT(;eSWMBfj zyr(mdyv~du4ktK$LQSvTohw=yn8c=UdqlKthZwML>3+qkKCD^`R@JH$agqI{r6)e& zRkA`j@g0Io>@LmSv`RGtGNqE;Ag;i^L)L@ET79u{>*1a9gNHS%ShebkpcbyFCf%Su zm9qxy$W1Tf7K*G%(r^@)+}MQ0IpZ04%Q*1kJ)aZ7+%?iP9p<&EYfH*}v&~tr0LnxX_*o+NvDlc z?!`p4=9OCWiq-s!tq}1^y*A_0#HlNGgHz|K>Daznwn5DGjlQasU2(_Q(KaO=tCZFV zmz@}h{|O!AtD{&O4@r0^1N51rmWxd|9=^6w^senCSJJ7!4dpz z2d?a;&YNWn?rH?7OxstHBm(Y%%udw8P(6aDSVaAic?4oV@y&p`O|{vfFw`rVD7+^n z!mWnUf5iNVC>}$x#8S4~nk6y3VhGm^^lo?{3DZzVQQ9N2#hPdpxrif;fv8kM8KXIX zskq2a40OH*3vEl+75|(X$0XgmtQqg1ZFYu6c!V{ZQyVk%ah;ODm((Lx$06-7|KHkO zsT)D}WU36G%X*8mCn8sLv3a9905*HcM8`feYkvFPiyz+sEREuO-AWH*$z4Va6R6;& z3U6v7xQXL?UNJ-I7clkZ3v09=A)#0A2Wc?o65D@CR+6HORm<^@{pc7Q!;b%#B(vQLj0)Y8vZHR&)b$e?xMZY$8;|{L zr(@w2c{?48dEt-kOX8+u2AImi=c!QPxQTg#s-2ao5cpUW)m_499+u1MNU1_6>B#HT z%NcmjfcdS@LHG)Tv$l332At9`VRfjGJzQK+G?w4XCky0UAX^%iFK$UZ2z`E-dK28- z=9Gh=hZX5jJ;CJ>HIP%rOW6xmf zIkr-80zVbHTIn79oQ$a8B$(Jjr6NKKPUCMy^)7x7qn**9Sz5Gn3DHVgwDU30avI)h zTC@u>&@O7wnp(6O$ZsOI6v{BtLP3M}gBI=mglIo$(LP9s_DqZRVM4UuwP=?UqW!5w z`zRTju|tb?C5DA)bZVT_qJ5kYt)NA_nh@=Z25kp?f;O6hYxoZ!XsdYcXYucI^gUl- PdlEgx92CKVTd?>ySX8zV literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconnectingWatcherMockTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ReconnectingWatcherMockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..78efadafa86b54e155fac4fea2b508c54ca9ec6c GIT binary patch literal 8925 zcmeHMTXPge6h0k7_L6Wh0xBpDcnc`I3aH4{WwXS{B*7$v;>qfr?Q9xmy4Sfx@E=&^ z|FP66efPzGWO2G@FB9lwdSxM&=4E$!=JeO+)_pGh=ik5n4gl9+xd3AX?nR+jjad{| zAJ9!&<+2*ZArF4wRoP)7jb&K%{3ME5ICw#$hy_jmadnw_QV8b7T(s}e*xO*?g7hA) zB3uE+2^`j#J{9fiQu6`Q5twk7=H?p91d6UJ+iezJAy8VZEi_i{)anfa)9zr-3UVUa zNN}JoMHEvJuTei?MVKTo6+AvCXuzTl^%#M2AL4uw4&sdL=krKjckiyOHkQ9tbVYat zXCOsaGPOYFGa?)zFgf^+^Cvu?GlBe1ySI}j3k5@+)%82%uNa`z>OD?#l?K%F1^lpo zlZEjk0tI(XJ>Z*(t6cE-I)QyNXVwUe*JX4dWBvmm;%e;PK=oBQ3oxS#Y9)BC|9W{Rx87;kn+icjtpZ5r>@gx$h}LBM}=Cp$(){` z|D3Wbum$EGCAZL$cHTTX8Mgm_BzglRG57OC-$labFwA_=@wvxiCrU5~;K_rhZEj1z~T+r!pv``DW%V-Fl2$Ma#Til3~s4Hx{4}z-n>ke{`>T9#nG-A$0G3O zla%2kyfXzS;9UYoXP#~9sOHBZ7t4ahB*1>ks)|FZyCOa6uXW>6_vLuJ!6O3q-51oV z!mdoI*~^y+oLI(Kh#O;GZ1RXBTQ$|8(0v!=V$$uW)>n#fju6kHMbn?M?M6$_N!y&) zmd?u0tcYw^9P&uCgvAaU?dIdyxO02CIU3*-0^eB}pf_VQ`bQp8e^Hq>_7=M?p+?Bk zrv!eqU@7&95#{RJrJ-eXZLPVK)5%nIT}HnkAS@Wwx*H9j$W4srzit(y68kknRDf#) zj+n{`)iGA54J!6aQaoY7Z~oa-GA)$j8ulf@kXyhyf7+{Cu+gL&LW8ViuWrfa&coCq z!_XR1xt!f%&Qw?rgbOPd5x^p$j~U&^oHA z5y2_I8)m%bFT!!y4-@!w911u>P<$SPGLEM*;{!N8lo=n!@pNYVD$Y0x$8c^LUW3;) z#v4eZR=|=8-o)RxaC8w@C5q}dIC+2C`58|Cp=sa4-wFL?KfI66Qz;dE05do$!5Kst zgR@<#5Ak22oz*h*&^|JtRW;g}#;9z;s2VXoHeg)tV-PsM1>-^&W2;mb4H!2JQW5xU z3)<&Kv`YrGStHtIMB4{f5M>;-ceSsr>qgug2HbfgZfz*sn+DvUjJUJUjr*4YcMKXR X?-<;IZ}9&hdev2!gL$|O3$XMA1w&D8 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetControllerIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/StrimziPodSetControllerIT.class new file mode 100644 index 0000000000000000000000000000000000000000..16b1206b2c2ad4ce688f7ae2df2755d224112265 GIT binary patch literal 8509 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 literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TestingConnector.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TestingConnector.class new file mode 100644 index 0000000000000000000000000000000000000000..da33fadd4ba6d7026ad770e3e6c3af2a31297bdc GIT binary patch literal 8049 zcmeHMOLH4V5biZj^oSiN&I9rQHX(qWfCM245F3Nz*omCAWGuxbyu^Anmd9D`irJM( z!igIP4qW&JRB_`>6;#132Z}2G0Y8P}n_05`m5DKp z24^O7M!AqL7fX{1C5?uSHcAl+IaMiyfjr-I{6*7luq5pPYuV&>#&t5_3yd^enk-%` zcYq~nFZjOc-O6kb9#n&sOS!q}@?0@V`+=u$GCr@dOwH41pjax*wEEA2WVk7~4EDc6Y`h|U)bqdofbEz!Db+iev>q6^bgg@wy7Meh(5aJs0# zoHVS-O_lSLbJIzB2{dfsR>m=FOryQ|>vQFKxIb6Q74iUi1w5xw%hcgoE~g6!LsHin zIKAK$1D9(bYm}7Am*6ywv{`sj3aQrtZy=ysB8r@c4Z&LlDM=X{O3jo~E3dQ~ga-2= z1+*OEX`DOUpU~);kk)GIFYbjS7e zn(13Bx(`ftyN(qQ#>9Hd$n}EViD1Bka(9S2uP4PMxJwQMtD_UDBx_NpFMpRA|TjqynUb zbli)nDXcLec!ljC)|^@I#b~i2uZ#5&3-^f?$~iv6_gTaQ#9Z)?%A;N2Hk0J^ZHv|A zw@idl51A`tt`38H{x*XLX@5T1@$vCuoA(u!baR5D7ZZW=8EJ>C|JVtl>J* zXTX?i?=coj(|Ni$KxYXRqC+E_>qfFdFl2Ct>58V^i&6h*_1I<)*vYu=Vk3#QZl6>k8Adi^b=12?W=9v3bWNil zV@&P;ow*T^RpvLdrA9}CHLy9fM^Q)o;6YYG6hxBdHTpY-S9UUzV@2E++lfXAcu=PB zt=xyY>%+QlHc8ht`s+z_-~Bc?WLjB#p0ZJ<)#$*;XeeqF6Y2T*X72bILl#ZOCXhlA zmshuTiL4;U%b*(VQR=wPGOt3R)JSgBkcSMYaiR4*E_aET+rb1n_RH!!s^XSHMfn}} z;JAwsF0*C4PoQk$;n1Pc!46ANHP0Xj;% zXg8jYP=b=+rtsWHY0v{9dJyzbh~5W!I7A-+eJDg92K`)!J_7n!h&~Sbg%JHB=o2CO zB~RlKUH- zzd8K&FZAvoN_HIoyVaXrxO^n|KuOUAy$=exizdqJJTx|F@z3AJW2l|6)Y{Qbhmn*86L; zNFS|x<3^-6+CIJ+f%ScaH#GW$K3zxsEE2Wtp(xZJB2hob-1kMIZLQ-^k!WT5qARqY wBhgG+>I&^%1X@2?h>bp~5JO9}jGv7CDt;WR`z~m?a#zVFhw3EAr!~6$ANIMkegFUf literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TolerationsIT.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/TolerationsIT.class new file mode 100644 index 0000000000000000000000000000000000000000..7553792a688fc9333b5d35442bffe8c7eb33618d GIT binary patch literal 5028 zcmeHL-EJF26h7l7vAs=6NhyEjXPOppBw|D00uew;O^~d*ASG@pF30O}JoW6(YG&3- z5KqHPAb|w;ya%s=IJ4_`x5=X2NJ+WLjdwl!&3Arw_B&_huYZ2~0|35;&+1Sk&@-h1(j8yM#&VqvFk^Tylqa2mk`5zOXnKP>ED^Y!ut*jj zb$%E==e{LSpU)?7xBoaE@@`7E&y9+;&vytkLl$roF`pAy?`I4L=t+2lfLmR(U|DDn znT&Y@ZW8dOY&>OK!ftI7SounX!hS>GMr-qsz*1L@cpYvNSj))vv{t$S>%?PELygAe zjE|_Vf=I|D1R7~IlsqtBQm;9fa600?WEw%}*_0h|x*=41o}Kn-cG~mkvVqg=Y|xS7 zhK9=0fLVV+EpqbX2$PcM#Qe8i{@c#g_Qfoueu^Mc+ESc4WNkUiq)KHp;~tmow}pTlZa^D`>h z-yLI3yb|*RtOg}9CF{cBurOMFTn5kTbO~<;d=v{ga;xZEDamK5FG^j_C`-6@wPq(3 z2%jlEm5Pm?qA-{OPPcxT<>Oc$@Uq0@kktaNv^4r`$kDjOO0RS^-ma1k?mDT$kjkFB zMXp1RjYL-p9+t&@7GBNCO2Ow+S`bNo@m!SdTQMG&QZC+n1@t~gLGy(aY5(_MOMS+) zVAvUY&F+Nz(@2T3{CcnkudTu=+{LE1b-tr@P3l@7)%E*0!1p$A?5_1yK9h%YYxBV+ zI}wJ!DW(u!-aSfxVImNRs_5k&V&)@$*yZ2)2^PtYCjX&od&!|;Fk*Rb2g{s zg|kZQv$Cn=NYh?xKvR7jIzYZ>r!%EO6D8Hp1l5>*pL{cNNZvc;6k~0IR(bzSg0G=QL+O`#OC3 z!s$&aP00O37=x!U1Kf`oxDR;7f~Q9{Sb}9(!Mk;+Ljy;f$*70pI0tUw?<+X+Iid+( zz29N&$Msi#g*$&HxYzM_C3&(8Z{YoEih?)cE&NB|ZDgpyy*cU~yq;%!w}7ox$oBpV xY_yQ=egWH7A=?9ZnDgy}99s?V(?~xoVB0QWt3eCr)L;{~@!G&_eGF~*Z^{gIbNk4Z-fS$4fJP)v?~aDsq!H@&^`eIb?^16^G@0h2Ajm^5zC z`3TE%{7!jo^C5GUL50=oO1;^r*6Idbv`6zz?B;hW2A!=5KTwXZHXJWxlTgx|Q)Fe$AR0P3*JA+{gQ<9YltF~@zb?ilpK%Cb%WbhvC!IPR-3t= zBS8e=cAO5gu5(cu=)N@6eQ6-w=!c>1uUl=w0?QZ5>N?8ZwiGbgZV$>%V&Zg5`gBX0 z)zY)=5cA2qJt38arCZLX<>hv$y=4{P;wF7Wj;gr8}VmzBt#hI z<6+;D7B2gtJdaLEE9p?O#0R74kT@x}n?=5kq$HFsTN|Wx&9H~7o~gj$vcpfT$z-3q ztm?WV^wkhPgZaUtoYbpKJrZ)KA@FVP(It8f6`7fXbs=4FIcLK;uZG=CCR^Hv=>n2)9dBdc z(*{3|t8E?_^qqae6)jYNZYyZ*$)%5rUBm0m8XL6*<}qyobeI#pvzq7dZcBz>7Gg!Q zO~O=Hv{={HVJ>->E#YeoIOMA8vPx7ef*2FFrmsxWd&c-rc}hyz=lV1k86U^c@()eV zslz}VnFv@<9fq#_o;r-U)SI{%|0#!IP~~{WZ_)7rl<{W`S~%K#MFsIp>jjvj_*itf z$Jz@aYl;2w=+HE`U};5&M#NbJUXEh0<_N1`Xm6%?9lMFx0X6xGjaaZ^&-2C5ccT`< z{aG6!C0s(G$veKILJ151OBTeOy^5Z}I@_w;Nutf!ONiV%OjbrOqn1MKKCvR+bMByX zv>Up4p;HmHAv}aVk=MbBN&48J#cZ|b@z4-8))>@f(490<5AY0*(^*5yrWs`+i#RTW zuBHS!QKtgU9(zyf5)V+ z(Z<0Enlz7QZxnakr2qf` literal 0 HcmV?d00001 diff --git a/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperVersionChangeCreatorTest.class b/cluster-operator/bin/src/test/java/io/strimzi/operator/cluster/operator/assembly/ZooKeeperVersionChangeCreatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..5b1e6fe9beae03bbe5ffba72691496285c9ee51b GIT binary patch literal 11501 zcmeI1&669&6~JGw7fUM^*0I5WO<-)m?1oq}0TMvAVUe}Tvf5o|wY%mcU`C_f)p%#7 zm6;xS7m}(RsLDB&dk(qeAE1hSR3(*b&Vgh8g;eF31I6o^ku=ggdql^?hT4myR=@uB zd#_)2zwZ9W7k~aM09=A!7GR3Odx39NBoAcehS@VKwx|Tsx7`ozis*9Rl)|rAP8dk; z5C1TOfV(Z{pz@9oE1aX;HunQtc(sn{?edz>Rl7}u7GRpev54$oRb{<(gIkip%-Z5= zy?J%9R%dX$F|2Q5-`;MO!2>nn1=957w&{et2r~?3-GlR<>GGg!S{#eD##VE)zHwcl ziZIKdgaV1K42s+Jjpp+DT9d)UjTLie&rEczG=$g-yV%Fki?(OW%M6apFKjcIu8B4; zzzGI(Lxt+TFZ?1r%;rAZ@_Zf$r^nldCETv(suH?yNiN%#?re^sqahfwXfN-L-^W|!Y~ba(B-8W+)m|wB&~M- z9N}fR>)4hpjUdEq0ryYb-2KqPEWwCVg82o*4vf%i^Bvp6jcx~P@V6N{GA&&;RxuY* zH7I46p4u5>a0*$PX+~*8j!qK^r89>dURqS;K3f>C0nr9GRjef{GTv2km9&Z<=`4 zS63FoGM#PHw^cd$b6R%nfWh^~*LtIZ_ZHukm=~<^o3;2}M&)XYj+0z(pay71l$@zK zmZT3=Wyk4_(37^ym%W}H*r@oTI`2of7})A)L&;Z*aF(&RCb{cC>74N%*CJp1+n&TQ zcsx6JB9zJC72z2MfB1$tpTXIzE$Jk9-E$6#Fwfx1?JbIK&T^xP!PD99a28zkg%p