Make gui-pdp-monitoring work in Docker image 60/123760/2
authordanielhanrahan <daniel.hanrahan@est.tech>
Mon, 30 Aug 2021 16:35:18 +0000 (17:35 +0100)
committerDaniel Hanrahan <daniel.hanrahan@est.tech>
Tue, 7 Sep 2021 08:22:23 +0000 (08:22 +0000)
Serve PDP Monitoring HTML using nginx in Docker image
Don't serve HTML content from PdpMonitoringServer
Remove unused dependencies in gui-pdp-monitoring
Add proxy setting for local dev testing with npm start

Issue-ID: POLICY-3603
Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech>
Change-Id: I9a4c2b250a1f0460892a367a3b5bbb59e0e92411

12 files changed:
gui-pdp-monitoring/pom.xml
gui-pdp-monitoring/src/main/assembly/frontend.xml [moved from gui-pdp-monitoring/src/main/assembly/resources.xml with 81% similarity]
gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringMain.java
gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServer.java
gui-pdp-monitoring/src/main/java/org/onap/policy/gui/pdp/monitoring/PdpMonitoringServerParameters.java
gui-pdp-monitoring/src/webapp/js/MonitoringConfig.js
gui-pdp-monitoring/src/webapp/js/MonitoringMain.js
gui-pdp-monitoring/src/webapp/webpack.config.js
packages/policy-gui-docker/pom.xml
packages/policy-gui-docker/src/main/docker/Dockerfile
packages/policy-gui-docker/src/main/docker/nginx/default.conf.template
packages/policy-gui-docker/src/main/docker/policy-gui.sh

index 4fe4491..4f9b72c 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ============LICENSE_START=======================================================
-   Copyright (C) 2020 Nordix Foundation.
+   Copyright (C) 2020-2021 Nordix Foundation.
    Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
   ================================================================================
   Licensed under the Apache License, Version 2.0 (the "License");
             <artifactId>mockito-all</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.onap.policy.gui</groupId>
-            <artifactId>gui-common</artifactId>
-            <version>${project.version}</version>
-            <classifier>resources</classifier>
-            <type>zip</type>
-            <scope>provided</scope>
-        </dependency>
     </dependencies>
 
     <build>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-resources-plugin</artifactId>
+                <artifactId>maven-assembly-plugin</artifactId>
                 <executions>
                     <execution>
-                        <id>Copy frontend build to target</id>
-                        <phase>prepare-package</phase>
+                        <id>generate-gui-pdp-monitoring-tar</id>
+                        <phase>package</phase>
                         <goals>
-                            <goal>copy-resources</goal>
+                            <goal>single</goal>
                         </goals>
                         <configuration>
-                            <outputDirectory>${project.build.directory}/classes/webapp</outputDirectory>
-                            <resources>
-                                <resource>
-                                    <directory>${webapp.dir}/dist</directory>
-                                    <filtering>false</filtering>
-                                </resource>
-                            </resources>
+                            <descriptors>
+                                <descriptor>src/main/assembly/frontend.xml</descriptor>
+                            </descriptors>
+                            <finalName>${project.artifactId}-${project.version}</finalName>
                         </configuration>
                     </execution>
                 </executions>
@@ -1,6 +1,6 @@
 <!--
   ============LICENSE_START=======================================================
-   Copyright (C) 2020 Nordix Foundation.
+   Copyright (C) 2020-2021 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=========================================================
 -->
 <assembly>
-    <id>resources</id>
+    <id>frontend</id>
     <formats>
-        <format>zip</format>
+        <format>tar.gz</format>
     </formats>
     <includeBaseDirectory>false</includeBaseDirectory>
     <fileSets>
         <fileSet>
-            <directory>target/classes/webapp</directory>
-            <outputDirectory>monitoring</outputDirectory>
+            <directory>${webapp.dir}/dist</directory>
+            <outputDirectory>pdp-monitoring</outputDirectory>
         </fileSet>
     </fileSets>
