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;
private static final String SUBSCRIPTION_SCHEMASET_NAME = "subscriptions";
private static final String SUBSCRIPTION_REGISTRY_DATANODE_NAME = "subscription-registry";
- @Value("${ncmp.model-loader.subscription:false}")
+ @Value("${ncmp.model-loader.maximum-attempt-count:20}")
+ private int maximumAttemptCount;
+
+ @Value("${ncmp.timers.model-loader.retry-time-ms:1000}")
+ private long retryTimeMs;
+
+ @Value("${ncmp.model-loader.subscription:true}")
private boolean subscriptionModelLoaderEnabled;
/**
public void onApplicationEvent(final ApplicationReadyEvent applicationReadyEvent) {
try {
if (subscriptionModelLoaderEnabled) {
+ checkNcmpDataspaceExists();
onboardSubscriptionModel(createYangResourceToContentMap());
} else {
log.info("Subscription Model Loader is disabled");
}
}
+ 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.
*/
*/
@Override
public boolean createAnchor(final String dataspaceName, final String schemaSetName,
- final String anchorName) {
+ final String anchorName) {
try {
cpsAdminService.createAnchor(dataspaceName, schemaSetName, anchorName);
} catch (final AlreadyDefinedException exception) {