Skip to content

Commit

Permalink
Removing config when there is no defined input
Browse files Browse the repository at this point in the history
  • Loading branch information
cmendesce committed Jun 19, 2024
1 parent 5bc2de7 commit fa26ae8
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,31 +34,25 @@ public Scenario execute(Scenario scenario, ExecutionQueue executionQueue) {
}

private void configureFaultOnTarget(String namespace, Target target) {
var fault = createFault(target.getFault());

var targetService = findVirtualService(namespace, target.getServiceName());
if (fault.isPresent()) {
var editedVirtualService = targetService
.edit()
.editSpec()
.editFirstHttp()
.withFault(fault.get())
.endHttp()
.endSpec()
.build();
var virtualService = targetService
.edit()
.editSpec()
.editFirstHttp();
createFault(target.getFault()).ifPresent(virtualService::withFault);
var editedVirtualService = virtualService.endHttp().endSpec().build();

istioClient()
.v1beta1()
.virtualServices()
.inNamespace(targetService.getMetadata().getNamespace())
.resource(editedVirtualService)
.update();
}
istioClient()
.v1beta1()
.virtualServices()
.inNamespace(targetService.getMetadata().getNamespace())
.resource(editedVirtualService)
.update();
}

public Optional<HTTPFaultInjection> createFault(ScenarioFaultTemplate faultTemplate) {
if (faultTemplate == null || (faultTemplate.getAbort() == null && faultTemplate.getDelay() == null)) {
logger.error("Fault template is null. No fault was configured.");
logger.error("Fault template is null. No fault to configure.");
return Optional.empty();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
package io.resiliencebench.execution.istio.steps;

import io.fabric8.istio.api.networking.v1beta1.*;
import io.fabric8.istio.api.networking.v1beta1.DestinationBuilder;
import io.fabric8.istio.api.networking.v1beta1.HTTPRetry;
import io.fabric8.istio.api.networking.v1beta1.HTTPRouteBuilder;
import io.fabric8.istio.api.networking.v1beta1.HTTPRouteDestinationBuilder;
import io.fabric8.istio.client.IstioClient;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.resiliencebench.resources.queue.ExecutionQueue;
import io.resiliencebench.resources.scenario.Scenario;
import io.resiliencebench.resources.scenario.Source;
import io.resiliencebench.resources.scenario.Target;
import io.resiliencebench.resources.service.ResilientService;
import io.resiliencebench.support.CustomResourceRepository;
import org.slf4j.Logger;
import org.springframework.stereotype.Service;

import java.util.Collections;
import java.util.Map;
import java.util.Optional;

import static java.util.Collections.singletonList;

@Service
public class IstioRetryStep extends IstioExecutorStep<Scenario> {

Expand All @@ -29,41 +32,35 @@ public IstioRetryStep(KubernetesClient kubernetesClient, IstioClient istioClient
public Scenario execute(Scenario scenario, ExecutionQueue executionQueue) {
for (var connector : scenario.getSpec().getConnectors()) {
var source = connector.getSource();
configureRetryOnSource(scenario.getMetadata().getNamespace(), source, connector.getTarget());
configureRetryOnSource(scenario.getMetadata().getNamespace(), source);
}
return scenario;
}

private void configureRetryOnSource(String namespace, Source source, Target target) {
private void configureRetryOnSource(String namespace, Source source) {
var sourceVirtualService = findVirtualService(namespace, source.getServiceName());
var retryPolicy = createRetryPolicy(source.getPatternConfig(), target);
if (retryPolicy.isPresent()) {
var destination = new DestinationBuilder().withHost(target.getServiceName()).build();

var httpRoute = new HTTPRouteBuilder()
.withRoute(Collections.singletonList(new HTTPRouteDestinationBuilder()
.withDestination(destination)
.build()))
.withRetries(retryPolicy.get())
.build();
var destination = new DestinationBuilder().withHost(source.getServiceName()).build();
var httpRouteBuilder = new HTTPRouteBuilder()
.withRoute(singletonList(
new HTTPRouteDestinationBuilder().withDestination(destination).build())
);
createRetryPolicy(source.getPatternConfig()).ifPresent(httpRouteBuilder::withRetries);
var newVirtualService = sourceVirtualService
.edit()
.editSpec()
.withHttp(httpRouteBuilder.build())
.endSpec()
.build();

var newVirtualService = sourceVirtualService
.edit()
.editSpec()
.withHttp(httpRoute)
.endSpec()
.build();

istioClient()
.v1beta1()
.virtualServices()
.inNamespace(sourceVirtualService.getMetadata().getNamespace())
.resource(newVirtualService)
.update();
}
istioClient()
.v1beta1()
.virtualServices()
.inNamespace(sourceVirtualService.getMetadata().getNamespace())
.resource(newVirtualService)
.update();
}

public Optional<HTTPRetry> createRetryPolicy(Map<String, Object> patternConfig, Target target) {
public Optional<HTTPRetry> createRetryPolicy(Map<String, Object> patternConfig) {
var httpRetry = new HTTPRetry();
var attempts = (Integer) patternConfig.get("attempts");
var perTryTimeout = (Integer) patternConfig.get("perTryTimeout");
Expand Down

0 comments on commit fa26ae8

Please sign in to comment.