diff --git a/apis/cloud.redhat.com/v1alpha1/clowdenvironment_types.go b/apis/cloud.redhat.com/v1alpha1/clowdenvironment_types.go index d0d510f87..67b82f0e7 100644 --- a/apis/cloud.redhat.com/v1alpha1/clowdenvironment_types.go +++ b/apis/cloud.redhat.com/v1alpha1/clowdenvironment_types.go @@ -91,7 +91,7 @@ type KafkaMode string // KafkaClusterConfig defines options related to the Kafka cluster managed/monitored by Clowder type KafkaClusterConfig struct { - // Defines the kafka cluster name (default: name of ClowdEnvironment) + // Defines the kafka cluster name (default: -) Name string `json:"name,omitempty"` // The namespace the kafka cluster is expected to reside in (default: the environment's targetNamespace) @@ -124,7 +124,7 @@ type KafkaClusterConfig struct { // KafkaConnectClusterConfig defines options related to the Kafka Connect cluster managed/monitored by Clowder type KafkaConnectClusterConfig struct { - // Defines the kafka connect cluster name (default: '-connect') + // Defines the kafka connect cluster name (default: ) Name string `json:"name,omitempty"` // The namespace the kafka connect cluster is expected to reside in (default: the kafka cluster's namespace) diff --git a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-ephemeral/00-install.yaml b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/00-install.yaml similarity index 56% rename from bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-ephemeral/00-install.yaml rename to bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/00-install.yaml index 3c27bba74..6c73c6ef5 100644 --- a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-ephemeral/00-install.yaml +++ b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/00-install.yaml @@ -1,7 +1,7 @@ apiVersion: v1 kind: Namespace metadata: - name: test-kafka-strimzi-kafka-provisioner-ephemeral + name: test-kafka-strimzi-ephemeral spec: finalizers: - kubernetes @@ -9,7 +9,7 @@ spec: apiVersion: v1 kind: Namespace metadata: - name: test-kafka-strimzi-kafka-provisioner-ephemeral-kafka + name: test-kafka-strimzi-ephemeral-kafka spec: finalizers: - kubernetes @@ -17,7 +17,7 @@ spec: apiVersion: v1 kind: Namespace metadata: - name: test-kafka-strimzi-kafka-provisioner-ephemeral-kafka-connect + name: test-kafka-strimzi-ephemeral-connect spec: finalizers: - kubernetes diff --git a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-ephemeral/01-assert.yaml b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/01-assert.yaml similarity index 68% rename from bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-ephemeral/01-assert.yaml rename to bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/01-assert.yaml index 0535fe0be..8934770db 100644 --- a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-ephemeral/01-assert.yaml +++ b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/01-assert.yaml @@ -2,12 +2,12 @@ apiVersion: kafka.strimzi.io/v1beta1 kind: Kafka metadata: - name: my-ephemeral-cluster - namespace: test-kafka-strimzi-kafka-provisioner-ephemeral-kafka + # name is asserted in json asserts + namespace: test-kafka-strimzi-ephemeral-kafka ownerReferences: - apiVersion: cloud.redhat.com/v1alpha1 kind: ClowdEnvironment - name: env-test-kafka-strimzi-kafka-provisioner-ephemeral + name: env-test-kafka-strimzi-ephemeral spec: kafka: version: "2.7.0" @@ -29,14 +29,14 @@ spec: apiVersion: kafka.strimzi.io/v1beta1 kind: KafkaConnect metadata: - name: my-other-connect-cluster - namespace: test-kafka-strimzi-kafka-provisioner-ephemeral-kafka-connect + # name is asserted in json asserts + namespace: test-kafka-strimzi-ephemeral-connect annotations: strimzi.io/use-connector-resources: 'true' spec: version: "2.7.0" image: "quay.io/cloudservices/xjoin-kafka-connect-strimzi:latest" - bootstrapServers: my-ephemeral-cluster-kafka-bootstrap.test-kafka-strimzi-kafka-provisioner-ephemeral-kafka.svc:9092 + # bootstrapServers is asserted in json asserts config: group.id: connect-cluster offset.storage.topic: connect-cluster-offsets diff --git a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-ephemeral/01-pods.yaml b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/01-pods.yaml similarity index 63% rename from bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-ephemeral/01-pods.yaml rename to bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/01-pods.yaml index dfa64cde3..151efd49f 100644 --- a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-ephemeral/01-pods.yaml +++ b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/01-pods.yaml @@ -2,9 +2,9 @@ apiVersion: cloud.redhat.com/v1alpha1 kind: ClowdEnvironment metadata: - name: env-test-kafka-strimzi-kafka-provisioner-ephemeral + name: env-test-kafka-strimzi-ephemeral spec: - targetNamespace: test-kafka-strimzi-kafka-provisioner-ephemeral + targetNamespace: test-kafka-strimzi-ephemeral providers: web: port: 8000 @@ -15,11 +15,9 @@ spec: path: "/metrics" kafka: cluster: - namespace: test-kafka-strimzi-kafka-provisioner-ephemeral-kafka - name: my-ephemeral-cluster + namespace: test-kafka-strimzi-ephemeral-kafka connect: - name: my-other-connect-cluster - namespace: test-kafka-strimzi-kafka-provisioner-ephemeral-kafka-connect + namespace: test-kafka-strimzi-ephemeral-connect mode: operator pvc: false enableLegacyStrimzi: true diff --git a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/02-json-asserts.yaml b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/02-json-asserts.yaml new file mode 100644 index 000000000..ea3964b3c --- /dev/null +++ b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/02-json-asserts.yaml @@ -0,0 +1,11 @@ +--- +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: +- script: sleep 5 +# assert that kafka cluster name matches expected +- script: ENV_UID=$(kubectl get env env-test-kafka-strimzi-ephemeral -o jsonpath={.metadata.uid} | cut -f1 -d'-'); CLUSTER_NAME=$(kubectl get kafka -n test-kafka-strimzi-ephemeral-kafka -o jsonpath='{.items[0].metadata.name}'); [[ "$CLUSTER_NAME" == "env-test-kafka-strimzi-ephemeral-$ENV_UID" ]] +# assert that kafka connect cluster name matches expected +- script: ENV_UID=$(kubectl get env env-test-kafka-strimzi-ephemeral -o jsonpath={.metadata.uid} | cut -f1 -d'-'); CLUSTER_NAME=$(kubectl get kafkaconnect -n test-kafka-strimzi-ephemeral-connect -o jsonpath='{.items[0].metadata.name}'); [[ "$CLUSTER_NAME" == "env-test-kafka-strimzi-ephemeral-$ENV_UID" ]] +# assert that kafka connect's bootstrap servers matches kafka cluster hostname +- script: KAFKA_CLUSTER_NAME=$(kubectl get kafka -n test-kafka-strimzi-ephemeral-kafka -o jsonpath='{.items[0].metadata.name}'); CONNECT_BOOTSTRAP_SERVERS=$(kubectl get kafkaconnect -n test-kafka-strimzi-ephemeral-connect -o jsonpath='{.items[0].spec.bootstrapServers}'); [[ "$CONNECT_BOOTSTRAP_SERVERS" == "$KAFKA_CLUSTER_NAME-kafka-bootstrap.test-kafka-strimzi-ephemeral-kafka.svc:9092" ]] diff --git a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-ephemeral/02-delete.yaml b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/03-delete.yaml similarity index 61% rename from bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-ephemeral/02-delete.yaml rename to bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/03-delete.yaml index 75d014a5e..751deced1 100644 --- a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-ephemeral/02-delete.yaml +++ b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-ephemeral/03-delete.yaml @@ -4,16 +4,16 @@ kind: TestStep delete: - apiVersion: cloud.redhat.com/v1alpha1 kind: ClowdEnvironment - name: env-test-kafka-strimzi-kafka-provisioner-ephemeral + name: env-test-kafka-strimzi-ephemeral - apiVersion: cloud.redhat.com/v1alpha1 kind: ClowdEnvironment name: env-test-kafka-strimzi-kafka-provisioner-pvc - apiVersion: v1 kind: Namespace - name: test-kafka-strimzi-kafka-provisioner-kafka + name: test-kafka-strimzi-ephemeral - apiVersion: v1 kind: Namespace - name: test-kafka-strimzi-kafka-provisioner + name: test-kafka-strimzi-ephemeral-kafka - apiVersion: v1 kind: Namespace - name: test-kafka-strimzi-kafka-provisioner-kafka-connect + name: test-kafka-strimzi-ephemeral-connect diff --git a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-pvc/00-install.yaml b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-pvc/00-install.yaml similarity index 60% rename from bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-pvc/00-install.yaml rename to bundle/tests/scorecard/kuttl/test-kafka-strimzi-pvc/00-install.yaml index fec99d867..a52c09749 100644 --- a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-pvc/00-install.yaml +++ b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-pvc/00-install.yaml @@ -1,7 +1,7 @@ apiVersion: v1 kind: Namespace metadata: - name: test-kafka-strimzi-kafka-provisioner-pvc + name: test-kafka-strimzi-pvc spec: finalizers: - kubernetes @@ -9,7 +9,7 @@ spec: apiVersion: v1 kind: Namespace metadata: - name: test-kafka-strimzi-kafka-provisioner-pvc-kafka + name: test-kafka-strimzi-pvc-kafka spec: finalizers: - kubernetes diff --git a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-pvc/01-assert.yaml b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-pvc/01-assert.yaml similarity index 80% rename from bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-pvc/01-assert.yaml rename to bundle/tests/scorecard/kuttl/test-kafka-strimzi-pvc/01-assert.yaml index 7470281ed..7651fdcf2 100644 --- a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-pvc/01-assert.yaml +++ b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-pvc/01-assert.yaml @@ -3,11 +3,11 @@ apiVersion: kafka.strimzi.io/v1beta1 kind: Kafka metadata: name: my-pvc-cluster - namespace: test-kafka-strimzi-kafka-provisioner-pvc-kafka + namespace: test-kafka-strimzi-pvc-kafka ownerReferences: - apiVersion: cloud.redhat.com/v1alpha1 kind: ClowdEnvironment - name: env-test-kafka-strimzi-kafka-provisioner-pvc + name: env-test-kafka-strimzi-pvc spec: kafka: version: "2.7.0" @@ -33,14 +33,14 @@ spec: apiVersion: kafka.strimzi.io/v1beta1 kind: KafkaConnect metadata: - name: my-pvc-cluster-connect - namespace: test-kafka-strimzi-kafka-provisioner-pvc-kafka + name: my-pvc-cluster + namespace: test-kafka-strimzi-pvc-kafka annotations: strimzi.io/use-connector-resources: 'true' spec: version: "2.7.0" image: "quay.io/cloudservices/xjoin-kafka-connect-strimzi:latest" - bootstrapServers: my-pvc-cluster-kafka-bootstrap.test-kafka-strimzi-kafka-provisioner-pvc-kafka.svc:9092 + bootstrapServers: my-pvc-cluster-kafka-bootstrap.test-kafka-strimzi-pvc-kafka.svc:9092 config: group.id: connect-cluster offset.storage.topic: connect-cluster-offsets diff --git a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-pvc/01-pods.yaml b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-pvc/01-pods.yaml similarity index 78% rename from bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-pvc/01-pods.yaml rename to bundle/tests/scorecard/kuttl/test-kafka-strimzi-pvc/01-pods.yaml index 280e4ac57..d8dad9527 100644 --- a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-pvc/01-pods.yaml +++ b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-pvc/01-pods.yaml @@ -2,9 +2,9 @@ apiVersion: cloud.redhat.com/v1alpha1 kind: ClowdEnvironment metadata: - name: env-test-kafka-strimzi-kafka-provisioner-pvc + name: env-test-kafka-strimzi-pvc spec: - targetNamespace: test-kafka-strimzi-kafka-provisioner-pvc + targetNamespace: test-kafka-strimzi-pvc providers: web: port: 8000 @@ -15,7 +15,7 @@ spec: path: "/metrics" kafka: cluster: - namespace: test-kafka-strimzi-kafka-provisioner-pvc-kafka + namespace: test-kafka-strimzi-pvc-kafka name: my-pvc-cluster provisionCluster: true storageSize: 100Mi diff --git a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-pvc/02-delete.yaml b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-pvc/02-delete.yaml similarity index 55% rename from bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-pvc/02-delete.yaml rename to bundle/tests/scorecard/kuttl/test-kafka-strimzi-pvc/02-delete.yaml index ad28f78b0..95b304638 100644 --- a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-kafka-provisioner-pvc/02-delete.yaml +++ b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-pvc/02-delete.yaml @@ -4,10 +4,10 @@ kind: TestStep delete: - apiVersion: cloud.redhat.com/v1alpha1 kind: ClowdEnvironment - name: env-test-kafka-strimzi-kafka-provisioner-pvc + name: env-test-kafka-strimzi-pvc - apiVersion: v1 kind: Namespace - name: test-kafka-strimzi-kafka-provisioner-pvc-kafka + name: test-kafka-strimzi-pvc-kafka - apiVersion: v1 kind: Namespace - name: test-kafka-strimzi-kafka-provisioner-pvc + name: test-kafka-strimzi-pvc diff --git a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-topic-auth/01-pods.yaml b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-topic-auth/01-pods.yaml index b4c3adedf..cdceb3270 100644 --- a/bundle/tests/scorecard/kuttl/test-kafka-strimzi-topic-auth/01-pods.yaml +++ b/bundle/tests/scorecard/kuttl/test-kafka-strimzi-topic-auth/01-pods.yaml @@ -15,6 +15,7 @@ spec: path: "/metrics" kafka: cluster: + name: test-kafka-strimzi-topic-auth namespace: test-kafka-strimzi-topic-auth-kafka mode: operator db: diff --git a/config/crd/bases/cloud.redhat.com_clowdenvironments.yaml b/config/crd/bases/cloud.redhat.com_clowdenvironments.yaml index 17f1132f7..b74c75780 100644 --- a/config/crd/bases/cloud.redhat.com_clowdenvironments.yaml +++ b/config/crd/bases/cloud.redhat.com_clowdenvironments.yaml @@ -197,7 +197,7 @@ spec: type: object name: description: 'Defines the kafka cluster name (default: - name of ClowdEnvironment)' + -)' type: string namespace: description: 'The namespace the kafka cluster is expected @@ -248,7 +248,7 @@ spec: type: string name: description: 'Defines the kafka connect cluster name (default: - ''-connect'')' + )' type: string namespace: description: 'The namespace the kafka connect cluster diff --git a/controllers/cloud.redhat.com/providers/kafka/provider.go b/controllers/cloud.redhat.com/providers/kafka/provider.go index 2bd674a08..4575e2a56 100644 --- a/controllers/cloud.redhat.com/providers/kafka/provider.go +++ b/controllers/cloud.redhat.com/providers/kafka/provider.go @@ -2,6 +2,7 @@ package kafka import ( "fmt" + "strings" crd "cloud.redhat.com/clowder/v2/apis/cloud.redhat.com/v1alpha1" cyndi "cloud.redhat.com/clowder/v2/apis/cyndi-operator/v1alpha1" @@ -50,7 +51,14 @@ func getKafkaUsername(env *crd.ClowdEnvironment, app *crd.ClowdApp) string { func getKafkaName(e *crd.ClowdEnvironment) string { if e.Spec.Providers.Kafka.Cluster.Name == "" { - return e.Name + // generate a unique name based on the ClowdEnvironment's UID + + // convert e.UID (which is a apimachinery types.UID) to string + // types.UID is a string alias so this should not fail... + uidString := string(e.UID) + + // append the initial portion of the UUID onto the kafka cluster's name + return fmt.Sprintf("%s-%s", e.Name, strings.Split(uidString, "-")[0]) } return e.Spec.Providers.Kafka.Cluster.Name } @@ -71,7 +79,7 @@ func getConnectNamespace(env *crd.ClowdEnvironment) string { func getConnectClusterName(env *crd.ClowdEnvironment) string { if env.Spec.Providers.Kafka.Connect.Name == "" { - return fmt.Sprintf("%s-connect", getKafkaName(env)) + return getKafkaName(env) } return env.Spec.Providers.Kafka.Connect.Name } diff --git a/controllers/cloud.redhat.com/suite_test.go b/controllers/cloud.redhat.com/suite_test.go index d87bc0eee..7ccd60413 100644 --- a/controllers/cloud.redhat.com/suite_test.go +++ b/controllers/cloud.redhat.com/suite_test.go @@ -187,7 +187,7 @@ func applyKafkaStatus(t *testing.T, ch chan int) { // set a mock status on strimzi KafkaConnect cluster connectCluster := strimzi.KafkaConnect{} nn := types.NamespacedName{ - Name: "kafka-connect", + Name: "kafka", Namespace: "kafka", } err = k8sClient.Get(ctx, nn, &connectCluster) diff --git a/docs/antora/modules/ROOT/pages/api_reference.adoc b/docs/antora/modules/ROOT/pages/api_reference.adoc index 941fe9c44..b5e04cef1 100644 --- a/docs/antora/modules/ROOT/pages/api_reference.adoc +++ b/docs/antora/modules/ROOT/pages/api_reference.adoc @@ -503,7 +503,7 @@ KafkaClusterConfig defines options related to the Kafka cluster managed/monitore [cols="25a,75a", options="header"] |=== | Field | Description -| *`name`* __string__ | Defines the kafka cluster name (default: name of ClowdEnvironment) +| *`name`* __string__ | Defines the kafka cluster name (default: -) | *`namespace`* __string__ | The namespace the kafka cluster is expected to reside in (default: the environment's targetNamespace) | *`replicas`* __integer__ | The requested number of replicas for kafka/zookeeper. If unset, default is '1' | *`storageSize`* __string__ | Persistent volume storage size. If unset, default is '1Gi' Only applies when KafkaConfig.PVC is set to 'true' @@ -555,7 +555,7 @@ KafkaConnectClusterConfig defines options related to the Kafka Connect cluster m [cols="25a,75a", options="header"] |=== | Field | Description -| *`name`* __string__ | Defines the kafka connect cluster name (default: '-connect') +| *`name`* __string__ | Defines the kafka connect cluster name (default: ) | *`namespace`* __string__ | The namespace the kafka connect cluster is expected to reside in (default: the kafka cluster's namespace) | *`replicas`* __integer__ | The requested number of replicas for kafka connect. If unset, default is '1' | *`version`* __string__ | Version. If unset, default is '2.5.0'