From a9627f8c54b7e9d5712320621e8a0b748ad9baf4 Mon Sep 17 00:00:00 2001 From: "Christopher Lott (cl778h)" Date: Wed, 26 Jul 2017 11:49:07 -0400 Subject: [PATCH] Repair Portal defects; upgrade Docker build. PORTAL-39 Remove MojoHaus Maven plug-in from pom file PORTAL-38 VID tab is not showing portal for VID PORTAL-37 Portal cannot resolve UEB host vm1-message-router; use ueb.api.simpledemo.openecomp.org instead PORTAL-36 Show Portal app version number in footer; unpack war file instead of copying directory PORTAL-35 update ECOMP Portal to ONAP logo on login page PORTAL-34 Portal partners (Policy, VID) got 404 on landing page; recognize process_csp as valid endpoint in Portal PORTAL-30 Failed to communicate with the widget microservice; add configuration properties with widget-ms host name and protocol. Issue: PORTAL-30, PORTAL-34, PORTAL-35, PORTAL-36, PORTAL-37, PORTAL-38, PORTAL-39 Change-Id: I1e53e4985266f736ddad4ed49b287a23178ea3c3 Signed-off-by: Christopher Lott (cl778h) --- deliveries/Dockerfile.mariadb | 28 +++-- deliveries/Dockerfile.portalapps | 54 ++++++++++ deliveries/build_portalapps_dockers.sh | 116 +++++++++++++++++++++ deliveries/dbstop.sh | 0 deliveries/etc.zip | Bin 9872 -> 11434 bytes deliveries/new_start.sh | 13 ++- deliveries/new_stop.sh | 11 +- deliveries/os_settings.sh | 6 +- deliveries/run.sh | 6 +- ecomp-portal-BE-common-test/pom.xml | 42 -------- ecomp-portal-BE-common/pom.xml | 43 -------- .../portal/service/ConsulHealthServiceImpl.java | 5 +- .../portal/utils/EPCommonSystemProperties.java | 1 + .../portalapp/portal/utils/EcompPortalUtils.java | 15 +++ .../static/fusion/images/onap-portal-logo.png | Bin 0 -> 71199 bytes ecomp-portal-BE-os/README.md | 1 + ecomp-portal-BE-os/pom.xml | 14 --- .../portalapp/controller/LoginController.java | 9 +- .../portalapp/controller/LoginService.java | 2 +- ecomp-portal-BE-os/src/main/resources/cache.ccf | 2 +- .../src/main/webapp/WEB-INF/jsp/login.jsp | 34 +++--- ecomp-portal-FE-common/pom.xml | 48 --------- ecomp-portal-FE-os/pom.xml | 41 -------- ecomp-portal-widget-ms/pom.xml | 4 - 24 files changed, 263 insertions(+), 232 deletions(-) create mode 100644 deliveries/Dockerfile.portalapps create mode 100755 deliveries/build_portalapps_dockers.sh mode change 100644 => 100755 deliveries/dbstop.sh create mode 100644 ecomp-portal-BE-common/src/main/webapp/static/fusion/images/onap-portal-logo.png diff --git a/deliveries/Dockerfile.mariadb b/deliveries/Dockerfile.mariadb index 871637f5..004e7af8 100644 --- a/deliveries/Dockerfile.mariadb +++ b/deliveries/Dockerfile.mariadb @@ -9,20 +9,26 @@ ARG SDK_SCRIPT_DIR=${SDK_SCRIPT_DIR} ARG SDK_COMMON_SCRIPT_DIR=${SDK_COMMON_SCRIPT_DIR} ARG DBC_COMMON_SCRIPT_DIR=${DBC_COMMON_SCRIPT_DIR} ARG DBC_SCRIPT_DIR=${DBC_SCRIPT_DIR} + +# constant #Add config file ADD my.cnf /etc/mysql/my.cnf #ADD cluster.cnf /etc/mysql/conf.d -#Add DDL and DML SQL files -ADD ${SCRIPT_COMMON_DIR}/EcompPortalDDLMySql_1707_Common.sql docker-entrypoint-initdb.d/EcompPortalDDLMySql_1707_Common.sql -ADD ${SCRIPT_DIR}/EcompPortalDDLMySql_1707_OS.sql docker-entrypoint-initdb.d/EcompPortalDDLMySql_1707_OS.sql -ADD ${SCRIPT_COMMON_DIR}/EcompPortalDMLMySql_1707_Common.sql docker-entrypoint-initdb.d/EcompPortalDMLMySql_1707_Common.sql -ADD ${SCRIPT_DIR}/EcompPortalDMLMySql_1707_OS.sql docker-entrypoint-initdb.d/EcompPortalDMLMySql_1707_OS.sql +# Scripts are executed in alphabetical order + +# Portal DDL and DML +ADD ${SCRIPT_COMMON_DIR}/EcompPortalDDLMySql_1707_Common.sql docker-entrypoint-initdb.d +ADD ${SCRIPT_DIR}/EcompPortalDDLMySql_1707_OS.sql docker-entrypoint-initdb.d +ADD ${SCRIPT_COMMON_DIR}/EcompPortalDMLMySql_1707_Common.sql docker-entrypoint-initdb.d +ADD ${SCRIPT_DIR}/EcompPortalDMLMySql_1707_OS.sql docker-entrypoint-initdb.d +ADD Apps_Users_OnBoarding_Script.sql docker-entrypoint-initdb.d/EcompPortalDMLMySql_1707_z_apps_users.sql -ADD ${SDK_COMMON_SCRIPT_DIR}/EcompSdkDDLMySql_1707_Common.sql docker-entrypoint-initdb.d/EcompSdkDDLMySql_1707_Common.sql -ADD ${SDK_SCRIPT_DIR}/EcompSdkDDLMySql_1707_OS.sql docker-entrypoint-initdb.d/EcompSdkDDLMySql_1707_OS.sql -ADD ${SDK_COMMON_SCRIPT_DIR}/EcompSdkDMLMySql_1707_Common.sql docker-entrypoint-initdb.d/EcompSdkDMLMySql_1707_Common.sql -ADD ${SDK_SCRIPT_DIR}/EcompSdkDMLMySql_1707_OS.sql docker-entrypoint-initdb.d/EcompSdkDMLMySql_1707_OS.sql +# SDK App DDL and DML +ADD ${SDK_COMMON_SCRIPT_DIR}/EcompSdkDDLMySql_1707_Common.sql docker-entrypoint-initdb.d +ADD ${SDK_SCRIPT_DIR}/EcompSdkDDLMySql_1707_OS.sql docker-entrypoint-initdb.d +ADD ${SDK_COMMON_SCRIPT_DIR}/EcompSdkDMLMySql_1707_Common.sql docker-entrypoint-initdb.d +ADD ${SDK_SCRIPT_DIR}/EcompSdkDMLMySql_1707_OS.sql docker-entrypoint-initdb.d -# This file was built by os_build_febe.sh -ADD ${DBC_SCRIPT_DIR}/dbca-complete-mysql-1707-os.sql docker-entrypoint-initdb.d/dbca-complete-mysql-1707-os.sql +# DBC App combined DDL/DML, built by os_build_febe.sh +ADD ${DBC_SCRIPT_DIR}/dbca-complete-mysql-1707-os.sql docker-entrypoint-initdb.d diff --git a/deliveries/Dockerfile.portalapps b/deliveries/Dockerfile.portalapps new file mode 100644 index 00000000..3e295e8f --- /dev/null +++ b/deliveries/Dockerfile.portalapps @@ -0,0 +1,54 @@ +# Dockerfile for image with ONAP applications: +# Portal app, Portal-SDK app, Portal-DBC app. + +FROM openjdk:8-jdk + +# Arguments are supplied by build.sh script +# the defaults below only support testing +ARG PORTAL_WAR=build/ecompportal-be-os.war +ARG FE_DIR=build/public +ARG SDK_WAR=build/epsdk-app-os.war +ARG DBC_WAR=build/dmaap-bc-app-os.war +ARG HTTP_PROXY +ARG HTTPS_PROXY + +# This is just a variable, never passed in +ARG TOMCATHOME=/opt/apache-tomcat-8.0.37 + +ENV http_proxy $HTTP_PROXY +ENV https_proxy $HTTPS_PROXY +RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \ + if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi + +# Install Tomcat; curl is already part of this image +WORKDIR /tmp +RUN curl -s -O https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.37/bin/apache-tomcat-8.0.37.tar.gz +RUN tar -xzf apache-tomcat-8.0.37.tar.gz +# Remove manager and sample apps +RUN rm -fr apache-tomcat-8.0.37/webapps/[a-z]* +RUN mv apache-tomcat-8.0.37 /opt + +WORKDIR ${TOMCATHOME}/webapps +RUN mkdir ECOMPPORTAL && mkdir ECOMPSDKAPP && mkdir ECOMPDBCAPP + +# Portal has many parts +COPY $PORTAL_WAR ECOMPPORTAL +RUN cd ECOMPPORTAL && unzip -q *.war && rm *.war +COPY ${FE_DIR} ECOMPPORTAL/public + +# SDK app has only a war +COPY $SDK_WAR ECOMPSDKAPP +RUN cd ECOMPSDKAPP && unzip -q *.war && rm *.war + +# DBC app has only a war +COPY $DBC_WAR ECOMPDBCAPP +RUN cd ECOMPDBCAPP && unzip -q *.war && rm *.war + +VOLUME ${TOMCATHOME}/logs + +# Define commonly used ENV variables +ENV PATH $PATH:$JAVA_HOME/bin:${TOMCATHOME}/bin +COPY configure-and-run.sh / + +# Define default command. +CMD ["/configure-and-run.sh"] diff --git a/deliveries/build_portalapps_dockers.sh b/deliveries/build_portalapps_dockers.sh new file mode 100755 index 00000000..eba1cb6d --- /dev/null +++ b/deliveries/build_portalapps_dockers.sh @@ -0,0 +1,116 @@ +#!/bin/bash +# Builds Portal, Portal-SDK and DMaaP-BC webapps; +# then packages all into a docker. +# Prereq: all three projects have been cloned from git. +# Expects to be invoked with CWD=portal/deliveries +# Caches files in local directory for docker build. + +# Stop on error; show output +set -e -x + +# For debugging only bcox the FE build takes a long time +SKIPFE=N +if [ $# -gt 0 -a "$1" == "skipfe" ] ; then + echo "Skipping Portal-FE build step" + SKIPFE=Y +fi + +# Establish environment variables +echo "Set variables" +source $(dirname $0)/os_settings.sh + +# Work standalone AND in the ONAP Jenkins. +# Pick up Jenkins settings for this script. +# Use -B for batch operation to skip download progress output +if [ -n "$MVN" ]; then + export MVN="${MVN} -B -gs ${GLOBAL_SETTINGS_FILE} -s ${SETTINGS_FILE}" +else + MVN=mvn +fi + +# This expects to start in the deliveries folder; make sure +DOCKERFILE=Dockerfile.portalapps +if [ ! -f $DOCKERFILE ] ; then + echo "Failed to find expected file; must start in deliveries folder" + exit 1 +fi + +# Establish directories and variables +DELIV="$(pwd)" +# Relative path of temp directory +BUILD="build" +# Absolute path of temp directory +OUT=$DELIV/$BUILD +if [ $SKIPFE == "Y" ]; then + echo "Skipping clean/recreate of $OUT" +else + rm -fr $OUT + mkdir $OUT +fi +# parent directory +cd .. +BASE="$(pwd)" + +# Copy DDL/DML to required directories (old scripts use long path /PROJECT/...) +cd $DELIV +rm -fr PROJECT +# copy over DB scripts for the dockerfiles +# forgive the ugly trick with the .. at end. +mkdir -p ${SCRIPT_COMMON_DIR} && cp -r $BASE/ecomp-portal-DB-common ${SCRIPT_COMMON_DIR}/.. +mkdir -p ${SCRIPT_DIR} && cp -r $BASE/ecomp-portal-DB-os ${SCRIPT_DIR}/.. +mkdir -p ${SDK_COMMON_SCRIPT_DIR} && cp -r $BASE/sdk/ecomp-sdk/epsdk-app-common/db-scripts ${SDK_COMMON_SCRIPT_DIR}/.. +mkdir -p ${SDK_SCRIPT_DIR} && cp -r $BASE/sdk/ecomp-sdk/epsdk-app-os/db-scripts ${SDK_SCRIPT_DIR}/.. +# Build complete database script for DBC +DBCA_OPEN_SD=$BASE/dmaapbc/dcae_dmaapbc_webapp/dbca-os/db-scripts +DBCA_COMM_SD=$BASE/dmaapbc/dcae_dmaapbc_webapp/dbca-common/db-scripts +# Old scripts expect this path +mkdir -p $DBC_SCRIPT_DIR +cat $DBCA_OPEN_SD/dbca-create-mysql-1707-os.sql $DBCA_COMM_SD/dbca-ddl-mysql-1707-common.sql $DBCA_OPEN_SD/dbca-dml-mysql-1707-os.sql > $DBC_SCRIPT_DIR/dbca-complete-mysql-1707-os.sql + +cd $BASE/ecomp-portal-BE-common +${MVN} clean install + +cd $BASE/ecomp-portal-BE-os +${MVN} clean package +cp target/ecompportal-be-os.war $OUT + +cd $BASE/ecomp-portal-FE-os/ +if [ $SKIPFE == "Y" ]; then + echo "Skipping MVN in $(pwd)" +else + ${MVN} clean package + cp -r dist/public $OUT +fi + +cd $BASE/sdk/ecomp-sdk/epsdk-app-os +${MVN} clean package +cp target/epsdk-app-os.war $OUT + +cd $BASE/dmaapbc/dcae_dmaapbc_webapp +${MVN} clean package +cp dbca-os/target/dmaap-bc-app-os.war $OUT + +PROXY_ARGS="" +if [ $HTTP_PROXY ]; then + PROXY_ARGS+="--build-arg HTTP_PROXY=${HTTP_PROXY}" +fi +if [ $HTTPS_PROXY ]; then + PROXY_ARGS+=" --build-arg HTTPS_PROXY=${HTTPS_PROXY}" +fi + +# build portal docker +cd $DELIV +PORTAL_DOCKER_CMD=" + docker build -t ${IMGNAME} ${PROXY_ARGS} + --build-arg FE_DIR=$BUILD/public + --build-arg PORTAL_WAR=$BUILD/ecompportal-be-os.war + --build-arg SDK_WAR=$BUILD/epsdk-app-os.war + --build-arg DBC_WAR=$BUILD/dmaap-bc-app-os.war + -f $DOCKERFILE . +" +echo "Invoking portal docker build" +$PORTAL_DOCKER_CMD + +# Build widget-ms docker +cd $BASE/ecomp-portal-widget-ms +${MVN} package docker:build diff --git a/deliveries/dbstop.sh b/deliveries/dbstop.sh old mode 100644 new mode 100755 diff --git a/deliveries/etc.zip b/deliveries/etc.zip index a5577c1deb9babe91e64f898d019a199cfaa7c57..30e6898f7cb09162ec9fe32b92cdfd003702e75e 100644 GIT binary patch literal 11434 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 delta 8066 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 - diff --git a/ecomp-portal-BE-common/pom.xml b/ecomp-portal-BE-common/pom.xml index 7f8da046..f5f925b8 100644 --- a/ecomp-portal-BE-common/pom.xml +++ b/ecomp-portal-BE-common/pom.xml @@ -125,49 +125,6 @@ - - diff --git a/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/service/ConsulHealthServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/service/ConsulHealthServiceImpl.java index 175a1c71..0cfa4f81 100644 --- a/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/service/ConsulHealthServiceImpl.java +++ b/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/service/ConsulHealthServiceImpl.java @@ -21,6 +21,7 @@ package org.openecomp.portalapp.portal.service; import java.util.List; +import org.openecomp.portalapp.portal.utils.EcompPortalUtils; import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.springframework.stereotype.Component; @@ -44,7 +45,7 @@ public class ConsulHealthServiceImpl implements ConsulHealthService { HealthClient healthClient = consul.healthClient(); nodes = healthClient.getHealthyServiceInstances(service).getResponse(); } catch (Exception e) { - String localFallbackServiceLocation = "localhost:" + fallbackPortOnLocalHost; + String localFallbackServiceLocation = EcompPortalUtils.localOrDockerHost() + ":" + fallbackPortOnLocalHost; logger.debug(EELFLoggerDelegate.debugLogger, " problem getting nodes for service {1}. Defaulting to {2}. Exception: {3}", service, localFallbackServiceLocation, e.getMessage()); @@ -57,7 +58,7 @@ public class ConsulHealthServiceImpl implements ConsulHealthService { if (nodes == null || nodes.size() == 0) { logger.debug(EELFLoggerDelegate.debugLogger, "No healthy node found in the consul cluster running service " + service + ". Defaulting to localhost"); - return "localhost:" + fallbackPortOnLocalHost; + return EcompPortalUtils.localOrDockerHost() + ":" + fallbackPortOnLocalHost; } else { String locationFromConsul; ServiceHealth node = nodes.get(0); diff --git a/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/utils/EPCommonSystemProperties.java b/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/utils/EPCommonSystemProperties.java index 23bb3567..dd33bf6e 100644 --- a/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/utils/EPCommonSystemProperties.java +++ b/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/utils/EPCommonSystemProperties.java @@ -62,5 +62,6 @@ public class EPCommonSystemProperties extends SystemProperties { public static final String AUTH_USER_SERVER = "auth_user_server"; public static final String EXTERNAL_ACCESS_ENABLE = "external_access_enable"; public static final String WIDGET_MS_PROTOCOL = "microservices.widget.protocol"; + public static final String WIDGET_MS_HOSTNAME = "microservices.widget.hostname"; } \ No newline at end of file diff --git a/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/utils/EcompPortalUtils.java b/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/utils/EcompPortalUtils.java index 2b39da0a..d471d90b 100644 --- a/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/utils/EcompPortalUtils.java +++ b/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/utils/EcompPortalUtils.java @@ -354,5 +354,20 @@ public class EcompPortalUtils { return "https"; } } + + public static String localOrDockerHost(){ + final String effectiveHost; + try{ + effectiveHost = SystemProperties.getProperty(EPCommonSystemProperties.WIDGET_MS_HOSTNAME); + return (effectiveHost == null || effectiveHost.trim().equals("")) ? "localhost" : effectiveHost ; + } + catch(IllegalStateException ese){ + //looks like SystemProperties.getProperty throws IllegalStateException if it cannot find a property you are looking for + //In order to not break the code if a non-required property is missing from system.properties, returning https as default + //when this exception is caught. + return "localhost"; + } + } + } diff --git a/ecomp-portal-BE-common/src/main/webapp/static/fusion/images/onap-portal-logo.png b/ecomp-portal-BE-common/src/main/webapp/static/fusion/images/onap-portal-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f48d3d47636b9fa02f3360b93c7a7897c3e06123 GIT binary patch literal 71199 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 RmDZA8+H+yGP&W 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

