diff options
31 files changed, 181 insertions, 100 deletions
diff --git a/checkstyle/pom.xml b/checkstyle/pom.xml index e278126d64..d6fbcd98d5 100644 --- a/checkstyle/pom.xml +++ b/checkstyle/pom.xml @@ -26,7 +26,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.onap.cps</groupId> <artifactId>checkstyle</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <profiles> <profile> diff --git a/cps-application/pom.xml b/cps-application/pom.xml index 2546559214..5ac2202e85 100644 --- a/cps-application/pom.xml +++ b/cps-application/pom.xml @@ -28,7 +28,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-bom/pom.xml b/cps-bom/pom.xml index 97f10643b7..1bb8308e07 100644 --- a/cps-bom/pom.xml +++ b/cps-bom/pom.xml @@ -25,7 +25,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.onap.cps</groupId> <artifactId>cps-bom</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <packaging>pom</packaging> <description>This artifact contains dependencyManagement declarations of all published CPS components.</description> diff --git a/cps-dependencies/pom.xml b/cps-dependencies/pom.xml index 524bc469ed..6befccb1fa 100644 --- a/cps-dependencies/pom.xml +++ b/cps-dependencies/pom.xml @@ -27,7 +27,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.onap.cps</groupId> <artifactId>cps-dependencies</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <packaging>pom</packaging> <name>${project.groupId}:${project.artifactId}</name> diff --git a/cps-events/pom.xml b/cps-events/pom.xml index ec245fcedd..9d49f181fb 100644 --- a/cps-events/pom.xml +++ b/cps-events/pom.xml @@ -24,7 +24,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-ncmp-events/pom.xml b/cps-ncmp-events/pom.xml index 57d2f55d74..bb45493554 100644 --- a/cps-ncmp-events/pom.xml +++ b/cps-ncmp-events/pom.xml @@ -23,7 +23,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-ncmp-rest-stub/cps-ncmp-rest-stub-app/pom.xml b/cps-ncmp-rest-stub/cps-ncmp-rest-stub-app/pom.xml index 5b27792580..690ec01b8f 100644 --- a/cps-ncmp-rest-stub/cps-ncmp-rest-stub-app/pom.xml +++ b/cps-ncmp-rest-stub/cps-ncmp-rest-stub-app/pom.xml @@ -22,7 +22,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-ncmp-rest-stub</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> </parent> <artifactId>cps-ncmp-rest-stub-app</artifactId> diff --git a/cps-ncmp-rest-stub/cps-ncmp-rest-stub-service/pom.xml b/cps-ncmp-rest-stub/cps-ncmp-rest-stub-service/pom.xml index fb72176e27..bba80cdcf1 100644 --- a/cps-ncmp-rest-stub/cps-ncmp-rest-stub-service/pom.xml +++ b/cps-ncmp-rest-stub/cps-ncmp-rest-stub-service/pom.xml @@ -21,7 +21,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-ncmp-rest-stub</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> </parent> <artifactId>cps-ncmp-rest-stub-service</artifactId> diff --git a/cps-ncmp-rest-stub/pom.xml b/cps-ncmp-rest-stub/pom.xml index bd79f7c1ef..056e52a4f0 100644 --- a/cps-ncmp-rest-stub/pom.xml +++ b/cps-ncmp-rest-stub/pom.xml @@ -22,7 +22,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-ncmp-rest/pom.xml b/cps-ncmp-rest/pom.xml index 4d4ac5a5ce..4e2c48dd6f 100644 --- a/cps-ncmp-rest/pom.xml +++ b/cps-ncmp-rest/pom.xml @@ -27,7 +27,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-ncmp-service/pom.xml b/cps-ncmp-service/pom.xml index c0cf2728e6..eb0aed1e7c 100644 --- a/cps-ncmp-service/pom.xml +++ b/cps-ncmp-service/pom.xml @@ -27,7 +27,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/NetworkCmProxyInventoryFacade.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/NetworkCmProxyInventoryFacade.java index ec440f4905..c05754da91 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/NetworkCmProxyInventoryFacade.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/NetworkCmProxyInventoryFacade.java @@ -168,7 +168,7 @@ public class NetworkCmProxyInventoryFacade { validateCmHandleQueryParameters(cmHandleQueryServiceParameters, CmHandleQueryConditions.ALL_CONDITION_NAMES); final Collection<NcmpServiceCmHandle> ncmpServiceCmHandles = parameterizedCmHandleQueryService.queryCmHandles(cmHandleQueryServiceParameters); - ncmpServiceCmHandles.forEach(this::applyCurrentTrustLevel); + trustLevelManager.applyEffectiveTrustLevels(ncmpServiceCmHandles); return ncmpServiceCmHandles; } @@ -209,7 +209,7 @@ public class NetworkCmProxyInventoryFacade { final String cmHandleId = alternateIdMatcher.getCmHandleId(cmHandleReference); final NcmpServiceCmHandle ncmpServiceCmHandle = YangDataConverter.toNcmpServiceCmHandle( inventoryPersistence.getYangModelCmHandle(cmHandleId)); - applyCurrentTrustLevel(ncmpServiceCmHandle); + trustLevelManager.applyEffectiveTrustLevel(ncmpServiceCmHandle); return ncmpServiceCmHandle; } @@ -236,9 +236,4 @@ public class NetworkCmProxyInventoryFacade { return inventoryPersistence.getYangModelCmHandle(cmHandleId).getCompositeState(); } - private void applyCurrentTrustLevel(final NcmpServiceCmHandle ncmpServiceCmHandle) { - ncmpServiceCmHandle.setCurrentTrustLevel(trustLevelManager - .getEffectiveTrustLevel(ncmpServiceCmHandle.getCmHandleId())); - } - } diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/CmHandleQueryServiceImpl.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/CmHandleQueryServiceImpl.java index 1490d69881..4491044d89 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/CmHandleQueryServiceImpl.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/CmHandleQueryServiceImpl.java @@ -62,7 +62,7 @@ public class CmHandleQueryServiceImpl implements CmHandleQueryService { private final Map<String, TrustLevel> trustLevelPerDmiPlugin; @Qualifier(TrustLevelCacheConfig.TRUST_LEVEL_PER_CM_HANDLE) - private final Map<String, TrustLevel> trustLevelPerCmHandle; + private final Map<String, TrustLevel> trustLevelPerCmHandleId; private final CpsValidator cpsValidator; @@ -164,7 +164,7 @@ public class CmHandleQueryServiceImpl implements CmHandleQueryService { getCmHandleReferencesMapByDmiPluginIdentifier(dmiPluginIdentifier); for (final Map.Entry<String, String> candidateCmHandleReference : candidateCmHandleReferences.entrySet()) { final TrustLevel candidateCmHandleTrustLevel = - trustLevelPerCmHandle.get(candidateCmHandleReference.getKey()); + trustLevelPerCmHandleId.get(candidateCmHandleReference.getKey()); final TrustLevel effectiveTrustlevel = candidateCmHandleTrustLevel.getEffectiveTrustLevel(dmiTrustLevel); if (targetTrustLevel.equals(effectiveTrustlevel)) { diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelCacheConfig.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelCacheConfig.java index 06ca67e57e..f9ad3ff937 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelCacheConfig.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelCacheConfig.java @@ -21,7 +21,7 @@ package org.onap.cps.ncmp.impl.inventory.trustlevel; import com.hazelcast.config.MapConfig; -import java.util.Map; +import com.hazelcast.map.IMap; import org.onap.cps.ncmp.api.inventory.models.TrustLevel; import org.onap.cps.ncmp.impl.cache.HazelcastCacheConfig; import org.springframework.context.annotation.Bean; @@ -33,7 +33,7 @@ public class TrustLevelCacheConfig extends HazelcastCacheConfig { public static final String TRUST_LEVEL_PER_DMI_PLUGIN = "trustLevelPerDmiPlugin"; public static final String TRUST_LEVEL_PER_CM_HANDLE = "trustLevelPerCmHandle"; - private static final MapConfig trustLevelPerCmHandleCacheConfig = + private static final MapConfig trustLevelPerCmHandleIdCacheConfig = createMapConfig("trustLevelPerCmHandleCacheConfig"); private static final MapConfig trustLevelPerDmiPluginCacheConfig = @@ -45,8 +45,8 @@ public class TrustLevelCacheConfig extends HazelcastCacheConfig { * @return configured map of cm handle name as keys to trust-level for values. */ @Bean(TRUST_LEVEL_PER_CM_HANDLE) - public Map<String, TrustLevel> trustLevelPerCmHandle() { - return getOrCreateHazelcastInstance(trustLevelPerCmHandleCacheConfig).getMap(TRUST_LEVEL_PER_CM_HANDLE); + public IMap<String, TrustLevel> trustLevelPerCmHandleId() { + return getOrCreateHazelcastInstance(trustLevelPerCmHandleIdCacheConfig).getMap(TRUST_LEVEL_PER_CM_HANDLE); } /** @@ -55,7 +55,7 @@ public class TrustLevelCacheConfig extends HazelcastCacheConfig { * @return configured map of dmi-plugin name as keys to trust-level for values. */ @Bean(TRUST_LEVEL_PER_DMI_PLUGIN) - public Map<String, TrustLevel> trustLevelPerDmiPlugin() { + public IMap<String, TrustLevel> trustLevelPerDmiPlugin() { return getOrCreateHazelcastInstance( trustLevelPerDmiPluginCacheConfig).getMap(TRUST_LEVEL_PER_DMI_PLUGIN); } diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManager.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManager.java index 9b0cc3a0c0..a10e8ba308 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManager.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManager.java @@ -20,11 +20,16 @@ package org.onap.cps.ncmp.impl.inventory.trustlevel; +import com.hazelcast.map.IMap; import java.util.Collection; +import java.util.Collections; import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.onap.cps.ncmp.api.inventory.models.DmiPluginRegistration; +import org.onap.cps.ncmp.api.inventory.models.NcmpServiceCmHandle; import org.onap.cps.ncmp.api.inventory.models.TrustLevel; import org.onap.cps.ncmp.impl.inventory.InventoryPersistence; import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle; @@ -39,10 +44,10 @@ import org.springframework.stereotype.Service; public class TrustLevelManager { @Qualifier(TrustLevelCacheConfig.TRUST_LEVEL_PER_CM_HANDLE) - private final Map<String, TrustLevel> trustLevelPerCmHandle; + private final IMap<String, TrustLevel> trustLevelPerCmHandleId; @Qualifier(TrustLevelCacheConfig.TRUST_LEVEL_PER_DMI_PLUGIN) - private final Map<String, TrustLevel> trustLevelPerDmiPlugin; + private final IMap<String, TrustLevel> trustLevelPerDmiPlugin; private final InventoryPersistence inventoryPersistence; private final CmAvcEventPublisher cmAvcEventPublisher; @@ -72,14 +77,14 @@ public class TrustLevelManager { public void registerCmHandles(final Map<String, TrustLevel> cmHandlesToBeCreated) { for (final Map.Entry<String, TrustLevel> entry : cmHandlesToBeCreated.entrySet()) { final String cmHandleId = entry.getKey(); - if (trustLevelPerCmHandle.containsKey(cmHandleId)) { + if (trustLevelPerCmHandleId.containsKey(cmHandleId)) { log.warn("Cm handle: {} already registered", cmHandleId); } else { TrustLevel initialTrustLevel = entry.getValue(); if (initialTrustLevel == null) { initialTrustLevel = TrustLevel.COMPLETE; } - trustLevelPerCmHandle.put(cmHandleId, initialTrustLevel); + trustLevelPerCmHandleId.put(cmHandleId, initialTrustLevel); if (TrustLevel.NONE.equals(initialTrustLevel)) { cmAvcEventPublisher.publishAvcEvent(cmHandleId, AVC_CHANGED_ATTRIBUTE_NAME, @@ -104,7 +109,7 @@ public class TrustLevelManager { final TrustLevel oldDmiTrustLevel = trustLevelPerDmiPlugin.get(dmiServiceName); trustLevelPerDmiPlugin.put(dmiServiceName, newDmiTrustLevel); for (final String affectedCmHandleId : affectedCmHandleIds) { - final TrustLevel cmHandleTrustLevel = trustLevelPerCmHandle.get(affectedCmHandleId); + final TrustLevel cmHandleTrustLevel = trustLevelPerCmHandleId.get(affectedCmHandleId); final TrustLevel oldEffectiveTrustLevel = cmHandleTrustLevel.getEffectiveTrustLevel(oldDmiTrustLevel); final TrustLevel newEffectiveTrustLevel = cmHandleTrustLevel.getEffectiveTrustLevel(newDmiTrustLevel); sendAvcNotificationIfRequired(affectedCmHandleId, oldEffectiveTrustLevel, newEffectiveTrustLevel); @@ -123,25 +128,42 @@ public class TrustLevelManager { final String dmiServiceName = getDmiServiceName(cmHandleId); final TrustLevel dmiTrustLevel = trustLevelPerDmiPlugin.get(dmiServiceName); - final TrustLevel oldCmHandleTrustLevel = trustLevelPerCmHandle.get(cmHandleId); + final TrustLevel oldCmHandleTrustLevel = trustLevelPerCmHandleId.get(cmHandleId); final TrustLevel oldEffectiveTrustLevel = oldCmHandleTrustLevel.getEffectiveTrustLevel(dmiTrustLevel); final TrustLevel newEffectiveTrustLevel = newCmHandleTrustLevel.getEffectiveTrustLevel(dmiTrustLevel); - trustLevelPerCmHandle.put(cmHandleId, newCmHandleTrustLevel); + trustLevelPerCmHandleId.put(cmHandleId, newCmHandleTrustLevel); sendAvcNotificationIfRequired(cmHandleId, oldEffectiveTrustLevel, newEffectiveTrustLevel); } /** - * Select effective trust level among device and dmi plugin. + * Apply effective trust levels for a collection of cm handles. + * Effective trust level is the trust level of the cm handle or its dmi plugin, whichever is lower. * - * @param cmHandleId cm handle id - * @return TrustLevel effective trust level + * @param ncmpServiceCmHandles a collection of cm handles to apply trust levels to */ - public TrustLevel getEffectiveTrustLevel(final String cmHandleId) { - final TrustLevel dmiTrustLevel = TrustLevel.COMPLETE; // TODO: CPS-2375 - final TrustLevel cmHandleTrustLevel = trustLevelPerCmHandle.getOrDefault(cmHandleId, TrustLevel.NONE); - return dmiTrustLevel.getEffectiveTrustLevel(cmHandleTrustLevel); + public void applyEffectiveTrustLevels(final Collection<NcmpServiceCmHandle> ncmpServiceCmHandles) { + final Set<String> cmHandleIds = getCmHandleIds(ncmpServiceCmHandles); + final Map<String, TrustLevel> trustLevelPerCmHandleIdInBatch = trustLevelPerCmHandleId.getAll(cmHandleIds); + for (final NcmpServiceCmHandle ncmpServiceCmHandle : ncmpServiceCmHandles) { + final String cmHandleId = ncmpServiceCmHandle.getCmHandleId(); + final TrustLevel dmiTrustLevel = TrustLevel.COMPLETE; // TODO: CPS-2375 + final TrustLevel cmHandleTrustLevel = trustLevelPerCmHandleIdInBatch.getOrDefault(cmHandleId, + TrustLevel.NONE); + final TrustLevel effectiveTrustLevel = dmiTrustLevel.getEffectiveTrustLevel(cmHandleTrustLevel); + ncmpServiceCmHandle.setCurrentTrustLevel(effectiveTrustLevel); + } + } + + /** + * Apply effective trust level to a cm handle. + * Effective trust level is the trust level of the cm handle or its dmi plugin, whichever is lower. + * + * @param ncmpServiceCmHandle cm handle to apply trust level to + */ + public void applyEffectiveTrustLevel(final NcmpServiceCmHandle ncmpServiceCmHandle) { + applyEffectiveTrustLevels(Collections.singletonList(ncmpServiceCmHandle)); } /** @@ -151,12 +173,18 @@ public class TrustLevelManager { */ public void removeCmHandles(final Collection<String> cmHandleIds) { for (final String cmHandleId : cmHandleIds) { - if (trustLevelPerCmHandle.remove(cmHandleId) == null) { + if (trustLevelPerCmHandleId.remove(cmHandleId) == null) { log.debug("Removed Cm handle: {} is not in trust level cache", cmHandleId); } } } + private Set<String> getCmHandleIds(final Collection<NcmpServiceCmHandle> ncmpServiceCmHandles) { + return ncmpServiceCmHandles.stream() + .map(NcmpServiceCmHandle::getCmHandleId) + .collect(Collectors.toUnmodifiableSet()); + } + private String getDmiServiceName(final String cmHandleId) { final YangModelCmHandle yangModelCmHandle = inventoryPersistence.getYangModelCmHandle(cmHandleId); return yangModelCmHandle.resolveDmiServiceName(RequiredDmiService.DATA); diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/CmHandleQueryServiceImplSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/CmHandleQueryServiceImplSpec.groovy index ce08156fec..9d26d23881 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/CmHandleQueryServiceImplSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/CmHandleQueryServiceImplSpec.groovy @@ -43,11 +43,11 @@ class CmHandleQueryServiceImplSpec extends Specification { def trustLevelPerDmiPlugin = [:] - def trustLevelPerCmHandle = [ 'PNFDemo': TrustLevel.COMPLETE, 'PNFDemo2': TrustLevel.NONE, 'PNFDemo4': TrustLevel.NONE ] + def trustLevelPerCmHandleId = [ 'PNFDemo': TrustLevel.COMPLETE, 'PNFDemo2': TrustLevel.NONE, 'PNFDemo4': TrustLevel.NONE ] def mockCpsValidator = Mock(CpsValidator) - def objectUnderTest = new CmHandleQueryServiceImpl(mockCpsDataService, mockCpsQueryService, trustLevelPerDmiPlugin, trustLevelPerCmHandle, mockCpsValidator) + def objectUnderTest = new CmHandleQueryServiceImpl(mockCpsDataService, mockCpsQueryService, trustLevelPerDmiPlugin, trustLevelPerCmHandleId, mockCpsValidator) @Shared def static sampleDataNodes = [new DataNode()] diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/NetworkCmProxyInventoryFacadeSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/NetworkCmProxyInventoryFacadeSpec.groovy index 282bd9e89b..dc93747085 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/NetworkCmProxyInventoryFacadeSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/NetworkCmProxyInventoryFacadeSpec.groovy @@ -121,10 +121,9 @@ class NetworkCmProxyInventoryFacadeSpec extends Specification { def alternateId = 'some-alternate-id' def yangModelCmHandle = new YangModelCmHandle(id: 'some-cm-handle', dmiServiceName: dmiServiceName, dmiProperties: dmiProperties, publicProperties: publicProperties, compositeState: compositeState, moduleSetTag: moduleSetTag, alternateId: alternateId) - mockAlternateIdMatcher.getCmHandleId(cmHandleRef) >> 'some-cm-handle' + 1 * mockAlternateIdMatcher.getCmHandleId(cmHandleRef) >> 'some-cm-handle' 1 * mockInventoryPersistence.getYangModelCmHandle('some-cm-handle') >> yangModelCmHandle - and: 'a trust level for the cm handle in the cache' - mockTrustLevelManager.getEffectiveTrustLevel(*_) >> TrustLevel.COMPLETE + 1 * mockTrustLevelManager.applyEffectiveTrustLevel(_) >> { args -> args[0].currentTrustLevel = TrustLevel.COMPLETE } when: 'getting cm handle details for a given cm handle id from ncmp service' def result = objectUnderTest.getNcmpServiceCmHandle(cmHandleRef) then: 'the result is a ncmpServiceCmHandle' @@ -251,7 +250,7 @@ class NetworkCmProxyInventoryFacadeSpec extends Specification { spiedJsonObjectMapper.convertToValueType(cmHandleQueryApiParameters, CmHandleQueryServiceParameters.class)) >> [new NcmpServiceCmHandle(cmHandleId: 'ch-0'), new NcmpServiceCmHandle(cmHandleId: 'ch-1')] and: 'a trust level for cm handles' - mockTrustLevelManager.getEffectiveTrustLevel(*_) >> TrustLevel.COMPLETE + 1 * mockTrustLevelManager.applyEffectiveTrustLevels(_) >> { args -> args[0].forEach{it.currentTrustLevel = TrustLevel.COMPLETE } } when: 'execute cm handle search is called' def result = objectUnderTest.executeCmHandleSearch(cmHandleQueryApiParameters) then: 'result consists of the two cm handles returned by the CPS Data Service' diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelCacheConfigSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelCacheConfigSpec.groovy index 9391fa0f44..20b1c1c335 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelCacheConfigSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelCacheConfigSpec.groovy @@ -22,8 +22,10 @@ package org.onap.cps.ncmp.impl.inventory.trustlevel import com.hazelcast.config.Config import com.hazelcast.core.Hazelcast +import com.hazelcast.map.IMap import org.onap.cps.ncmp.api.inventory.models.TrustLevel import org.springframework.beans.factory.annotation.Autowired +import org.springframework.beans.factory.annotation.Qualifier import org.springframework.boot.test.context.SpringBootTest import spock.lang.Specification @@ -31,10 +33,12 @@ import spock.lang.Specification class TrustLevelCacheConfigSpec extends Specification { @Autowired - private Map<String, TrustLevel> trustLevelPerDmiPlugin + @Qualifier(TrustLevelCacheConfig.TRUST_LEVEL_PER_DMI_PLUGIN) + private IMap<String, TrustLevel> trustLevelPerDmiPlugin @Autowired - private Map<String, TrustLevel> trustLevelPerCmHandle + @Qualifier(TrustLevelCacheConfig.TRUST_LEVEL_PER_CM_HANDLE) + private IMap<String, TrustLevel> trustLevelPerCmHandleId def cleanupSpec() { Hazelcast.getHazelcastInstanceByName('cps-and-ncmp-hazelcast-instance-test-config').shutdown() @@ -51,7 +55,7 @@ class TrustLevelCacheConfigSpec extends Specification { def 'Hazelcast cache for trust level per cm handle'() { expect: 'system is able to create an instance of the trust level per cm handle cache' - assert null != trustLevelPerCmHandle + assert null != trustLevelPerCmHandleId and: 'there is at least 1 instance' assert Hazelcast.allHazelcastInstances.size() > 0 and: 'Hazelcast cache instance for trust level is present' diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy index e0f5f9c4f8..4f41f2cbb1 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy @@ -20,30 +20,49 @@ package org.onap.cps.ncmp.impl.inventory.trustlevel +import com.hazelcast.core.Hazelcast +import com.hazelcast.map.IMap import org.onap.cps.ncmp.api.inventory.models.DmiPluginRegistration +import org.onap.cps.ncmp.api.inventory.models.NcmpServiceCmHandle import org.onap.cps.ncmp.api.inventory.models.TrustLevel import org.onap.cps.ncmp.impl.inventory.InventoryPersistence import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle import org.onap.cps.ncmp.utils.events.CmAvcEventPublisher -import spock.lang.Ignore import spock.lang.Specification class TrustLevelManagerSpec extends Specification { - def trustLevelPerCmHandle = [:] - def trustLevelPerDmiPlugin = [:] + TrustLevelManager objectUnderTest + + def hazelcastInstance + IMap<String, TrustLevel> trustLevelPerCmHandleId + IMap<String, TrustLevel> trustLevelPerDmiPlugin def mockInventoryPersistence = Mock(InventoryPersistence) def mockAttributeValueChangeEventPublisher = Mock(CmAvcEventPublisher) - def objectUnderTest = new TrustLevelManager(trustLevelPerCmHandle, trustLevelPerDmiPlugin, mockInventoryPersistence, mockAttributeValueChangeEventPublisher) + + def setup() { + hazelcastInstance = Hazelcast.newHazelcastInstance() + trustLevelPerCmHandleId = hazelcastInstance.getMap("trustLevelPerCmHandle") + trustLevelPerDmiPlugin = hazelcastInstance.getMap("trustLevelPerCmHandle") + objectUnderTest = new TrustLevelManager(trustLevelPerCmHandleId, trustLevelPerDmiPlugin, mockInventoryPersistence, mockAttributeValueChangeEventPublisher) + } + + def cleanup() { + hazelcastInstance.shutdown() + } def 'Initial dmi registration'() { given: 'a dmi plugin' - def dmiPluginRegistration = new DmiPluginRegistration(dmiPlugin: 'dmi-1') + def dmiPluginRegistration = new DmiPluginRegistration(dmiPlugin: dmiPlugin, dmiDataPlugin: dmiDataPlugin) when: 'method to register to the cache is called' objectUnderTest.registerDmiPlugin(dmiPluginRegistration) then: 'dmi plugin in the cache and trusted' - assert trustLevelPerDmiPlugin.get('dmi-1') == TrustLevel.COMPLETE + assert trustLevelPerDmiPlugin.get(expectedDmiPlugin) == TrustLevel.COMPLETE + where: 'the following parameters are used' + dmiPlugin | dmiDataPlugin || expectedDmiPlugin + 'dmi-1' | '' || 'dmi-1' + '' | 'dmi-2' || 'dmi-2' } def 'Initial cm handle registration'() { @@ -54,8 +73,21 @@ class TrustLevelManagerSpec extends Specification { then: 'no notification sent' 0 * mockAttributeValueChangeEventPublisher.publishAvcEvent(*_) and: 'both cm handles are in the cache and are trusted' - assert trustLevelPerCmHandle.get('ch-1') == TrustLevel.COMPLETE - assert trustLevelPerCmHandle.get('ch-2') == TrustLevel.COMPLETE + assert trustLevelPerCmHandleId.get('ch-1') == TrustLevel.COMPLETE + assert trustLevelPerCmHandleId.get('ch-2') == TrustLevel.COMPLETE + } + + def 'Initial cm handle registration where a cm handle is already in the cache'() { + given: 'a trusted cm handle' + def cmHandleModelsToBeCreated = ['ch-1': TrustLevel.NONE] + and: 'the cm handle id already in the cache' + trustLevelPerCmHandleId.put('ch-1', TrustLevel.COMPLETE) + when: 'method to register to the cache is called' + objectUnderTest.registerCmHandles(cmHandleModelsToBeCreated) + then: 'no notification sent' + 0 * mockAttributeValueChangeEventPublisher.publishAvcEvent(*_) + and: 'cm handle cache is not updated' + assert trustLevelPerCmHandleId.get('ch-1') == TrustLevel.COMPLETE } def 'Initial cm handle registration with a cm handle that is not trusted'() { @@ -71,7 +103,7 @@ class TrustLevelManagerSpec extends Specification { given: 'a trusted dmi plugin' trustLevelPerDmiPlugin.put('my-dmi', TrustLevel.COMPLETE) and: 'a trusted cm handle' - trustLevelPerCmHandle.put('ch-1', TrustLevel.COMPLETE) + trustLevelPerCmHandleId.put('ch-1', TrustLevel.COMPLETE) when: 'the update is handled' objectUnderTest.updateDmi('my-dmi', ['ch-1'], TrustLevel.NONE) then: 'notification is sent' @@ -84,7 +116,7 @@ class TrustLevelManagerSpec extends Specification { given: 'a trusted dmi plugin' trustLevelPerDmiPlugin.put('my-dmi', TrustLevel.COMPLETE) and: 'a trusted cm handle' - trustLevelPerCmHandle.put('ch-1', TrustLevel.COMPLETE) + trustLevelPerCmHandleId.put('ch-1', TrustLevel.COMPLETE) when: 'the update is handled' objectUnderTest.updateDmi('my-dmi', ['ch-1'], TrustLevel.COMPLETE) then: 'no notification is sent' @@ -95,7 +127,7 @@ class TrustLevelManagerSpec extends Specification { def 'CmHandle trust level updated'() { given: 'a non trusted cm handle' - trustLevelPerCmHandle.put('ch-1', TrustLevel.NONE) + trustLevelPerCmHandleId.put('ch-1', TrustLevel.NONE) and: 'a trusted dmi plugin' trustLevelPerDmiPlugin.put('my-dmi', TrustLevel.COMPLETE) and: 'inventory persistence service returns yang model cm handle' @@ -103,14 +135,14 @@ class TrustLevelManagerSpec extends Specification { when: 'update of CmHandle to COMPLETE trust level handled' objectUnderTest.updateCmHandleTrustLevel('ch-1', TrustLevel.COMPLETE) then: 'the cm handle in the cache is trusted' - assert trustLevelPerCmHandle.get('ch-1', TrustLevel.COMPLETE) + assert trustLevelPerCmHandleId.get('ch-1', TrustLevel.COMPLETE) and: 'notification is sent' 1 * mockAttributeValueChangeEventPublisher.publishAvcEvent('ch-1', 'trustLevel', 'NONE', 'COMPLETE') } def 'CmHandle trust level updated with same value'() { given: 'a non trusted cm handle' - trustLevelPerCmHandle.put('ch-1', TrustLevel.NONE) + trustLevelPerCmHandleId.put('ch-1', TrustLevel.NONE) and: 'a trusted dmi plugin' trustLevelPerDmiPlugin.put('my-dmi', TrustLevel.COMPLETE) and: 'inventory persistence service returns yang model cm handle' @@ -118,7 +150,7 @@ class TrustLevelManagerSpec extends Specification { when: 'update of CmHandle trust to the same level (NONE)' objectUnderTest.updateCmHandleTrustLevel('ch-1', TrustLevel.NONE) then: 'the cm handle in the cache is not trusted' - assert trustLevelPerCmHandle.get('ch-1', TrustLevel.NONE) + assert trustLevelPerCmHandleId.get('ch-1', TrustLevel.NONE) and: 'no notification is sent' 0 * mockAttributeValueChangeEventPublisher.publishAvcEvent(*_) } @@ -127,40 +159,63 @@ class TrustLevelManagerSpec extends Specification { given: 'a non trusted dmi' trustLevelPerDmiPlugin.put('my-dmi', TrustLevel.NONE) and: 'a non trusted CmHandle' - trustLevelPerCmHandle.put('ch-1', TrustLevel.NONE) + trustLevelPerCmHandleId.put('ch-1', TrustLevel.NONE) when: 'restore the dmi trust level to COMPLETE' objectUnderTest.updateDmi('my-dmi', ['ch-1'], TrustLevel.COMPLETE) then: 'the cm handle in the cache is still NONE' - assert trustLevelPerCmHandle.get('ch-1') == TrustLevel.NONE + assert trustLevelPerCmHandleId.get('ch-1') == TrustLevel.NONE and: 'no notification is sent' 0 * mockAttributeValueChangeEventPublisher.publishAvcEvent(*_) } - @Ignore - // TODO: CPS-2375 - def 'Select effective trust level among CmHandle and dmi plugin'() { + def 'Apply effective trust level among CmHandle and dmi plugin'() { given: 'a non trusted dmi' trustLevelPerDmiPlugin.put('my-dmi', TrustLevel.NONE) and: 'a trusted CmHandle' - trustLevelPerCmHandle.put('ch-1', TrustLevel.COMPLETE) + trustLevelPerCmHandleId.put('ch-1', TrustLevel.COMPLETE) + and: 'a cm handle object' + def ncmpServiceCmHandle = new NcmpServiceCmHandle(cmHandleId: 'ch-1') when: 'effective trust level selected' - def effectiveTrustLevel = objectUnderTest.getEffectiveTrustLevel('ch-1') + objectUnderTest.applyEffectiveTrustLevel(ncmpServiceCmHandle) then: 'effective trust level is trusted' - assert effectiveTrustLevel == TrustLevel.NONE + // FIXME CPS-2375: the expected behaviour is to return the lower TrustLevel (NONE) + assert ncmpServiceCmHandle.currentTrustLevel == TrustLevel.COMPLETE + } + + def 'Apply effective trust levels from CmHandle batch'() { + given: 'a non trusted dmi' + trustLevelPerDmiPlugin.put('my-dmi', TrustLevel.NONE) + and: 'a trusted CmHandle' + trustLevelPerCmHandleId.put('ch-1', TrustLevel.COMPLETE) + and: 'a not trusted CmHandle' + trustLevelPerCmHandleId.put('ch-2', TrustLevel.NONE) + and: 'cm handle objects' + def ncmpServiceCmHandle1 = new NcmpServiceCmHandle(cmHandleId: 'ch-1') + def ncmpServiceCmHandle2 = new NcmpServiceCmHandle(cmHandleId: 'ch-2') + when: 'effective trust level selected' + objectUnderTest.applyEffectiveTrustLevels([ncmpServiceCmHandle1, ncmpServiceCmHandle2]) + then: 'effective trust levels are correctly applied' + // FIXME CPS-2375: the expected behaviour is to return the lower TrustLevel (NONE) + assert ncmpServiceCmHandle1.currentTrustLevel == TrustLevel.COMPLETE + assert ncmpServiceCmHandle2.currentTrustLevel == TrustLevel.NONE } - def 'Select effective trust level when the trust level caches are empty (restart case)'() { - expect: 'effective trust level is NONE when cm-1 does not exist in the cache' - assert objectUnderTest.getEffectiveTrustLevel('ch-1') == TrustLevel.NONE + def 'Apply effective trust level when the trust level caches are empty (restart case)'() { + given: 'a cm-handle that is not in the cache' + def ncmpServiceCmHandle = new NcmpServiceCmHandle(cmHandleId: 'ch-1') + when: 'effective trust level is applied' + objectUnderTest.applyEffectiveTrustLevel(ncmpServiceCmHandle) + then: + assert ncmpServiceCmHandle.currentTrustLevel == TrustLevel.NONE } def 'CmHandle trust level removed'() { given: 'a cm handle' - trustLevelPerCmHandle.put('ch-1', TrustLevel.COMPLETE) + trustLevelPerCmHandleId.put('ch-1', TrustLevel.COMPLETE) when: 'the remove is handled' objectUnderTest.removeCmHandles(['ch-1']) then: 'cm handle removed from the cache' - assert trustLevelPerCmHandle.get('ch-1') == null + assert trustLevelPerCmHandleId.get('ch-1') == null } } diff --git a/cps-parent/pom.xml b/cps-parent/pom.xml index 18c414c754..458acc595f 100644 --- a/cps-parent/pom.xml +++ b/cps-parent/pom.xml @@ -27,7 +27,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> diff --git a/cps-path-parser/pom.xml b/cps-path-parser/pom.xml index 9021bf6e50..469357462e 100644 --- a/cps-path-parser/pom.xml +++ b/cps-path-parser/pom.xml @@ -23,7 +23,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-rest/pom.xml b/cps-rest/pom.xml index 32dce45a8f..b04daf03bd 100644 --- a/cps-rest/pom.xml +++ b/cps-rest/pom.xml @@ -27,7 +27,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-ri/pom.xml b/cps-ri/pom.xml index 96039b6b84..f18c2505fd 100644 --- a/cps-ri/pom.xml +++ b/cps-ri/pom.xml @@ -26,7 +26,7 @@ <parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.5.6-SNAPSHOT</version>
+ <version>3.6.0-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
diff --git a/cps-service/pom.xml b/cps-service/pom.xml index eecf7a1c8b..7dda1327e0 100644 --- a/cps-service/pom.xml +++ b/cps-service/pom.xml @@ -30,7 +30,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/integration-test/pom.xml b/integration-test/pom.xml index 7c0461847d..531d353b0c 100644 --- a/integration-test/pom.xml +++ b/integration-test/pom.xml @@ -23,7 +23,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/jacoco-report/pom.xml b/jacoco-report/pom.xml index b2fa75ebc2..be1d42788d 100644 --- a/jacoco-report/pom.xml +++ b/jacoco-report/pom.xml @@ -5,7 +5,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/k6-tests/ncmp/common/utils.js b/k6-tests/ncmp/common/utils.js index 8abe54c0cb..b937b4beb3 100644 --- a/k6-tests/ncmp/common/utils.js +++ b/k6-tests/ncmp/common/utils.js @@ -87,18 +87,18 @@ export function makeCustomSummaryReport(testResults, scenarioConfig) { const summaryCsvLines = [ '#,Test Name,Unit,Fs Requirement,Current Expectation,Actual', makeSummaryCsvLine('0', 'HTTP request failures for all tests', 'rate of failed requests', 'http_req_failed', 0, testResults, scenarioConfig), - makeSummaryCsvLine('1', 'Registration of CM-handles', 'CM-handles/second', 'cmhandles_created_per_second', 70, testResults, scenarioConfig), - makeSummaryCsvLine('2', 'De-registration of CM-handles', 'CM-handles/second', 'cmhandles_deleted_per_second', 90, testResults, scenarioConfig), - makeSummaryCsvLine('3a', 'CM-handle ID search with No filter', 'milliseconds', 'id_search_nofilter_duration', 400, testResults, scenarioConfig), - makeSummaryCsvLine('3b', 'CM-handle ID search with Module filter', 'milliseconds', 'id_search_module_duration', 200, testResults, scenarioConfig), - makeSummaryCsvLine('3c', 'CM-handle ID search with Property filter', 'milliseconds', 'id_search_property_duration', 1300, testResults, scenarioConfig), - makeSummaryCsvLine('3d', 'CM-handle ID search with Cps Path filter', 'milliseconds', 'id_search_cpspath_duration', 1300, testResults, scenarioConfig), - makeSummaryCsvLine('3e', 'CM-handle ID search with Trust Level filter', 'milliseconds', 'id_search_trustlevel_duration', 10000, testResults, scenarioConfig), - makeSummaryCsvLine('4a', 'CM-handle search with No filter', 'milliseconds', 'cm_search_nofilter_duration', 14000, testResults, scenarioConfig), - makeSummaryCsvLine('4b', 'CM-handle search with Module filter', 'milliseconds', 'cm_search_module_duration', 16000, testResults, scenarioConfig), - makeSummaryCsvLine('4c', 'CM-handle search with Property filter', 'milliseconds', 'cm_search_property_duration', 16000, testResults, scenarioConfig), - makeSummaryCsvLine('4d', 'CM-handle search with Cps Path filter', 'milliseconds', 'cm_search_cpspath_duration', 16000, testResults, scenarioConfig), - makeSummaryCsvLine('4e', 'CM-handle search with Trust Level filter', 'milliseconds', 'cm_search_trustlevel_duration', 26000, testResults, scenarioConfig), + makeSummaryCsvLine('1', 'Registration of CM-handles', 'CM-handles/second', 'cmhandles_created_per_second', 50, testResults, scenarioConfig), + makeSummaryCsvLine('2', 'De-registration of CM-handles', 'CM-handles/second', 'cmhandles_deleted_per_second', 100, testResults, scenarioConfig), + makeSummaryCsvLine('3a', 'CM-handle ID search with No filter', 'milliseconds', 'id_search_nofilter_duration', 500, testResults, scenarioConfig), + makeSummaryCsvLine('3b', 'CM-handle ID search with Module filter', 'milliseconds', 'id_search_module_duration', 500, testResults, scenarioConfig), + makeSummaryCsvLine('3c', 'CM-handle ID search with Property filter', 'milliseconds', 'id_search_property_duration', 1200, testResults, scenarioConfig), + makeSummaryCsvLine('3d', 'CM-handle ID search with Cps Path filter', 'milliseconds', 'id_search_cpspath_duration', 1200, testResults, scenarioConfig), + makeSummaryCsvLine('3e', 'CM-handle ID search with Trust Level filter', 'milliseconds', 'id_search_trustlevel_duration', 4200, testResults, scenarioConfig), + makeSummaryCsvLine('4a', 'CM-handle search with No filter', 'milliseconds', 'cm_search_nofilter_duration', 8000, testResults, scenarioConfig), + makeSummaryCsvLine('4b', 'CM-handle search with Module filter', 'milliseconds', 'cm_search_module_duration', 10000, testResults, scenarioConfig), + makeSummaryCsvLine('4c', 'CM-handle search with Property filter', 'milliseconds', 'cm_search_property_duration', 10000, testResults, scenarioConfig), + makeSummaryCsvLine('4d', 'CM-handle search with Cps Path filter', 'milliseconds', 'cm_search_cpspath_duration', 10000, testResults, scenarioConfig), + makeSummaryCsvLine('4e', 'CM-handle search with Trust Level filter', 'milliseconds', 'cm_search_trustlevel_duration', 13000, testResults, scenarioConfig), makeSummaryCsvLine('5a', 'NCMP overhead for Synchronous single CM-handle pass-through read', 'milliseconds', 'ncmp_overhead_passthrough_read', 30, testResults, scenarioConfig), makeSummaryCsvLine('5b', 'NCMP overhead for Synchronous single CM-handle pass-through read with alternate id', 'milliseconds', 'ncmp_overhead_passthrough_read_alt_id', 60, testResults, scenarioConfig), makeSummaryCsvLine('6a', 'NCMP overhead for Synchronous single CM-handle pass-through write', 'milliseconds', 'ncmp_overhead_passthrough_write', 30, testResults, scenarioConfig), diff --git a/policy-executor-stub/pom.xml b/policy-executor-stub/pom.xml index 073b5d1dc6..bdd21e191f 100644 --- a/policy-executor-stub/pom.xml +++ b/policy-executor-stub/pom.xml @@ -6,7 +6,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> @@ -27,7 +27,7 @@ <modelVersion>4.0.0</modelVersion>
<groupId>org.onap.cps</groupId>
<artifactId>cps-aggregator</artifactId>
- <version>3.5.6-SNAPSHOT</version>
+ <version>3.6.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>cps</name>
diff --git a/spotbugs/pom.xml b/spotbugs/pom.xml index 56a819a796..8c685e95bc 100644 --- a/spotbugs/pom.xml +++ b/spotbugs/pom.xml @@ -25,7 +25,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.onap.cps</groupId> <artifactId>spotbugs</artifactId> - <version>3.5.6-SNAPSHOT</version> + <version>3.6.0-SNAPSHOT</version> <properties> <onap.nexus.url>https://nexus.onap.org</onap.nexus.url> diff --git a/version.properties b/version.properties index ea83a94fe9..81372a7e58 100644 --- a/version.properties +++ b/version.properties @@ -21,8 +21,8 @@ # because they are used in Jenkins, whose plug-in doesn't support this major=3 -minor=5 -patch=6 +minor=6 +patch=0 base_version=${major}.${minor}.${patch} |