Added actuator for refreshing configuration
authorTomasz Golabek <tomasz.golabek@nokia.com>
Fri, 21 Feb 2020 14:49:34 +0000 (15:49 +0100)
committerTomasz Golabek <tomasz.golabek@nokia.com>
Mon, 24 Feb 2020 09:27:19 +0000 (10:27 +0100)
Cloud-config dependency is provided
Event listener introduced to handle refresh call
Refresh endpoint exposed
Fixed docker-compose to start locally and use build images
Update repositories for docker image and install vim on it

Issue-ID: AAF-997
Signed-off-by: Tomasz Golabek <tomasz.golabek@nokia.com>
Change-Id: Iee005518c901dad7730c5f48c410ec89850f1425

certService/Dockerfile
certService/docker-compose.yml
certService/pom.xml
certService/src/main/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfig.java
certService/src/main/resources/application.properties
pom.xml

index 4bb1bf6..5060c6b 100644 (file)
@@ -4,6 +4,8 @@ ARG VERSION=${version}
 
 RUN groupadd certService && useradd -g certService certService
 
+RUN apt-get update && apt-get install -y vim
+
 RUN chown -R certService:certService /var/log
 
 USER certService:certService
index 04d4867..f418fc1 100644 (file)
@@ -21,7 +21,9 @@ services:
       retries: 9
 
   certservice:
-    image: nexus3.onap.org:10001/onap/org.onap.aaf.certservice.aaf-certservice-api:1.0.0
+    image: onap/org.onap.aaf.certservice.aaf-certservice-api:latest
+    volumes:
+      - ./helm/aaf-cert-service/resources/cmpServers.json:/etc/onap/aaf/certservice/cmpServers.json
     container_name: certservice
     ports:
       - "8080:8080"
index 5fbd5b1..c61501b 100644 (file)
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-config</artifactId>
+            <version>${spring-cloud-starter-config.version}</version>
+        </dependency>
     </dependencies>
 
     <build>
index 414f38b..20e8934 100644 (file)
 package org.onap.aaf.certservice.certification.configuration;
 
 import org.onap.aaf.certservice.certification.configuration.model.Cmpv2Server;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.cloud.context.scope.refresh.RefreshScopeRefreshedEvent;
 import org.springframework.context.annotation.Configuration;
 
 import javax.annotation.PostConstruct;
 import java.io.File;
 import java.util.Collections;
 import java.util.List;
+import org.springframework.context.event.EventListener;
 
+@RefreshScope
 @Configuration
 public class CmpServersConfig {
+
     private static final String CMP_SERVERS_CONFIG_FILENAME = "cmpServers.json";
 
-    @Autowired
-    private CmpServersConfigLoader cmpServersConfigLoader;
+    private static final Logger LOGGER = LoggerFactory.getLogger(CmpServersConfig.class);
+    private static final String REFRESHING_CONFIGURATION = "Refreshing configuration";
+
     @Value("${app.config.path}")
     private String configPath;
+
+    private CmpServersConfigLoader cmpServersConfigLoader;
     private List<Cmpv2Server> cmpServers;
 
+    @Autowired
+    public CmpServersConfig(CmpServersConfigLoader cmpServersConfigLoader) {
+        this.cmpServersConfigLoader = cmpServersConfigLoader;
+    }
+
     @PostConstruct
     void loadConfiguration() {
         String configFilePath = configPath + File.separator + CMP_SERVERS_CONFIG_FILENAME;
         this.cmpServers = Collections.unmodifiableList(cmpServersConfigLoader.load(configFilePath));
     }
 
+    @EventListener
+    public void onRefreshScope(final RefreshScopeRefreshedEvent event) {
+        LOGGER.info(REFRESHING_CONFIGURATION);
+        loadConfiguration();
+    }
+
     public List<Cmpv2Server> getCmpServers() {
         return cmpServers;
     }
index eab43c0..ac81c3a 100644 (file)
@@ -1,8 +1,11 @@
 # Actuator configuration
-management.endpoints.enabled-by-default=false
-management.endpoint.health.enabled=true
 springdoc.show-actuator=true
 
+management.endpoints.enabled-by-default=true
+management.endpoint.configprops.enabled=true
+management.endpoints.web.exposure.include=refresh,health
+
+
 # Swagger configuration
 springdoc.swagger-ui.path=/docs
 
diff --git a/pom.xml b/pom.xml
index 010a634..3eb6881 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,7 @@
         <maven-surefire-plugin.version>3.0.0-M4</maven-surefire-plugin.version>
         <spring-boot-starter-actuator.version>2.2.4.RELEASE</spring-boot-starter-actuator.version>
         <spring-boot-starter-log4j2.version>2.1.5.RELEASE</spring-boot-starter-log4j2.version>
+        <spring-cloud-starter-config.version>2.2.1.RELEASE</spring-cloud-starter-config.version>
         <springdoc-openapi-ui.version>1.2.30</springdoc-openapi-ui.version>
         <bouncycastle.version>1.60</bouncycastle.version>
         <docker-maven-plugin.version>0.33.0</docker-maven-plugin.version>