use of com.redhat.service.bridge.shard.operator.resources.BridgeIngress in project sandbox by 5733d9e2be6485d52ffa08870cabdee0.
the class BridgeIngressSteps method deployBridgeIngressWithDefaultSecret.
@When("^deploy BridgeIngress with default secret:$")
public void deployBridgeIngressWithDefaultSecret(String bridgeIngressYaml) {
InputStream resourceStream = new ByteArrayInputStream(bridgeIngressYaml.getBytes(StandardCharsets.UTF_8));
BridgeIngress bridgeIngress = context.getClient().resources(BridgeIngress.class).inNamespace(context.getNamespace()).load(resourceStream).createOrReplace();
Secret secret = new SecretBuilder().withMetadata(new ObjectMetaBuilder().withNamespace(bridgeIngress.getMetadata().getNamespace()).withName(bridgeIngress.getMetadata().getName()).build()).build();
context.getClient().secrets().inNamespace(bridgeIngress.getMetadata().getNamespace()).withName(bridgeIngress.getMetadata().getName()).createOrReplace(secret);
}
use of com.redhat.service.bridge.shard.operator.resources.BridgeIngress in project sandbox by 5733d9e2be6485d52ffa08870cabdee0.
the class BridgeIngressControllerTest method testBridgeIngressDeployment_deploymentTimeoutFailure.
@Test
void testBridgeIngressDeployment_deploymentTimeoutFailure() throws Exception {
// Given
BridgeIngress bridgeIngress = buildBridgeIngress();
deployBridgeIngressSecret(bridgeIngress);
// When
bridgeIngressController.reconcile(bridgeIngress, null);
Deployment deployment = getDeploymentFor(bridgeIngress);
// Then
kubernetesResourcePatcher.patchDeploymentAsTimeoutFailed(deployment.getMetadata().getName(), deployment.getMetadata().getNamespace());
UpdateControl<BridgeIngress> updateControl = bridgeIngressController.reconcile(bridgeIngress, null);
assertThat(updateControl.isUpdateStatus()).isTrue();
assertThat(updateControl.getResource().getStatus().getConditionByType(ConditionType.Ready).get().getReason()).isEqualTo(ConditionReason.DeploymentFailed);
assertThat(updateControl.getResource().getStatus().getConditionByType(ConditionType.Augmentation).get().getStatus()).isEqualTo(ConditionStatus.False);
}
use of com.redhat.service.bridge.shard.operator.resources.BridgeIngress in project sandbox by 5733d9e2be6485d52ffa08870cabdee0.
the class BridgeIngressControllerTest method testCreateNewBridgeIngress.
@Test
void testCreateNewBridgeIngress() {
// Given
BridgeIngress bridgeIngress = buildBridgeIngress();
deployBridgeIngressSecret(bridgeIngress);
// When
UpdateControl<BridgeIngress> updateControl = bridgeIngressController.reconcile(bridgeIngress, null);
// Then
assertThat(updateControl.isUpdateStatus()).isTrue();
assertThat(bridgeIngress.getStatus()).isNotNull();
assertThat(bridgeIngress.getStatus().isReady()).isFalse();
assertThat(bridgeIngress.getStatus().getConditionByType(ConditionType.Augmentation)).isPresent().hasValueSatisfying(c -> {
assertThat(c.getStatus()).isEqualTo(ConditionStatus.False);
});
assertThat(bridgeIngress.getStatus().getConditionByType(ConditionType.Ready)).isPresent().hasValueSatisfying(c -> {
assertThat(c.getStatus()).isEqualTo(ConditionStatus.False);
assertThat(c.getReason()).isEqualTo(ConditionReason.DeploymentNotAvailable);
});
}
use of com.redhat.service.bridge.shard.operator.resources.BridgeIngress in project sandbox by 5733d9e2be6485d52ffa08870cabdee0.
the class ServiceMonitorServiceTest method fetchOrCreateServiceMonitor.
@Test
@WithPrometheus
void fetchOrCreateServiceMonitor() {
// Given
final BridgeDTO bridge = TestSupport.newAvailableBridgeDTO();
final BridgeIngress bridgeIngress = BridgeIngress.fromDTO(bridge, "default", TestSupport.INGRESS_IMAGE);
final Secret secretMock = new SecretBuilder().withMetadata(new ObjectMetaBuilder().withName(bridgeIngress.getMetadata().getName()).build()).build();
final Deployment deployment = bridgeIngressService.fetchOrCreateBridgeIngressDeployment(bridgeIngress, secretMock);
final Service service = bridgeIngressService.fetchOrCreateBridgeIngressService(bridgeIngress, deployment);
// When
final Optional<ServiceMonitor> serviceMonitor = serviceMonitorService.fetchOrCreateServiceMonitor(bridgeIngress, service, "ingress");
// Then
assertThat(serviceMonitor).isPresent();
// check: https://prometheus-operator.dev/docs/operator/troubleshooting/#overview-of-servicemonitor-tagging-and-related-elements
assertThat(serviceMonitor.get().getSpec().getSelector().getMatchLabels()).containsEntry(LabelsBuilder.INSTANCE_LABEL, deployment.getMetadata().getName());
assertThat(serviceMonitor.get().getMetadata().getLabels()).containsEntry(LabelsBuilder.INSTANCE_LABEL, deployment.getMetadata().getName());
assertThat(serviceMonitor.get().getMetadata().getLabels()).containsEntry(LabelsBuilder.MANAGED_BY_LABEL, LabelsBuilder.OPERATOR_NAME);
assertThat(serviceMonitor.get().getMetadata().getLabels()).containsEntry(LabelsBuilder.CREATED_BY_LABEL, LabelsBuilder.OPERATOR_NAME);
assertThat(serviceMonitor.get().getMetadata().getLabels()).containsEntry(LabelsBuilder.COMPONENT_LABEL, "ingress");
assertThat(service.getMetadata().getLabels()).containsEntry(LabelsBuilder.INSTANCE_LABEL, deployment.getMetadata().getName());
}
use of com.redhat.service.bridge.shard.operator.resources.BridgeIngress in project sandbox by 5733d9e2be6485d52ffa08870cabdee0.
the class CustomerNamespaceProviderImplTest method testNamespaceDeletedWhenEmpty.
@Test
void testNamespaceDeletedWhenEmpty() {
final BridgeDTO dto = TestSupport.newRequestedBridgeDTO();
dto.setCustomerId("hofstadter");
bridgeIngressService.createBridgeIngress(dto);
// Wait until BridgeIngress is really created, can take some time due to client caching - https://issues.redhat.com/browse/MGDOBR-308
Awaitility.await().atMost(Duration.ofSeconds(5)).until(() -> kubernetesClient.resources(BridgeIngress.class).inNamespace(customerNamespaceProvider.resolveName(dto.getCustomerId())).withName(BridgeIngress.resolveResourceName(dto.getId())).get() != null);
// there's only one bridge there
bridgeIngressService.deleteBridgeIngress(dto);
Awaitility.await().atMost(Duration.ofSeconds(60)).until(() -> kubernetesClient.resources(BridgeIngress.class).withName(BridgeIngress.resolveResourceName(dto.getId())).get() == null);
customerNamespaceProvider.cleanUpEmptyNamespaces();
Awaitility.await().atMost(Duration.ofSeconds(60)).until(() -> kubernetesClient.namespaces().withName(customerNamespaceProvider.resolveName(dto.getCustomerId())).get() == null);
}
Aggregations