Skip to content

Commit

Permalink
Fix problem with non-matching namespace for broker ClusterRoleBinding (
Browse files Browse the repository at this point in the history
…#1840)

* Fix problem with non-matching namespace for broker ClusterRoleBinding

* Fix the indentation
  • Loading branch information
scholzj committed Jul 26, 2019
1 parent b834980 commit 216747b
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1377,7 +1377,6 @@ public ClusterRoleBinding generateClusterRoleBinding(String assemblyNamespace) {
return new ClusterRoleBindingBuilder()
.withNewMetadata()
.withName(initContainerClusterRoleBindingName(namespace, cluster))
.withNamespace(assemblyNamespace)
.withOwnerReferences(createOwnerReference())
.withLabels(labels.toMap())
.endMetadata()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import io.fabric8.kubernetes.api.model.networking.NetworkPolicyPeer;
import io.fabric8.kubernetes.api.model.networking.NetworkPolicyPeerBuilder;
import io.fabric8.kubernetes.api.model.policy.PodDisruptionBudget;
import io.fabric8.kubernetes.api.model.rbac.ClusterRoleBinding;
import io.fabric8.openshift.api.model.Route;
import io.strimzi.api.kafka.model.listener.NodePortListenerBootstrapOverrideBuilder;
import io.strimzi.api.kafka.model.listener.NodePortListenerBrokerOverrideBuilder;
Expand Down Expand Up @@ -2111,4 +2112,66 @@ image, healthDelay, healthTimeout, metricsCm, configuration, emptyMap()))
}
}
}

@Test
public void testClusterRoleBindingNodePort() {
String testNamespace = "other-namespace";

Kafka kafkaAssembly = new KafkaBuilder(ResourceUtils.createKafkaCluster(testNamespace, cluster, replicas,
image, healthDelay, healthTimeout, metricsCm, configuration, emptyMap()))
.editSpec()
.editKafka()
.withNewListeners()
.withNewKafkaListenerExternalNodePort()
.withNewKafkaListenerAuthenticationTlsAuth()
.endKafkaListenerAuthenticationTlsAuth()
.endKafkaListenerExternalNodePort()
.endListeners()
.endKafka()
.endSpec()
.build();

KafkaCluster kc = KafkaCluster.fromCrd(kafkaAssembly, VERSIONS);
ClusterRoleBinding crb = kc.generateClusterRoleBinding(testNamespace);

assertEquals(KafkaCluster.initContainerClusterRoleBindingName(testNamespace, cluster), crb.getMetadata().getName());
assertNull(crb.getMetadata().getNamespace());
assertEquals(testNamespace, crb.getSubjects().get(0).getNamespace());
assertEquals(KafkaCluster.initContainerServiceAccountName(cluster), crb.getSubjects().get(0).getName());
}

@Test
public void testClusterRoleBindingRack() {
String testNamespace = "other-namespace";

Kafka kafkaAssembly = new KafkaBuilder(ResourceUtils.createKafkaCluster(testNamespace, cluster, replicas,
image, healthDelay, healthTimeout, metricsCm, configuration, emptyMap()))
.editSpec()
.editKafka()
.withNewRack("my-topology-label")
.endKafka()
.endSpec()
.build();

KafkaCluster kc = KafkaCluster.fromCrd(kafkaAssembly, VERSIONS);
ClusterRoleBinding crb = kc.generateClusterRoleBinding(testNamespace);

assertEquals(KafkaCluster.initContainerClusterRoleBindingName(testNamespace, cluster), crb.getMetadata().getName());
assertNull(crb.getMetadata().getNamespace());
assertEquals(testNamespace, crb.getSubjects().get(0).getNamespace());
assertEquals(KafkaCluster.initContainerServiceAccountName(cluster), crb.getSubjects().get(0).getName());
}

@Test
public void testNullClusterRoleBinding() {
String testNamespace = "other-namespace";

Kafka kafkaAssembly = ResourceUtils.createKafkaCluster(testNamespace, cluster, replicas,
image, healthDelay, healthTimeout, metricsCm, configuration, emptyMap());

KafkaCluster kc = KafkaCluster.fromCrd(kafkaAssembly, VERSIONS);
ClusterRoleBinding crb = kc.generateClusterRoleBinding(testNamespace);

assertNull(crb);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,16 @@ public abstract class AbstractNamespaceST extends AbstractST {
void checkKafkaInDiffNamespaceThanCO() {
String kafkaName = kafkaClusterName(CLUSTER_NAME + "-second");
String previousNamespace = setNamespace(SECOND_NAMESPACE);
secondNamespaceResources.kafkaEphemeral(CLUSTER_NAME + "-second", 3).done();
secondNamespaceResources.kafkaEphemeral(CLUSTER_NAME + "-second", 3)
.editSpec()
.editKafka()
.editListeners()
.withNewKafkaListenerExternalNodePort()
.endKafkaListenerExternalNodePort()
.endListeners()
.endKafka()
.endSpec()
.done();

LOGGER.info("Waiting for creation {} in namespace {}", kafkaName, SECOND_NAMESPACE);
StUtils.waitForAllStatefulSetPodsReady(kafkaName, 3);
Expand Down

0 comments on commit 216747b

Please sign in to comment.