From 9a8965fa835da0639719245e44625e15f165d7d5 Mon Sep 17 00:00:00 2001 From: PatrikBuhr Date: Wed, 5 May 2021 08:38:07 +0200 Subject: PMS Persistent storage of service definitions - A1 Istanbul Bugfix,only sending AVAILABLE notifications for RICs that has been successfully synched. Issue-ID: CCSDK-3256 Signed-off-by: PatrikBuhr Change-Id: Ic915c3d83a51ac23cb4652bda9ab696fc27bae3d --- .../tasks/RefreshConfigTask.java | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'a1-policy-management/src/main') diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTask.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTask.java index faef863e..e84c9838 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTask.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTask.java @@ -219,12 +219,16 @@ public class RefreshConfigTask { private Mono trySyncronizeSupportedTypes(Ric ric) { logger.debug("Synchronizing policy types for new RIC: {}", ric.id()); // Synchronize the policy types + ric.setState(RicState.SYNCHRONIZING); return this.a1ClientFactory.createA1Client(ric) // .flatMapMany(client -> synchronizationTask().synchronizePolicyTypes(ric, client)) // .collectList() // .flatMap(list -> Mono.just(ric)) // - .doOnError(t -> logger.warn("Failed to synchronize types in new RIC: {}, reason: {}", ric.id(), - t.getMessage())) // + .doOnNext(notUsed -> ric.setState(RicState.AVAILABLE)) // + .doOnError(t -> { + logger.warn("Failed to synchronize types in new RIC: {}, reason: {}", ric.id(), t.getMessage()); + ric.setState(RicState.UNAVAILABLE); // + }) // .onErrorResume(t -> Mono.just(ric)); } @@ -238,7 +242,6 @@ public class RefreshConfigTask { return trySyncronizeSupportedTypes(new Ric(updatedInfo.getRicConfig())) // .flatMap(this::addRic) // .flatMap(this::notifyServicesRicAvailable) // - .doOnNext(ric -> ric.setState(RicState.AVAILABLE)) // .flatMap(notUsed -> Mono.just(event)); } else if (event == RicConfigUpdate.Type.REMOVED) { logger.debug("RIC removed {}", ricId); @@ -270,10 +273,14 @@ public class RefreshConfigTask { } private Mono notifyServicesRicAvailable(Ric ric) { - ServiceCallbacks callbacks = new ServiceCallbacks(this.restClientFactory); - return callbacks.notifyServicesRicAvailable(ric, services) // - .collectList() // - .flatMap(list -> Mono.just(ric)); + if (ric.getState() == RicState.AVAILABLE) { + ServiceCallbacks callbacks = new ServiceCallbacks(this.restClientFactory); + return callbacks.notifyServicesRicAvailable(ric, services) // + .collectList() // + .flatMap(list -> Mono.just(ric)); + } else { + return Mono.just(ric); + } } /** -- cgit 1.2.3-korg