Merge "Publish trust level notification event"
authorToine Siebelink <toine.siebelink@est.tech>
Wed, 29 Nov 2023 08:34:03 +0000 (08:34 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 29 Nov 2023 08:34:03 +0000 (08:34 +0000)
1  2 
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java

@@@ -60,10 -60,10 +60,11 @@@ import org.onap.cps.ncmp.api.impl.inven
  import org.onap.cps.ncmp.api.impl.inventory.CompositeStateUtils;
  import org.onap.cps.ncmp.api.impl.inventory.DataStoreSyncState;
  import org.onap.cps.ncmp.api.impl.inventory.InventoryPersistence;
 +import org.onap.cps.ncmp.api.impl.inventory.sync.ModuleOperationsUtils;
  import org.onap.cps.ncmp.api.impl.operations.DmiDataOperations;
  import org.onap.cps.ncmp.api.impl.operations.OperationType;
  import org.onap.cps.ncmp.api.impl.trustlevel.TrustLevel;
+ import org.onap.cps.ncmp.api.impl.trustlevel.TrustLevelManager;
  import org.onap.cps.ncmp.api.impl.utils.CmHandleQueryConditions;
  import org.onap.cps.ncmp.api.impl.utils.InventoryQueryConditions;
  import org.onap.cps.ncmp.api.impl.utils.YangDataConverter;
@@@ -101,8 -101,8 +102,8 @@@ public class NetworkCmProxyDataServiceI
      private final LcmEventsCmHandleStateHandler lcmEventsCmHandleStateHandler;
      private final CpsDataService cpsDataService;
      private final IMap<String, Object> moduleSyncStartedOnCmHandles;
-     private final Map<String, TrustLevel> trustLevelPerCmHandle;
      private final Map<String, TrustLevel> trustLevelPerDmiPlugin;
+     private final TrustLevelManager trustLevelManager;
  
      @Override
      public DmiPluginRegistrationResponse updateDmiRegistrationAndSyncModule(
          if (!dmiPluginRegistration.getCreatedCmHandles().isEmpty()) {
              dmiPluginRegistrationResponse.setCreatedCmHandles(
                  parseAndProcessCreatedCmHandlesInRegistration(dmiPluginRegistration));
-             populateTrustLevelPerCmHandleCache(dmiPluginRegistration);
          }
          if (!dmiPluginRegistration.getUpdatedCmHandles().isEmpty()) {
              dmiPluginRegistrationResponse.setUpdatedCmHandles(
       */
      public List<CmHandleRegistrationResponse> parseAndProcessCreatedCmHandlesInRegistration(
          final DmiPluginRegistration dmiPluginRegistration) {
-         final Map<YangModelCmHandle, CmHandleState> cmHandleStatePerCmHandle = new HashMap<>();
-         dmiPluginRegistration.getCreatedCmHandles().forEach(cmHandle -> {
-             final YangModelCmHandle yangModelCmHandle = YangModelCmHandle.toYangModelCmHandle(
-                 dmiPluginRegistration.getDmiPlugin(),
-                 dmiPluginRegistration.getDmiDataPlugin(),
-                 dmiPluginRegistration.getDmiModelPlugin(),
-                 cmHandle,
-                 cmHandle.getModuleSetTag());
-             cmHandleStatePerCmHandle.put(yangModelCmHandle, CmHandleState.ADVISED);
-         });
-         return registerNewCmHandles(cmHandleStatePerCmHandle);
+         final List<NcmpServiceCmHandle> cmHandlesToBeCreated = dmiPluginRegistration.getCreatedCmHandles();
+         final Map<String, TrustLevel> initialTrustLevelPerCmHandleId = new HashMap<>(cmHandlesToBeCreated.size());
+         final List<YangModelCmHandle> yangModelCmHandles = new ArrayList<>(cmHandlesToBeCreated.size());
+         cmHandlesToBeCreated
+                 .forEach(cmHandle -> {
+                     final YangModelCmHandle yangModelCmHandle = YangModelCmHandle.toYangModelCmHandle(
+                             dmiPluginRegistration.getDmiPlugin(),
+                             dmiPluginRegistration.getDmiDataPlugin(),
+                             dmiPluginRegistration.getDmiModelPlugin(),
+                             cmHandle,
+                             cmHandle.getModuleSetTag());
+                     yangModelCmHandles.add(yangModelCmHandle);
+                     initialTrustLevelPerCmHandleId.put(cmHandle.getCmHandleId(), cmHandle.getRegistrationTrustLevel());
+                 });
+         return registerNewCmHandles(yangModelCmHandles, initialTrustLevelPerCmHandleId);
      }
  
      protected List<CmHandleRegistrationResponse> parseAndProcessDeletedCmHandlesInRegistration(
          final NcmpServiceCmHandle ncmpServiceCmHandle = new NcmpServiceCmHandle();
          ncmpServiceCmHandle.setCmHandleId(cmHandleId);
          final String moduleSetTag = dmiPluginRegistration.getUpgradedCmHandles().getModuleSetTag();
 -        final String lockReasonWithModuleSetTag = MessageFormat.format("ModuleSetTag: {0}", moduleSetTag);
 +        final String lockReasonWithModuleSetTag = MessageFormat.format(
 +                ModuleOperationsUtils.MODULE_SET_TAG_MESSAGE_FORMAT, moduleSetTag);
          ncmpServiceCmHandle.setCompositeState(new CompositeStateBuilder().withCmHandleState(CmHandleState.READY)
                  .withLockReason(MODULE_UPGRADE, lockReasonWithModuleSetTag).build());
          return YangModelCmHandle.toYangModelCmHandle(dmiPluginRegistration.getDmiPlugin(),
          }
      }
  
-     private List<CmHandleRegistrationResponse> registerNewCmHandles(final Map<YangModelCmHandle, CmHandleState>
-                                                                         cmHandleStatePerCmHandle) {
-         final List<String> cmHandleIds = getCmHandleIds(cmHandleStatePerCmHandle);
+     private List<CmHandleRegistrationResponse> registerNewCmHandles(final List<YangModelCmHandle> yangModelCmHandles,
+                                                                     final Map<String, TrustLevel>
+                                                                             initialTrustLevelPerCmHandleId) {
+         final Set<String> cmHandleIds = initialTrustLevelPerCmHandleId.keySet();
          try {
-             lcmEventsCmHandleStateHandler.updateCmHandleStateBatch(cmHandleStatePerCmHandle);
+             lcmEventsCmHandleStateHandler.initiateStateAdvised(yangModelCmHandles);
+             trustLevelManager.handleInitialRegistrationOfTrustLevels(initialTrustLevelPerCmHandleId);
              return CmHandleRegistrationResponse.createSuccessResponses(cmHandleIds);
          } catch (final AlreadyDefinedException alreadyDefinedException) {
              return CmHandleRegistrationResponse.createFailureResponses(
          return cmHandleStatePerCmHandle.keySet().stream().map(YangModelCmHandle::getId).toList();
      }
  
-     private void populateTrustLevelPerCmHandleCache(final DmiPluginRegistration dmiPluginRegistration) {
-         for (final NcmpServiceCmHandle cmHandle: dmiPluginRegistration.getCreatedCmHandles()) {
-             if (cmHandle.getRegistrationTrustLevel() == null) {
-                 if (trustLevelPerCmHandle.containsKey(cmHandle.getCmHandleId())) {
-                     log.warn("CmHandle : {}, Already exists, Initial trustLevel ignored.", cmHandle.getCmHandleId());
-                 } else {
-                     trustLevelPerCmHandle.put(cmHandle.getCmHandleId(), TrustLevel.COMPLETE);
-                 }
-             } else {
-                 trustLevelPerCmHandle.put(cmHandle.getCmHandleId(), cmHandle.getRegistrationTrustLevel());
-             }
-         }
-     }
      private void setTrustLevelPerDmiPlugin(final DmiPluginRegistration dmiPluginRegistration) {
          if (DmiPluginRegistration.isNullEmptyOrBlank(dmiPluginRegistration.getDmiDataPlugin())) {
              trustLevelPerDmiPlugin.put(dmiPluginRegistration.getDmiPlugin(), TrustLevel.COMPLETE);