diff options
author | emaclee <lee.anjella.macabuhay@est.tech> | 2023-04-16 17:48:15 +0100 |
---|---|---|
committer | Lee Anjella Macabuhay <lee.anjella.macabuhay@est.tech> | 2023-04-27 14:39:54 +0000 |
commit | 9c126615d93ada36299fbac36dfb20aedbe2add1 (patch) | |
tree | 50b0ba3603bbaf2a8b9f373db213b035243b6beb /cps-ncmp-service/src/main | |
parent | ccf2e5abd0a1eec25f90fa6f89ed3766fc9c068f (diff) |
Add retry mechanism on Subscription loader
Issue-ID: CPS-1568
Signed-off-by: emaclee <lee.anjella.macabuhay@est.tech>
Change-Id: I35697c260cc1a774f50d12552996b39f812fc2de
Diffstat (limited to 'cps-ncmp-service/src/main')
-rw-r--r-- | cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/SubscriptionModelLoader.java | 31 | ||||
-rw-r--r-- | cps-ncmp-service/src/main/resources/model/subscription.yang | 2 |
2 files changed, 32 insertions, 1 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/SubscriptionModelLoader.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/SubscriptionModelLoader.java index 231ba75b5d..5a418fd312 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/SubscriptionModelLoader.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/SubscriptionModelLoader.java @@ -31,6 +31,7 @@ import org.onap.cps.api.CpsDataService; import org.onap.cps.api.CpsModuleService; import org.onap.cps.ncmp.api.impl.exception.NcmpStartUpException; import org.onap.cps.spi.exceptions.AlreadyDefinedException; +import org.onap.cps.spi.model.Dataspace; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.context.event.ApplicationReadyEvent; @@ -51,6 +52,12 @@ public class SubscriptionModelLoader implements ModelLoader { private static final String SUBSCRIPTION_SCHEMASET_NAME = "subscriptions"; private static final String SUBSCRIPTION_REGISTRY_DATANODE_NAME = "subscription-registry"; + @Value("${ncmp.model-loader.maximumAttemptCount:20}") + private int maximumAttemptCount; + + @Value("${ncmp.model-loader.retryTimeMs:1000}") + private long retryTimeMs; + @Value("${ncmp.model-loader.subscription:false}") private boolean subscriptionModelLoaderEnabled; @@ -63,6 +70,7 @@ public class SubscriptionModelLoader implements ModelLoader { public void onApplicationEvent(final ApplicationReadyEvent applicationReadyEvent) { try { if (subscriptionModelLoaderEnabled) { + checkNcmpDataspaceExists(); onboardSubscriptionModel(createYangResourceToContentMap()); } else { log.info("Subscription Model Loader is disabled"); @@ -73,6 +81,29 @@ public class SubscriptionModelLoader implements ModelLoader { } } + private void checkNcmpDataspaceExists() { + boolean ncmpDataspaceExists = false; + int attemptCount = 0; + while (!ncmpDataspaceExists) { + final Dataspace ncmpDataspace = cpsAdminService.getDataspace(SUBSCRIPTION_DATASPACE_NAME); + if (ncmpDataspace != null) { + ncmpDataspaceExists = true; + } + if (attemptCount < maximumAttemptCount) { + try { + Thread.sleep(attemptCount * retryTimeMs); + attemptCount++; + log.info("Retrieving NCMP dataspace... {} attempt(s) ", attemptCount); + } catch (final InterruptedException e) { + Thread.currentThread().interrupt(); + } + } else { + throw new NcmpStartUpException("Retrieval of NCMP dataspace fails", + "NCMP dataspace does not exist"); + } + } + } + /** * Method to onboard subscription model for NCMP. */ diff --git a/cps-ncmp-service/src/main/resources/model/subscription.yang b/cps-ncmp-service/src/main/resources/model/subscription.yang index 8ae1be6646..e332a2898a 100644 --- a/cps-ncmp-service/src/main/resources/model/subscription.yang +++ b/cps-ncmp-service/src/main/resources/model/subscription.yang @@ -4,7 +4,7 @@ module subscription { prefix subs; - revision "2023-21-03" { + revision "2023-03-21" { description "NCMP subscription model"; } |