X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Ftasks%2FServiceSupervision.java;h=335aa9452beff645b610a06525f4b4393567ccbe;hb=a76d95e9292f99dfb5cd5782ef6d7bb2ec293fd7;hp=03479ddead7b1f1a4c7c7881ed64bd8290cec4b4;hpb=7adad623a64bfbb96b3c73ed7c1d0d49aabff659;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/tasks/ServiceSupervision.java b/policy-agent/src/main/java/org/oransc/policyagent/tasks/ServiceSupervision.java index 03479dde..335aa945 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/tasks/ServiceSupervision.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/tasks/ServiceSupervision.java @@ -20,6 +20,7 @@ package org.oransc.policyagent.tasks; +import org.oransc.policyagent.clients.A1Client; import org.oransc.policyagent.repository.Policies; import org.oransc.policyagent.repository.Policy; import org.oransc.policyagent.repository.Service; @@ -30,7 +31,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; + import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; @Component @EnableScheduling @@ -38,11 +41,13 @@ public class ServiceSupervision { private static final Logger logger = LoggerFactory.getLogger(ServiceSupervision.class); private final Services services; private final Policies policies; + private A1Client a1Client; @Autowired - public ServiceSupervision(Services services, Policies policies) { + public ServiceSupervision(Services services, Policies policies, A1Client a1Client) { this.services = services; this.policies = policies; + this.a1Client = a1Client; } @Scheduled(fixedRate = 1000 * 60) @@ -63,21 +68,27 @@ public class ServiceSupervision { logger.debug("Checking services completed"); } - Flux createTask() { + private Flux createTask() { return Flux.fromIterable(services.getAll()) // .filter(service -> service.isExpired()) // - .doOnNext(service -> logger.info("Service is expired:" + service.getName())) + .doOnNext(service -> logger.info("Service is expired:" + service.getName())) // .flatMap(service -> getAllPolicies(service)) // - .flatMap(policy -> deletePolicy(policy)); + .doOnNext(policy -> this.policies.remove(policy)) // + .flatMap(policy -> deletePolicyInRic(policy)); } - Flux getAllPolicies(Service service) { + private Flux getAllPolicies(Service service) { return Flux.fromIterable(policies.getForService(service.getName())); } - Flux deletePolicy(Policy policy) { - this.policies.remove(policy); - return Flux.just(policy); + private Mono deletePolicyInRic(Policy policy) { + return a1Client.deletePolicy(policy.ric().getConfig().baseUrl(), policy.id()) // + .onErrorResume(exception -> handleDeleteFromRicFailure(policy, exception)) // + .map((nothing) -> policy); } + private Mono handleDeleteFromRicFailure(Policy policy, Throwable e) { + logger.warn("Could not delete policy: {} from ric: {}", policy.id(), policy.ric().name(), e); + return Mono.empty(); + } }