Merge "Add new endpoint with commit info"
authorOfir Sonsino <os0695@intl.att.com>
Thu, 6 Sep 2018 07:17:49 +0000 (07:17 +0000)
committerGerrit Code Review <gerrit@onap.org>
Thu, 6 Sep 2018 07:17:49 +0000 (07:17 +0000)
vid-app-common/pom.xml
vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java
vid-app-common/src/main/java/org/onap/vid/model/GitRepositoryState.java [new file with mode: 0644]

index f97a8a2..5082129 100755 (executable)
                                        </dependency>\r
                                </dependencies>\r
                        </plugin>\r
+                       <plugin>\r
+                               <groupId>pl.project13.maven</groupId>\r
+                               <artifactId>git-commit-id-plugin</artifactId>\r
+                               <version>2.2.4</version>\r
+                               <executions>\r
+                                       <execution>\r
+                                               <id>get-the-git-infos</id>\r
+                                               <goals>\r
+                                                       <goal>revision</goal>\r
+                                               </goals>\r
+                                       </execution>\r
+                               </executions>\r
+                               <configuration>\r
+                                       <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>\r
+                                       <dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>\r
+                                       <dateFormatTimeZone>${user.timezone}</dateFormatTimeZone>\r
+                                       <generateGitPropertiesFile>true</generateGitPropertiesFile>\r
+                                       <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>\r
+                                       <includeOnlyProperties>\r
+                                                <includeOnlyProperty>^git.commit.id$</includeOnlyProperty>\r
+                                                <includeOnlyProperty>^git.commit.message.short$</includeOnlyProperty>\r
+                                                <includeOnlyProperty>^git.commit.time$</includeOnlyProperty>\r
+                                       </includeOnlyProperties>\r
+                               </configuration>\r
+                       </plugin>\r
                </plugins>\r
        </build>\r
 \r
index c3871da..03dc808 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -24,6 +24,7 @@ import org.onap.portalsdk.core.controller.UnRestrictedBaseController;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.portalsdk.core.util.SystemProperties;
 import org.onap.vid.dao.FnAppDoaImpl;
