- Use @Order annotation to execute model loader sequentially instead of parallel
- Removed duplicated steps between model loaders (just one)
- Improved and consistent logging for each model loader starting and stopping
Issue-ID: CPS-2988
Change-Id: Icd1bb365a65831fbef52f6d9881d8d23dbb3c8aa
Signed-off-by: ToineSiebelink <toine.siebelink@est.tech>
import org.onap.cps.api.CpsModuleService;
import org.onap.cps.init.AbstractModelLoader;
import org.onap.cps.init.actuator.ReadinessManager;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@Slf4j
@Service
+@Order(3)
public class CmDataSubscriptionModelLoader extends AbstractModelLoader {
private static final String MODEL_FILE_NAME = "cm-data-job-subscriptions@2025-09-03.yang";
@Override
public void onboardOrUpgradeModel() {
+ log.info("Model Loader #3 Started: NCMP CM Data Notification Subscription Models");
onboardSubscriptionModels();
- log.info("Subscription Models onboarded successfully");
+ log.info("Model Loader #3 Completed");
}
private void onboardSubscriptionModels() {
- createDataspace(NCMP_DATASPACE_NAME);
createSchemaSet(NCMP_DATASPACE_NAME, SCHEMA_SET_NAME, MODEL_FILE_NAME);
createAnchor(NCMP_DATASPACE_NAME, SCHEMA_SET_NAME, ANCHOR_NAME);
createTopLevelDataNode(NCMP_DATASPACE_NAME, ANCHOR_NAME, REGISTRY_DATA_NODE_NAME);
+ log.info("NCMP CM Data Notification Subscription Models onboarded successfully");
}
}
import org.onap.cps.ncmp.utils.events.NcmpInventoryModelOnboardingFinishedEvent;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@Slf4j
@Service
+@Order(2)
public class InventoryModelLoader extends AbstractModelLoader {
private final ApplicationEventPublisher applicationEventPublisher;
@Override
public void onboardOrUpgradeModel() {
+ log.info("Model Loader #2 Started: NCMP Inventory Models");
final String schemaToInstall = newRevisionEnabled ? NEW_INVENTORY_SCHEMA_SET_NAME : PREVIOUS_SCHEMA_SET_NAME;
final String moduleRevision = getModuleRevision(schemaToInstall);
} else {
installInventoryModel(schemaToInstall);
}
-
applicationEventPublisher.publishEvent(new NcmpInventoryModelOnboardingFinishedEvent(this));
+ log.info("Model Loader #2 Completed");
}
private void installInventoryModel(final String schemaSetName) {
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2024-2025 TechMahindra Ltd.
+ * Modifications Copyright (C) 2025 OpenInfra Foundation Europe.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
import org.onap.cps.api.CpsDataspaceService;
import org.onap.cps.api.CpsModuleService;
import org.onap.cps.init.actuator.ReadinessManager;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@Slf4j
@Service
+@Order(1)
public class CpsNotificationSubscriptionModelLoader extends AbstractModelLoader {
private static final String MODEL_FILENAME = "cps-notification-subscriptions@2024-07-03.yang";
@Override
public void onboardOrUpgradeModel() {
+ log.info("Model Loader #1 Started: CPS Data Notification Subscription Models");
onboardSubscriptionModels();
- log.info("Subscription models onboarded successfully");
+ log.info("Model Loader #1 Completed");
}
private void onboardSubscriptionModels() {
createSchemaSet(CPS_DATASPACE_NAME, SCHEMA_SET_NAME, MODEL_FILENAME);
createAnchor(CPS_DATASPACE_NAME, SCHEMA_SET_NAME, ANCHOR_NAME);
createTopLevelDataNode(CPS_DATASPACE_NAME, ANCHOR_NAME, REGISTRY_DATANODE_NAME);
+ log.info("CPS Data Notification Subscription models onboarded successfully");
}
}