moW=~!$Uidvv)%8Y82su1u>*Beu?5}5I$Qm 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

V}m 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 literal 0 HcmV?d00001 diff --git a/ecomp-portal-BE-os/README.md b/ecomp-portal-BE-os/README.md index 47f1cfb9..829fd86f 100644 --- a/ecomp-portal-BE-os/README.md +++ b/ecomp-portal-BE-os/README.md @@ -16,6 +16,7 @@ https://www.eclipse.org/m2e-wtp/ Version 1.1.?, July 2017 - [Portal-30] Failed to communicate with the widget microservice: Fixed +- [Portal-35] Replaced the portal logo with onap logo on the login screen. Version 1.1.0, July 2017 - [Portal-7] Improvements added as part of the rebasing process diff --git a/ecomp-portal-BE-os/pom.xml b/ecomp-portal-BE-os/pom.xml index 1e64f7cd..1e4b4922 100644 --- a/ecomp-portal-BE-os/pom.xml +++ b/ecomp-portal-BE-os/pom.xml @@ -207,20 +207,6 @@ - diff --git a/ecomp-portal-BE-os/src/main/java/org/openecomp/portalapp/controller/LoginController.java b/ecomp-portal-BE-os/src/main/java/org/openecomp/portalapp/controller/LoginController.java index 09e10e38..6f3d2278 100644 --- a/ecomp-portal-BE-os/src/main/java/org/openecomp/portalapp/controller/LoginController.java +++ b/ecomp-portal-BE-os/src/main/java/org/openecomp/portalapp/controller/LoginController.java @@ -174,8 +174,15 @@ public class LoginController extends EPUnRestrictedBaseController implements Log } + /* Work around a bug in ecompsdkos version 1.1.0 which hard-codes this endpoint. */ + @RequestMapping(value = {"/process_csp" }, method = RequestMethod.GET) + public ModelAndView processCsp(HttpServletRequest request, HttpServletResponse response) throws Exception { + return processSingleSignOn(request, response); + } + /* Remove this method after epsdk-app-common/.../SingleSignOnController.java is repaired. */ + @RequestMapping(value = {"/processSingleSignOn" }, method = RequestMethod.GET) - public ModelAndView processSingelSignOn(HttpServletRequest request, HttpServletResponse response) throws Exception{ + public ModelAndView processSingleSignOn(HttpServletRequest request, HttpServletResponse response) throws Exception{ Map model = new HashMap(); HashMap additionalParamsMap = new HashMap(); diff --git a/ecomp-portal-BE-os/src/main/java/org/openecomp/portalapp/controller/LoginService.java b/ecomp-portal-BE-os/src/main/java/org/openecomp/portalapp/controller/LoginService.java index 7d2e4518..d2c53028 100644 --- a/ecomp-portal-BE-os/src/main/java/org/openecomp/portalapp/controller/LoginService.java +++ b/ecomp-portal-BE-os/src/main/java/org/openecomp/portalapp/controller/LoginService.java @@ -31,6 +31,6 @@ public interface LoginService { public @ResponseBody String loginValidate(HttpServletRequest request, HttpServletResponse response) throws Exception; - public ModelAndView processSingelSignOn(HttpServletRequest request, HttpServletResponse response) throws Exception; + public ModelAndView processSingleSignOn(HttpServletRequest request, HttpServletResponse response) throws Exception; } diff --git a/ecomp-portal-BE-os/src/main/resources/cache.ccf b/ecomp-portal-BE-os/src/main/resources/cache.ccf index 6f5c6f92..d21404b0 100644 --- a/ecomp-portal-BE-os/src/main/resources/cache.ccf +++ b/ecomp-portal-BE-os/src/main/resources/cache.ccf @@ -20,7 +20,7 @@ jcs.default.elementattributes.IsSpool=true # AUXILLARY CACHE CONFIGURATION jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes -jcs.auxiliary.DC.attributes.DiskPath=c:/projects/fusion/war/WEB-INF/cache +jcs.auxiliary.DC.attributes.DiskPath=/tmp # PRE-DEFINED REGION FOR LOOKUP DATA diff --git a/ecomp-portal-BE-os/src/main/webapp/WEB-INF/jsp/login.jsp b/ecomp-portal-BE-os/src/main/webapp/WEB-INF/jsp/login.jsp index 7ca8531c..c37d6d6f 100644 --- a/ecomp-portal-BE-os/src/main/webapp/WEB-INF/jsp/login.jsp +++ b/ecomp-portal-BE-os/src/main/webapp/WEB-INF/jsp/login.jsp @@ -75,23 +75,25 @@


-
- +
+
- - -
-
- - -
-
-                - +
+ + +
+
+ + +
+
+                + +

diff --git a/ecomp-portal-FE-common/pom.xml b/ecomp-portal-FE-common/pom.xml index b74783ad..111b2881 100644 --- a/ecomp-portal-FE-common/pom.xml +++ b/ecomp-portal-FE-common/pom.xml @@ -4,52 +4,4 @@ ecompportal-FE-common 1.1 - - - - - - - - diff --git a/ecomp-portal-FE-os/pom.xml b/ecomp-portal-FE-os/pom.xml index e54b518a..2ee46044 100644 --- a/ecomp-portal-FE-os/pom.xml +++ b/ecomp-portal-FE-os/pom.xml @@ -187,47 +187,6 @@ true - diff --git a/ecomp-portal-widget-ms/pom.xml b/ecomp-portal-widget-ms/pom.xml index 35727c1e..5438ad13 100644 --- a/ecomp-portal-widget-ms/pom.xml +++ b/ecomp-portal-widget-ms/pom.xml @@ -29,10 +29,6 @@ - - -- 2.16.6