Toggle subscription persistence for model loader 37/134037/1
authorlukegleeson <luke.gleeson@est.tech>
Thu, 6 Apr 2023 14:36:40 +0000 (15:36 +0100)
committerlukegleeson <luke.gleeson@est.tech>
Thu, 6 Apr 2023 14:52:34 +0000 (15:52 +0100)
Current implementation will attempt to persist the subscription model for subscription create events even when the model loader is disabled which causes a persistence error. Subscription Model will now be persisted based on whether the model loader is enabled

Issue-ID: CPS-1394
Signed-off-by: lukegleeson <luke.gleeson@est.tech>
Change-Id: I8f8cfc47996eed6b95fd3958996f16c8395dc341

cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumer.java
cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumerSpec.groovy

index 1361d98..2685ce4 100644 (file)
@@ -44,6 +44,9 @@ public class SubscriptionEventConsumer {
     @Value("${notification.enabled:true}")
     private boolean notificationFeatureEnabled;
 
+    @Value("${ncmp.model-loader.subscription:false}")
+    private boolean subscriptionModelLoaderEnabled;
+
     /**
      * Consume the specified event.
      *
@@ -60,7 +63,9 @@ public class SubscriptionEventConsumer {
         }
         if ("CM".equals(event.getDataType().getDataCategory())) {
             log.debug("Consuming event {} ...", subscriptionEvent);
-            persistSubscriptionEvent(subscriptionEvent);
+            if (subscriptionModelLoaderEnabled) {
+                persistSubscriptionEvent(subscriptionEvent);
+            }
             if ("CREATE".equals(subscriptionEvent.getEventType().value())) {
                 log.info("Subscription for ClientID {} with name {} ...",
                         event.getSubscription().getClientID(),
index 248eb8b..d801e4d 100644 (file)
@@ -50,6 +50,8 @@ class SubscriptionEventConsumerSpec extends MessagingBaseSpec {
             def testEventSent = jsonObjectMapper.convertJsonString(jsonData, SubscriptionEvent.class)
         and: 'notifications are enabled'
             objectUnderTest.notificationFeatureEnabled = true
+        and: 'subscription model loader is enabled'
+            objectUnderTest.subscriptionModelLoaderEnabled = true
         when: 'the valid event is consumed'
             objectUnderTest.consumeSubscriptionEvent(testEventSent)
         then: 'the event is mapped to a yangModelSubscription'
@@ -60,18 +62,20 @@ class SubscriptionEventConsumerSpec extends MessagingBaseSpec {
             1 * mockSubscriptionEventForwarder.forwardCreateSubscriptionEvent(testEventSent)
     }
 
-    def 'Consume and persist valid CM create message where notifications are disabled'() {
+    def 'Consume valid CM create message where notifications and model loader are disabled'() {
         given: 'an event with data category CM'
             def jsonData = TestUtils.getResourceFileContent('avcSubscriptionCreationEvent.json')
             def testEventSent = jsonObjectMapper.convertJsonString(jsonData, SubscriptionEvent.class)
         and: 'notifications are disabled'
             objectUnderTest.notificationFeatureEnabled = false
+        and: 'subscription model loader is disabled'
+            objectUnderTest.subscriptionModelLoaderEnabled = false
         when: 'the valid event is consumed'
             objectUnderTest.consumeSubscriptionEvent(testEventSent)
-        then: 'the event is mapped to a yangModelSubscription'
-            1 * mockSubscriptionEventMapper.toYangModelSubscriptionEvent(testEventSent) >> yangModelSubscriptionEvent
-        and: 'the event is persisted'
-            1 * mockSubscriptionPersistence.saveSubscriptionEvent(yangModelSubscriptionEvent)
+        then: 'the event is not mapped to a yangModelSubscription'
+            0 * mockSubscriptionEventMapper.toYangModelSubscriptionEvent(*_) >> yangModelSubscriptionEvent
+        and: 'the event is not persisted'
+            0 * mockSubscriptionPersistence.saveSubscriptionEvent(*_)
         and: 'the event is not forwarded'
             0 * mockSubscriptionEventForwarder.forwardCreateSubscriptionEvent(*_)
     }