+import org.onap.vid.model.GitRepositoryState;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -34,6 +35,7 @@ import java.io.IOException;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.Properties;
 
 /**
  * Controller for user profile view. The view is restricted to authenticated
@@ -45,146 +47,157 @@ import java.util.Date;
 public class HealthCheckController extends UnRestrictedBaseController {
 
 
-       /** The logger. */
-       private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(HealthCheckController.class);
-               
-               /** The Constant dateFormat. */
-               final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
-               
-          private static final String HEALTH_CHECK_PATH = "/healthCheck";
-          
-          /**
-                * Model for JSON response with health-check results.
-                */
-               public class HealthStatus {
-                       // Either 200 or 500
-                       public int statusCode;
-                       
-                       // Additional detail in case of error, empty in case of success.
-                       public String message;
-                       
-                       public String date;
-
-                       public HealthStatus(int code, String msg) {
-                               this.statusCode = code;
-                               this.message = msg;
-                       }
-                       
-                       public HealthStatus(int code,String date, String msg) {
-                               this.statusCode = code;
-                               this.message = msg;
-                               this.date=date;
-                       }
-
-                       public int getStatusCode() {
-                               return statusCode;
-                       }
-
-                       public void setStatusCode(int code) {
-                               this.statusCode = code;
-                       }
-
-                       public String getMessage() {
-                               return message;
-                       }
-
-                       public void setMessage(String msg) {
-                               this.message = msg;
-                       }
-                       
-                       public String getDate() {
-                               return date;
-                       }
-
-                       public void setDate(String date) {
-                               this.date = date;
-                       }
-
-               }
-  
-          @SuppressWarnings("unchecked")
-               public int getProfileCount(String driver, String URL, String username, String password) {
-                  FnAppDoaImpl doa= new FnAppDoaImpl();
-                  int count= doa.getProfileCount(driver,URL,username,password);
-                       return count;
-               }
-          
-          
-          
-               /**
-                * Obtain the HealthCheck Status from the System.Properties file.
-                * Used by IDNS for redundancy
-                * @return ResponseEntity The response entity
-                * @throws IOException Signals that an I/O exception has occurred.
-                */
-               @RequestMapping(value="/healthCheck",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)   
-               public HealthStatus gethealthCheckStatusforIDNS() {
-
-                       String driver = SystemProperties.getProperty("db.driver");
-                       String URL = SystemProperties.getProperty("db.connectionURL");
-                       String username = SystemProperties.getProperty("db.userName");
-                       String password = SystemProperties.getProperty("db.password");
-                       
-                       LOGGER.debug(EELFLoggerDelegate.debugLogger, "driver ::" + driver);
-                       LOGGER.debug(EELFLoggerDelegate.debugLogger, "URL::" + URL);
-                       LOGGER.debug(EELFLoggerDelegate.debugLogger, "username::" + username);
-                       LOGGER.debug(EELFLoggerDelegate.debugLogger,"password::" + password);
-                       
-                       
-                       HealthStatus healthStatus = null;   
-                       try {
-                               LOGGER.debug(EELFLoggerDelegate.debugLogger, "Performing health check");
-                               int count=getProfileCount(driver,URL,username,password);
-                               LOGGER.debug(EELFLoggerDelegate.debugLogger,"count:::"+count);
-                               healthStatus = new HealthStatus(200, "health check succeeded");
-                       } catch (Exception ex) {
-                       
-                               LOGGER.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check", ex);
-                               healthStatus = new HealthStatus(500, "health check failed: " + ex.toString());
-                       }
-                       return healthStatus;
-               }
-               
-               /**
-                * Obtain the  HealthCheck Status from the System.Properties file.
-                *
-                * @return ResponseEntity The response entity
-                * @throws IOException Signals that an I/O exception has occurred.
-                * Project :
-                */     
-               @RequestMapping(value="rest/healthCheck/{User-Agent}/{X-ECOMP-RequestID}",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)      
-               public HealthStatus getHealthCheck(
-                               @PathVariable("User-Agent") String UserAgent,
-                               @PathVariable("X-ECOMP-RequestID") String ECOMPRequestID) {
-
-                       String driver = SystemProperties.getProperty("db.driver");
-                       String URL = SystemProperties.getProperty("db.connectionURL");
-                       String username = SystemProperties.getProperty("db.userName");
-                       String password = SystemProperties.getProperty("db.password");
-                       
-                               LOGGER.debug(EELFLoggerDelegate.debugLogger, "driver ::" + driver);
-                               LOGGER.debug(EELFLoggerDelegate.debugLogger, "URL::" + URL);
-                               LOGGER.debug(EELFLoggerDelegate.debugLogger, "username::" + username);
-                               LOGGER.debug(EELFLoggerDelegate.debugLogger,"password::" + password);
-                               
-                       
-                       HealthStatus healthStatus = null;   
-                       try {
-                               LOGGER.debug(EELFLoggerDelegate.debugLogger, "Performing health check");
-                               LOGGER.debug(EELFLoggerDelegate.debugLogger, "User-Agent" + UserAgent);
-                               LOGGER.debug(EELFLoggerDelegate.debugLogger, "X-ECOMP-RequestID" + ECOMPRequestID);
-
-                               
-                               int count=getProfileCount(driver,URL,username,password);
-                               
-                               LOGGER.debug(EELFLoggerDelegate.debugLogger,"count:::"+count);
-                               healthStatus = new HealthStatus(200,dateFormat.format(new Date()) ,"health check succeeded");
-                       } catch (Exception ex) {
-                       
-                               LOGGER.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check", ex);
-                               healthStatus = new HealthStatus(500,dateFormat.format(new Date()),"health check failed: " + ex.toString());
-                       }
-                       return healthStatus;
-               }
+    /**
+     * The logger.
+     */
+    private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(HealthCheckController.class);
+
+    /**
+     * The Constant dateFormat.
+     */
+    final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
+
+    private static final String HEALTH_CHECK_PATH = "/healthCheck";
+
+    /**
+     * Model for JSON response with health-check results.
+     */
+    public class HealthStatus {
+        // Either 200 or 500
+        public int statusCode;
+
+        // Additional detail in case of error, empty in case of success.
+        public String message;
+
+        public String date;
+
+        public HealthStatus(int code, String msg) {
+            this.statusCode = code;
+            this.message = msg;
+        }
+
+        public HealthStatus(int code, String date, String msg) {
+            this.statusCode = code;
+            this.message = msg;
+            this.date = date;
+        }
+
+        public int getStatusCode() {
+            return statusCode;
+        }
+
+        public void setStatusCode(int code) {
+            this.statusCode = code;
+        }
+
+        public String getMessage() {
+            return message;
+        }
+
+        public void setMessage(String msg) {
+            this.message = msg;
+        }
+
+        public String getDate() {
+            return date;
+        }
+
+        public void setDate(String date) {
+            this.date = date;
+        }
+
+    }
+
+    @SuppressWarnings("unchecked")
+    public int getProfileCount(String driver, String URL, String username, String password) {
+        FnAppDoaImpl doa = new FnAppDoaImpl();
+        int count = doa.getProfileCount(driver, URL, username, password);
+        return count;
+    }
+
+
+    /**
+     * Obtain the HealthCheck Status from the System.Properties file.
+     * Used by IDNS for redundancy
+     *
+     * @return ResponseEntity The response entity
+     * @throws IOException Signals that an I/O exception has occurred.
+     */
+    @RequestMapping(value = "/healthCheck", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
+    public HealthStatus gethealthCheckStatusforIDNS() {
+
+        String driver = SystemProperties.getProperty("db.driver");
+        String URL = SystemProperties.getProperty("db.connectionURL");
+        String username = SystemProperties.getProperty("db.userName");
+        String password = SystemProperties.getProperty("db.password");
+
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "driver ::" + driver);
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "URL::" + URL);
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "username::" + username);
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "password::" + password);
+
+
+        HealthStatus healthStatus = null;
+        try {
+            LOGGER.debug(EELFLoggerDelegate.debugLogger, "Performing health check");
+            int count = getProfileCount(driver, URL, username, password);
+            LOGGER.debug(EELFLoggerDelegate.debugLogger, "count:::" + count);
+            healthStatus = new HealthStatus(200, "health check succeeded");
+        } catch (Exception ex) {
+
+            LOGGER.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check", ex);
+            healthStatus = new HealthStatus(500, "health check failed: " + ex.toString());
+        }
+        return healthStatus;
+    }
+
+    /**
+     * Obtain the  HealthCheck Status from the System.Properties file.
+     *
+     * @return ResponseEntity The response entity
+     * @throws IOException Signals that an I/O exception has occurred.
+     *                     Project :
+     */
+    @RequestMapping(value = "rest/healthCheck/{User-Agent}/{X-ECOMP-RequestID}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
+    public HealthStatus getHealthCheck(
+            @PathVariable("User-Agent") String UserAgent,
+            @PathVariable("X-ECOMP-RequestID") String ECOMPRequestID) {
+
+        String driver = SystemProperties.getProperty("db.driver");
+        String URL = SystemProperties.getProperty("db.connectionURL");
+        String username = SystemProperties.getProperty("db.userName");
+        String password = SystemProperties.getProperty("db.password");
+
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "driver ::" + driver);
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "URL::" + URL);
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "username::" + username);
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "password::" + password);
+
+
+        HealthStatus healthStatus = null;
+        try {
+            LOGGER.debug(EELFLoggerDelegate.debugLogger, "Performing health check");
+            LOGGER.debug(EELFLoggerDelegate.debugLogger, "User-Agent" + UserAgent);
+            LOGGER.debug(EELFLoggerDelegate.debugLogger, "X-ECOMP-RequestID" + ECOMPRequestID);
+
+
+            int count = getProfileCount(driver, URL, username, password);
+
+            LOGGER.debug(EELFLoggerDelegate.debugLogger, "count:::" + count);
+            healthStatus = new HealthStatus(200, dateFormat.format(new Date()), "health check succeeded");
+        } catch (Exception ex) {
+
+            LOGGER.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check", ex);
+            healthStatus = new HealthStatus(500, dateFormat.format(new Date()), "health check failed: " + ex.toString());
+        }
+        return healthStatus;
+    }
+
+    @RequestMapping(value = "/version", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
+    public GitRepositoryState getCommitInfo() throws IOException {
+        Properties properties = new Properties();
+        properties.load(getClass().getClassLoader().getResourceAsStream("git.properties"));
+        return new GitRepositoryState(properties);
+    }
 }
 
diff --git a/vid-app-common/src/main/java/org/onap/vid/model/GitRepositoryState.java b/vid-app-common/src/main/java/org/onap/vid/model/GitRepositoryState.java
new file mode 100644 (file)
index 0000000..dd266d9
--- /dev/null
@@ -0,0 +1,28 @@
+package org.onap.vid.model;
+
+import java.util.Properties;
+
+public class GitRepositoryState {
+
+    private final String commitId;
+    private final String commitMessageShort;
+    private final String commitTime;
+
+    public GitRepositoryState(Properties properties) {
+        this.commitId = String.valueOf(properties.get("git.commit.id"));
+        this.commitMessageShort = String.valueOf(properties.get("git.commit.message.short"));
+        this.commitTime = String.valueOf(properties.get("git.commit.time"));
+    }
+
+    public String getCommitId() {
+        return commitId;
+    }
+
+    public String getCommitMessageShort() {
+        return commitMessageShort;
+    }
+
+    public String getCommitTime() {
+        return commitTime;
+    }
+}