-</assembly>
\ No newline at end of file
+</assembly>
index 398cbc4..2c0bb3a 100644 (file)
@@ -152,7 +152,7 @@ public class PdpMonitoringMain {
     public void shutdown() {
         if (pdpMonitoringServer != null) {
             LOGGER.info(PDP_MONITORING_PREFIX + "{}) shutting down", this);
-            pdpMonitoringServer.shutdown(parameters.getPort(), parameters.getDefaultRestPort());
+            pdpMonitoringServer.shutdown(parameters.getPort());
         }
         shutdownLatch.countDown();
         state = ServicesState.STOPPED;
index 78e048d..bfb273d 100644 (file)
@@ -22,7 +22,6 @@
 package org.onap.policy.gui.pdp.monitoring;
 
 import lombok.NonNull;
-import org.eclipse.jetty.servlets.CrossOriginFilter;
 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
 import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
 import org.slf4j.Logger;
@@ -41,9 +40,6 @@ public class PdpMonitoringServer {
     // The HTTP server exposing JAX-RS resources defined in this application.
     private HttpServletServer jerseyServer;
 
-    // The HTTP server exposing static resources defined in this application.
-    private HttpServletServer staticResourceServer;
-
     /**
      * Starts the HTTP server for the Pdp statistics monitoring on the default base URI and with the
      * default REST packages.
@@ -58,34 +54,23 @@ public class PdpMonitoringServer {
      * @param parameters The Pdp parameters to use to start the server.
      */
     public PdpMonitoringServer(@NonNull final PdpMonitoringServerParameters parameters) {
-
         LOGGER.debug("Pdp Monitoring starting . . .");
 
         jerseyServer = HttpServletServerFactoryInstance.getServerFactory().build("PDP Monitoring Rest Server", false,
-                parameters.getServerHost(), parameters.getDefaultRestPort(), parameters.getContextPath(), false, true);
+                parameters.getServerHost(), parameters.getPort(), parameters.getContextPath(), false, true);
         jerseyServer.addServletPackage(parameters.getDefaultRestPath(), parameters.getRestPackage());
-        jerseyServer.addFilterClass(parameters.getDefaultRestPath(), CrossOriginFilter.class.getName());
         jerseyServer.start();
 
-        staticResourceServer = HttpServletServerFactoryInstance.getServerFactory().buildStaticResourceServer(
-                "PDP Monitoring Html Server", false, parameters.getServerHost(), parameters.getPort(),
-                parameters.getContextPath(), true);
-        staticResourceServer.addServletResource(null,
-                PdpMonitoringServer.class.getClassLoader().getResource("webapp").toExternalForm());
-        staticResourceServer.start();
-
         LOGGER.debug("Pdp Monitoring started");
     }
 
     /**
      * Shut down the web server.
      *
-     * @param htmlPort port number of static resource server
      * @param restPort port number of jersey server
      */
-    public void shutdown(int htmlPort, int restPort) {
+    public void shutdown(int restPort) {
         LOGGER.debug("Pdp Monitoring . . .");
-        HttpServletServerFactoryInstance.getServerFactory().destroy(htmlPort);
         HttpServletServerFactoryInstance.getServerFactory().destroy(restPort);
         LOGGER.debug("Pdp Monitoring shut down");
     }
index a76fa02..78fb479 100644 (file)
@@ -38,7 +38,6 @@ import org.onap.policy.common.parameters.annotations.Min;
 @Getter
 @Setter
 public class PdpMonitoringServerParameters {
-    public static final int DEFAULT_PORT = 18999;
     public static final int INFINITY_TIME_TO_LIVE = -1;
 
     // Base URI the HTTP server will listen on
@@ -55,7 +54,7 @@ public class PdpMonitoringServerParameters {
 
     @Min(1024)
     @Max(65534)
-    private int port = DEFAULT_PORT;
+    private int port = DEFAULT_REST_PORT;
 
     @Min(-1)
     private long timeToLive = INFINITY_TIME_TO_LIVE;
@@ -88,8 +87,4 @@ public class PdpMonitoringServerParameters {
     public String getDefaultRestPath() {
         return "/" + DEFAULT_REST_PATH;
     }
-
-    public int getDefaultRestPort() {
-        return DEFAULT_REST_PORT;
-    }
 }
index f929282..6e5200e 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Nordix Foundation.
+ *  Copyright (C) 2020-2021 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,7 +21,6 @@
 // Configuration used for page layout and charts
 const config = {
     refresh: 5000,
-    restPort: 17999,
     engineService: {
         parent: "engineService",
         tableId: "engineServicesTable",
@@ -124,4 +123,4 @@ const config = {
     }
 };
 
-export { config, };
\ No newline at end of file
+export { config, };
index 9198d63..48aa96c 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Nordix Foundation.
+ *  Copyright (C) 2020-2021 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -68,8 +68,8 @@ function readyCallback() {
     window.restRootURL = location.protocol
         + "//"
         + window.location.hostname
-        + ':' + config.restPort
-        + (location.pathname.endsWith("/monitoring/") ? location.pathname.substring(0, location.pathname.indexOf("monitoring/")) : location.pathname)
+        + ':' + window.location.port
+        + window.location.pathname
         + "papservices/monitoring/";
     // Initialize tooltip for the charts
     initTooltip();
@@ -108,4 +108,4 @@ function readyCallback() {
 
 $(document).ready(readyCallback);
 // Export for unit testing
-export { readyCallback, servicesCallback };
\ No newline at end of file
+export { readyCallback, servicesCallback };
index f387ebe..4b1c179 100644 (file)
@@ -10,6 +10,9 @@ module.exports = {
   devServer: {
     contentBase: path.join(__dirname, 'dist'),
     compress: true,
-    port: 9000
+    port: 9000,
+    proxy: {
+      "/papservices/monitoring": "http://localhost:17999",
+    }
   }
 };
index 94453ce..9574600 100644 (file)
                                                 <includes>
                                                     <include>org.onap.policy.gui:gui-clamp:tar.gz:clamp-build:${project.version}</include>
                                                 </includes>
-                                                <outputFileNameMapping>gui-clamp.tar.gz</outputFileNameMapping>
+                                                <outputFileNameMapping>gui-clamp-html.tar.gz</outputFileNameMapping>
+                                            </dependencySet>
+                                            <dependencySet>
+                                                <includes>
+                                                    <include>org.onap.policy.gui:gui-pdp-monitoring:tar.gz:frontend:${project.version}</include>
+                                                </includes>
+                                                <outputFileNameMapping>gui-pdp-monitoring-html.tar.gz</outputFileNameMapping>
                                             </dependencySet>
                                             <dependencySet>
                                                 <includes>
             <classifier>clamp-build</classifier>
             <type>tar.gz</type>
         </dependency>
+        <dependency>
+            <groupId>org.onap.policy.gui</groupId>
+            <artifactId>gui-pdp-monitoring</artifactId>
+            <version>${project.version}</version>
+            <classifier>frontend</classifier>
+            <type>tar.gz</type>
+        </dependency>
         <dependency>
             <groupId>org.onap.policy.gui</groupId>
             <artifactId>gui-pdp-monitoring</artifactId>
index e58c9ea..8820139 100644 (file)
@@ -40,7 +40,8 @@ COPY /maven/gui-pdp-monitoring-uber.jar ./lib/
 COPY nginx/nginx.conf /etc/nginx/nginx.conf
 COPY nginx/default.conf.template /etc/nginx/templates/default.conf.template
 COPY nginx/index.html /usr/share/nginx/html/
-ADD /maven/gui-clamp.tar.gz /usr/share/nginx/html/
+ADD /maven/gui-clamp-html.tar.gz /usr/share/nginx/html/
+ADD /maven/gui-pdp-monitoring-html.tar.gz /usr/share/nginx/html/
 RUN rm /etc/nginx/conf.d/default.conf && \
     ln -sf /dev/stdout /var/log/nginx/access.log && \
     ln -sf /dev/stderr /var/log/nginx/error.log && \
index a12f34b..d407827 100644 (file)
@@ -11,14 +11,12 @@ server {
     proxy_pass ${CLAMP_REST_URL}/restservices/clds/;
   }
 
-  location /apex-editor/ {
-    proxy_pass http://localhost:18989/;
-    proxy_set_header Host $host;
-    proxy_set_header If-Modified-Since $http_if_modified_since;
+  location /pdp-monitoring/papservices/monitoring/ {
+    proxy_pass http://localhost:17999/papservices/monitoring/;
   }
 
-  location /pdp-monitoring/ {
-    proxy_pass http://localhost:18999/;
+  location /apex-editor/ {
+    proxy_pass http://localhost:18989/;
     proxy_set_header Host $host;
     proxy_set_header If-Modified-Since $http_if_modified_since;
   }
index 4d4cbee..bb2d9c9 100644 (file)
@@ -27,7 +27,7 @@ echo "Starting gui-editor-apex"
 $JAVA_HOME/bin/java -jar "$POLICY_HOME/lib/gui-editor-apex-uber.jar" -p 18989 &
 
 echo "Starting gui-pdp-monitoring"
-$JAVA_HOME/bin/java -jar "$POLICY_HOME/lib/gui-pdp-monitoring-uber.jar" -p 18999 &
+$JAVA_HOME/bin/java -jar "$POLICY_HOME/lib/gui-pdp-monitoring-uber.jar" -p 17999 &
 
 echo "Starting nginx"
 envsubst '${CLAMP_REST_URL}' < /etc/nginx/templates/default.conf.template > /etc/nginx/conf.d/default.conf