Merge "Update DMI Registry yang to support DataStoreSyncState"
authorToine Siebelink <toine.siebelink@est.tech>
Wed, 11 May 2022 15:22:33 +0000 (15:22 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 11 May 2022 15:22:33 +0000 (15:22 +0000)
cps-application/src/main/resources/application.yml
cps-dependencies/pom.xml
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/NcmpConfiguration.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncWatchdog.java
cps-ncmp-service/src/test/resources/application.yml
cps-service/pom.xml
cps-service/src/main/resources/logback-spring.xml
csit/plans/cps/setup.sh
docs/deployment.rst

index 4dfeee8..00424a5 100644 (file)
@@ -124,15 +124,19 @@ management:
                 enabled: true\r
 \r
 logging:\r
+    format: json\r
     level:\r
         org:\r
             springframework: INFO\r
             onap:\r
                 cps: INFO\r
-\r
-dmi:\r
-    auth:\r
-        username: ${DMI_USERNAME}\r
-        password: ${DMI_PASSWORD}\r
-    api:\r
-        base-path: dmi\r
+ncmp:\r
+    dmi:\r
+        auth:\r
+            username: ${DMI_USERNAME}\r
+            password: ${DMI_PASSWORD}\r
+        api:\r
+            base-path: dmi\r
+    timers:\r
+        advised-modules-sync:\r
+            sleep-time-ms: 30000
\ No newline at end of file
index dcbc5f7..73cca23 100755 (executable)
                 <artifactId>mapstruct-processor</artifactId>
                 <version>${mapstruct.version}</version>
             </dependency>
+            <dependency>
+                <groupId>net.logstash.logback</groupId>
+                <artifactId>logstash-logback-encoder</artifactId>
+                <version>7.0.1</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.janino</groupId>
+                <artifactId>janino</artifactId>
+                <version>3.1.7</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 </project>
index 60b44c2..3aa17b7 100644 (file)
@@ -38,11 +38,11 @@ public class NcmpConfiguration {
     @Getter
     @Component
     public static class DmiProperties {
-        @Value("${dmi.auth.username}")
+        @Value("${ncmp.dmi.auth.username}")
         private String authUsername;
-        @Value("${dmi.auth.password}")
+        @Value("${ncmp.dmi.auth.password}")
         private String authPassword;
-        @Value("${dmi.api.base-path}")
+        @Value("${ncmp.dmi.api.base-path}")
         private String dmiBasePath;
     }
 
index 6941317..0d8f852 100644 (file)
@@ -38,7 +38,7 @@ public class ModuleSyncWatchdog {
     /**
      * Execute Cm Handle poll which changes the cm handle state from 'ADVISED' to 'READY'.
      */
-    @Scheduled(fixedDelay = 30000)
+    @Scheduled(fixedDelayString = "${ncmp.timers.advised-modules-sync.sleep-time-ms}")
     public void executeAdvisedCmHandlePoll() {
         YangModelCmHandle newAdvisedCmHandle = syncUtils.getAnAdvisedCmHandle();
         while (newAdvisedCmHandle != null) {
index c23926e..c259bf0 100644 (file)
 #  SPDX-License-Identifier: Apache-2.0
 #  ============LICENSE_END=========================================================
 
-dmi:
-    auth:
-        username: some-user
-        password: some-password
-    api:
-        base-path: dmi
+ncmp:
+    dmi:
+        auth:
+            username: some-user
+            password: some-password
+        api:
+            base-path: dmi
 
index aea122d..b9d6268 100644 (file)
       <groupId>org.springframework.boot</groupId>\r
       <artifactId>spring-boot-starter-aop</artifactId>\r
     </dependency>\r
+    <dependency>\r
+      <groupId>net.logstash.logback</groupId>\r
+      <artifactId>logstash-logback-encoder</artifactId>\r
+    </dependency>\r
+    <dependency>\r
+      <groupId>org.codehaus.janino</groupId>\r
+      <artifactId>janino</artifactId>\r
+    </dependency>\r
     <!-- T E S T   D E P E N D E N C I E S -->\r
     <dependency>\r
       <groupId>org.codehaus.groovy</groupId>\r
index 3bba9f1..0307602 100644 (file)
@@ -1,6 +1,6 @@
 <!--
  ============LICENSE_START=======================================================
- Copyright (C) 2021 Nordix Foundation
+ Copyright (C) 2021-2022 Nordix Foundation
  ================================================================================
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  ============LICENSE_END=========================================================
 -->
 
-<configuration scan="true" debug="false">
-    <include resource="org/springframework/boot/logging/logback/base.xml" />
-
-    <property name="queueSize" value="256" />
-    <property name="maxFileSize" value="20MB" />
-    <property name="maxHistory" value="30" />
-    <property name="totalSizeCap" value="20MB" />
-
-    <!-- log file names -->
-    <property name="logName" value="cps" />
-
-    <property name="currentTimeStamp" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;,UTC}"/>
-
-    <property name="debugPattern"
-        value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%thread|%X{RequestID}| %logger{50} - %msg%n" />
-
-    <property name="all-log-pattern"
-      value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%thread|%X{RequestID}| %logger{50} - %msg%n" />
+<configuration scan="true" scanPeriod="30 seconds" debug="false">
+
+    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
+
+    <springProperty scope="context" name="springAppName" source="spring.application.name"/>
+    <springProperty scope="context" name="username" source="security.auth.username"/>
+    <springProperty scope="context" name="loggingFormat" source="logging.format"/>
+
+    <property name="currentTimeStamp" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX,UTC}"/>
+
+    <appender name="jsonConsole"
+              class="ch.qos.logback.core.ConsoleAppender">
+        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+            <providers>
+                <pattern>
+                    <omitEmptyFields>true</omitEmptyFields>
+                    <pattern>
+                        {
+                        "logTimeStamp": "${currentTimeStamp:-}",
+                        "logTypeName": "",
+                        "logLevel": "%level",
+                        "traceId": "%X{traceId:-}",
+                        "statusCode": "",
+                        "principalId": "${username:-}",
+                        "serviceName": "${springAppName:-}",
+                        "message": "%message",
+                        "spanId": "%X{spanId:-}",
+                        "processId": "${PID:-}",
+                        "threadName": "%thread",
+                        "class": "%logger{40}",
+                        "exception": "%wEx"
+                        }
+                    </pattern>
+                </pattern>
+            </providers>
+        </encoder>
+    </appender>
 
-    <appender name="CONSOLE"
-      class="ch.qos.logback.core.ConsoleAppender">
-        <layout class="ch.qos.logback.classic.PatternLayout">
-            <Pattern>${all-log-pattern}</Pattern>
-        </layout>
+    <appender name="asyncConsole" class="ch.qos.logback.classic.AsyncAppender">
+        <if condition='property("loggingFormat").equalsIgnoreCase("json")'>
+            <then>
+                <appender-ref ref="jsonConsole"/>
+            </then>
+            <else>
+                <appender-ref ref="CONSOLE"/>
+            </else>
+        </if>
     </appender>
 
     <root level="INFO">
-        <appender-ref ref="CONSOLE" />
+        <appender-ref ref="asyncConsole"/>
     </root>
 
-<!--  Send logs to File & Rotate File  -->
-<!--    <appender name="Debug"-->
-<!--        class="ch.qos.logback.core.rolling.RollingFileAppender">-->
-<!--        <file>../log/${logName}.log</file>-->
-<!--        <rollingPolicy-->
-<!--            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
-<!--            <fileNamePattern>${logName}.%d{yyyy-MM-dd}.%i.log.zip-->
-<!--            </fileNamePattern>-->
-<!--            <maxFileSize>${maxFileSize}</maxFileSize>-->
-<!--            <maxHistory>${maxHistory}</maxHistory>-->
-<!--            <totalSizeCap>${totalSizeCap}</totalSizeCap>-->
-<!--        </rollingPolicy>-->
-<!--        <encoder>-->
-<!--            <pattern>${debugPattern}</pattern>-->
-<!--        </encoder>-->
-<!--    </appender>-->
-
-<!--    <appender name="asyncDebug" class="ch.qos.logback.classic.AsyncAppender">-->
-<!--        <queueSize>256</queueSize>-->
-<!--        <appender-ref ref="Debug" />-->
-<!--        <includeCallerData>true</includeCallerData>-->
-<!--    </appender>-->
-
-<!--    <logger name="org.onap.cps" level="DEBUG" additivity="false">-->
-<!--        <appender-ref ref="asyncDebug" />-->
-<!--    </logger>-->
-
-<!--    <root level="INFO">-->
-<!--        <appender-ref ref="asyncDebug" />-->
-<!--    </root>-->
-
 </configuration>
index 6ef4c9a..d633b1e 100755 (executable)
@@ -50,7 +50,7 @@ check_health()
 
 ###################### setup env ############################
 # Set env variables for docker compose
-export LOCAL_IP=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')
+export LOCAL_IP=$((ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+') || hostname -I | awk '{print $1}')
 
 source $WORKSPACE/plans/cps/test.properties
 export $(cut -d= -f1 $WORKSPACE/plans/cps/test.properties)
index 06e1ddc..7dd4494 100644 (file)
@@ -157,8 +157,10 @@ To get a listing of the cps-core Pods, run the following command:
   dev-cps-core-postgres-primary-f7766d46c-s9d5b         1/1     Running            0          24h
   dev-cps-core-postgres-replica-84659d68f9-6qnt4        1/1     Running            0          24h
 
+.. note::
+    The CPS Service will have to be restarted each time a change is made to a configurable property.
 
-Additional Cps-Core Customizations
+Additional CPS-Core Customizations
 ==================================
 
 The following table lists some properties that can be specified as Helm chart
@@ -181,14 +183,6 @@ Any spring supported property can be configured by providing in ``config.additio
 |                                       |                                                                                                         |                               |
 |                                       | See also :ref:`cps_common_credentials_retrieval`.                                                       |                               |
 +---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
-| config.dmiPluginUserName              | User name used by cps-core to authenticate themselves for using ncmp-dmi-plugin service.                | ``dmiuser``                   |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
-| config.dmiPluginUserPassword          | Internal password used by cps-core to connect to ncmp-dmi-plugin service.                               | Not defined                   |
-|                                       |                                                                                                         |                               |
-|                                       | If not defined, the password is generated when deploying the application.                               |                               |
-|                                       |                                                                                                         |                               |
-|                                       | See also :ref:`cps_common_credentials_retrieval`.                                                       |                               |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
 | postgres.config.pgUserName            | Internal user name used by cps-core to connect to its own database.                                     | ``cps``                       |
 +---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
 | postgres.config.pgUserPassword        | Internal password used by cps-core to connect to its own database.                                      | Not defined                   |
@@ -287,6 +281,22 @@ Any spring supported property can be configured by providing in ``config.additio
 | maximumPoolSize                       | including both idle and in-use connections.                                                             |                               |
 +---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
 
+Additional CPS-NCMP Customizations
+==================================
++---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
+| config.dmiPluginUserName              | User name used by cps-core to authenticate themselves for using ncmp-dmi-plugin service.                | ``dmiuser``                   |
++---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
+| config.dmiPluginUserPassword          | Internal password used by cps-core to connect to ncmp-dmi-plugin service.                               | Not defined                   |
+|                                       |                                                                                                         |                               |
+|                                       | If not defined, the password is generated when deploying the application.                               |                               |
+|                                       |                                                                                                         |                               |
+|                                       | See also :ref:`cps_common_credentials_retrieval`.                                                       |                               |
++---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
+| config.timers.advised-modules-sync    | Specifies the delay in milliseconds in which the module sync watch dog will wake again after finishing. | ``30000``                     |
+| .sleep-time-ms                        |                                                                                                         |                               |
+|                                       |                                                                                                         |                               |
++---------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+
+
 CPS-Core Docker Installation
 ============================