summaryrefslogtreecommitdiffstats
path: root/kubernetes/portal
diff options
context:
space:
mode:
Diffstat (limited to 'kubernetes/portal')
-rw-r--r--kubernetes/portal/docker/init/ubuntu/Dockerfile11
-rw-r--r--kubernetes/portal/resources/config/log/filebeat/filebeat.yml41
-rw-r--r--kubernetes/portal/resources/config/log/portal/onapportal/logback.xml303
-rw-r--r--kubernetes/portal/resources/config/log/portal/onapportalsdk/logback.xml371
-rw-r--r--kubernetes/portal/resources/config/mariadb/oom_updates.sql8
-rwxr-xr-xkubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/fusion.properties46
-rwxr-xr-xkubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/openid-connect.properties3
-rwxr-xr-xkubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/portal.properties24
-rwxr-xr-xkubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/system.properties100
-rw-r--r--kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/fusion.properties35
-rwxr-xr-xkubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/portal.properties45
-rwxr-xr-xkubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/system.properties64
-rw-r--r--kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPWIDGETMS/application.properties35
-rw-r--r--kubernetes/portal/resources/scripts/update_hosts.sh17
-rw-r--r--kubernetes/portal/templates/all-services.yaml16
-rw-r--r--kubernetes/portal/templates/portal-apps-configmap.yaml35
-rwxr-xr-xkubernetes/portal/templates/portal-apps-deployment.yaml88
-rw-r--r--kubernetes/portal/templates/portal-logs-configmap.yaml26
-rwxr-xr-xkubernetes/portal/templates/portal-mariadb-deployment.yaml9
-rw-r--r--kubernetes/portal/templates/portal-pv-pvc.yaml14
-rw-r--r--kubernetes/portal/templates/portal-vnc-dep.yaml58
-rw-r--r--kubernetes/portal/templates/portal-widgets-deployment.yaml14
-rw-r--r--kubernetes/portal/values.yaml9
23 files changed, 1266 insertions, 106 deletions
diff --git a/kubernetes/portal/docker/init/ubuntu/Dockerfile b/kubernetes/portal/docker/init/ubuntu/Dockerfile
deleted file mode 100644
index 779a7fa921..0000000000
--- a/kubernetes/portal/docker/init/ubuntu/Dockerfile
+++ /dev/null
@@ -1,11 +0,0 @@
-FROM ubuntu:16.04
-
-ENV no_proxy "localhost,127.0.0.1,.cluster.local,$KUBERNETES_SERVICE_HOST"
-# Setup Corporate proxy
-ENV https_proxy ${HTTPS_PROXY}
-ENV http_proxy ${HTTP_PROXY}
-
-RUN apt-get update
-RUN apt-get install -y host dnsutils
-
-VOLUME /ubuntu-init
diff --git a/kubernetes/portal/resources/config/log/filebeat/filebeat.yml b/kubernetes/portal/resources/config/log/filebeat/filebeat.yml
new file mode 100644
index 0000000000..89c6932577
--- /dev/null
+++ b/kubernetes/portal/resources/config/log/filebeat/filebeat.yml
@@ -0,0 +1,41 @@
+filebeat.prospectors:
+#it is mandatory, in our case it's log
+- input_type: log
+ #This is the canolical path as mentioned in logback.xml, *.* means it will monitor all files in the directory.
+ paths:
+ - /var/log/onap/*/*/*/*.log
+ - /var/log/onap/*/*/*.log
+ - /var/log/onap/*/*.log
+ #Files older than this should be ignored.In our case it will be 48 hours i.e. 2 days. It is a helping flag for clean_inactive
+ ignore_older: 48h
+ # Remove the registry entry for a file that is more than the specified time. In our case it will be 96 hours, i.e. 4 days. It will help to keep registry records with in limit
+ clean_inactive: 96h
+
+
+# Name of the registry file. If a relative path is used, it is considered relative to the
+# data path. Else full qualified file name.
+#filebeat.registry_file: ${path.data}/registry
+
+
+output.logstash:
+ #List of logstash server ip addresses with port number.
+ #But, in our case, this will be the loadbalancer IP address.
+ #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately.
+ hosts: ["logstash.{{.Values.nsPrefix}}:5044"]
+ #If enable will do load balancing among availabe Logstash, automatically.
+ loadbalance: true
+
+ #The list of root certificates for server verifications.
+ #If certificate_authorities is empty or not set, the trusted
+ #certificate authorities of the host system are used.
+ #ssl.certificate_authorities: $ssl.certificate_authorities
+
+ #The path to the certificate for SSL client authentication. If the certificate is not specified,
+ #client authentication is not available.
+ #ssl.certificate: $ssl.certificate
+
+ #The client certificate key used for client authentication.
+ #ssl.key: $ssl.key
+
+ #The passphrase used to decrypt an encrypted key stored in the configured key file
+ #ssl.key_passphrase: $ssl.key_passphrase
diff --git a/kubernetes/portal/resources/config/log/portal/onapportal/logback.xml b/kubernetes/portal/resources/config/log/portal/onapportal/logback.xml
new file mode 100644
index 0000000000..be55dc9cff
--- /dev/null
+++ b/kubernetes/portal/resources/config/log/portal/onapportal/logback.xml
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============LICENSE_START==========================================
+ ONAP Portal
+ ===================================================================
+ Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ ===================================================================
+
+ Unless otherwise specified, all software contained herein is licensed
+ under the Apache License, Version 2.0 (the “License”);
+ you may not use this software 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.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ Unless otherwise specified, all documentation contained herein is licensed
+ under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
+ you may not use this documentation except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://creativecommons.org/licenses/by/4.0/
+
+ Unless required by applicable law or agreed to in writing, documentation
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ============LICENSE_END============================================
+
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ -->
+
+<!DOCTYPE xml>
+<configuration scan="true" scanPeriod="3 seconds" debug="true">
+ <!-- Log-back files for the ECOMP Portal are created in directory
+ ${catalina.base}/logs/${componentName}; e.g., apache-tomcat-8.0.35/logs/onapportal/application.log -->
+ <!--<jmxConfigurator /> -->
+
+ <!-- specify the component name -->
+ <property name="componentName" value="onapportal"></property>
+
+ <!-- specify the base path of the log directory -->
+ <property name="logDirPrefix" value="${catalina.base}/logs"></property>
+
+ <!-- The directories where logs are written -->
+ <property name="logDirectory" value="${logDirPrefix}/${componentName}" />
+ <!-- Can easily relocate debug logs by modifying this path. -->
+ <property name="debugLogDirectory" value="${logDirPrefix}/${componentName}" />
+
+ <!-- log file names -->
+ <property name="generalLogName" value="application" />
+ <property name="errorLogName" value="error" />
+ <property name="metricsLogName" value="metrics" />
+ <property name="auditLogName" value="audit" />
+ <property name="debugLogName" value="debug" />
+ <!-- These loggers are not used in code (yet). <property name="securityLogName"
+ value="security" /> <property name="policyLogName" value="policy" /> <property
+ name="performanceLogName" value="performance" /> <property name="serverLogName"
+ value="server" /> -->
+
+ <!-- ServerFQDN=Server, -->
+ <property name="auditLoggerPattern"
+ value="%X{AuditLogBeginTimestamp}|%X{AuditLogEndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
+
+ <property name="metricsLoggerPattern"
+ value="%X{MetricsLogBeginTimestamp}|%X{MetricsLogEndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVisualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
+
+ <property name="errorLoggerPattern"
+ value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{ClassName}|%X{AlertSeverity}|%X{ErrorCode}|%X{ErrorDescription}| %msg%n" />
+
+ <property name="defaultLoggerPattern"
+ value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ClassName}| %msg%n" />
+
+ <!-- use %class so library logging calls yield their class name -->
+ <property name="applicationLoggerPattern"
+ value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%class{36}| %msg%n" />
+
+ <!--
+ <property name="defaultPattern"
+ value="%date{ISO8601}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}| %msg%n" />
+ <property name="debugLoggerPattern"
+ value="%date{ISO8601}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}| %msg%n" />
+ -->
+ <!-- <property name="debugLoggerPattern" value="%date{ISO8601}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|[%caller{3}]|%msg%n"
+ /> -->
+ <!-- Example evaluator filter applied against console appender -->
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>${applicationLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <!-- ============================================================================ -->
+ <!-- EELF Appenders -->
+ <!-- ============================================================================ -->
+
+ <!-- The EELFAppender is used to record events to the general application
+ log -->
+
+
+ <appender name="EELF"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${generalLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- daily rollover -->
+ <fileNamePattern>${logDirectory}/${generalLogName}.log.%d{yyyy-MM-dd}.zip
+ </fileNamePattern>
+ <maxHistory>30</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${applicationLoggerPattern}</pattern>
+ </encoder>
+ <filter class="org.openecomp.portalapp.portal.utils.CustomLoggingFilter" />
+ </appender>
+
+ <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <!-- Class name is part of caller data -->
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="EELF" />
+ </appender>
+
+ <!-- EELF Security Appender. This appender is used to record security events
+ to the security log file. Security events are separate from other loggers
+ in EELF so that security log records can be captured and managed in a secure
+ way separate from the other logs. This appender is set to never discard any
+ events. -->
+ <!-- <appender name="EELFSecurity" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${securityLogName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip </fileNamePattern>
+ <minIndex>1</minIndex> <maxIndex>9</maxIndex> </rollingPolicy> <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy> <encoder> <pattern>${defaultPattern}</pattern> </encoder>
+ </appender> <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize> <discardingThreshold>0</discardingThreshold> <appender-ref
+ ref="EELFSecurity" /> </appender> -->
+
+ <!-- EELF Performance Appender. This appender is used to record performance
+ records. -->
+ <!-- <appender name="EELFPerformance" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${performanceLogName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip </fileNamePattern>
+ <minIndex>1</minIndex> <maxIndex>9</maxIndex> </rollingPolicy> <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy> <encoder> <outputPatternAsHeader>true</outputPatternAsHeader>
+ <pattern>${defaultPattern}</pattern> </encoder> </appender> <appender name="asyncEELFPerformance"
+ class="ch.qos.logback.classic.AsyncAppender"> <queueSize>256</queueSize>
+ <appender-ref ref="EELFPerformance" /> </appender> -->
+
+ <!-- EELF Server Appender. This appender is used to record Server related
+ logging events. The Server logger and appender are specializations of the
+ EELF application root logger and appender. This can be used to segregate
+ Server events from other components, or it can be eliminated to record these
+ events as part of the application root log. -->
+ <!-- <appender name="EELFServer" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${serverLogName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip </fileNamePattern>
+ <minIndex>1</minIndex> <maxIndex>9</maxIndex> </rollingPolicy> <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy> <encoder> <pattern>${defaultPattern}</pattern> </encoder>
+ </appender> <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize> <appender-ref ref="EELFServer" /> </appender> -->
+
+ <!-- EELF Policy Appender. This appender is used to record Policy engine
+ related logging events. The Policy logger and appender are specializations
+ of the EELF application root logger and appender. This can be used to segregate
+ Policy engine events from other components, or it can be eliminated to record
+ these events as part of the application root log. -->
+ <!-- <appender name="EELFPolicy" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${policyLogName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip </fileNamePattern>
+ <minIndex>1</minIndex> <maxIndex>9</maxIndex> </rollingPolicy> <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy> <encoder> <pattern>${defaultPattern}</pattern> </encoder>
+ </appender> <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize> <appender-ref ref="EELFPolicy" /> </appender> -->
+
+ <!-- EELF Audit Appender. This appender is used to record audit engine related
+ logging events. The audit logger and appender are specializations of the
+ EELF application root logger and appender. This can be used to segregate
+ Policy engine events from other components, or it can be eliminated to record
+ these events as part of the application root log. -->
+
+ <appender name="EELFAudit"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${auditLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- daily roll over -->
+ <fileNamePattern>${logDirectory}/${auditLogName}.log.%d{yyyy-MM-dd}.zip
+ </fileNamePattern>
+ <maxHistory>30</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${auditLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFAudit" />
+ </appender>
+
+ <appender name="EELFMetrics"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${metricsLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- daily roll over -->
+ <fileNamePattern>${logDirectory}/${metricsLogName}.log.%d{yyyy-MM-dd}.zip
+ </fileNamePattern>
+ <maxHistory>30</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${metricsLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+
+
+ <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFMetrics" />
+ </appender>
+
+ <appender name="EELFError"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${errorLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- daily roll over -->
+ <fileNamePattern>${logDirectory}/${errorLogName}.log.%d{yyyy-MM-dd}.zip
+ </fileNamePattern>
+ <maxHistory>30</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${errorLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFError" />
+ </appender>
+
+ <appender name="EELFDebug"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${debugLogDirectory}/${debugLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- daily roll over -->
+ <fileNamePattern>${logDirectory}/${debugLogName}.log.%d{yyyy-MM-dd}.zip
+ </fileNamePattern>
+ <maxHistory>30</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${defaultLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFDebug" />
+ <includeCallerData>true</includeCallerData>
+ </appender>
+
+
+ <!-- ============================================================================ -->
+ <!-- EELF loggers -->
+ <!-- ============================================================================ -->
+ <logger name="com.att.eelf" level="info" additivity="false">
+ <appender-ref ref="asyncEELF" />
+ </logger>
+
+ <!-- <logger name="com.att.eelf.security" level="info" additivity="false">
+ <appender-ref ref="asyncEELFSecurity" /> </logger> <logger name="com.att.eelf.perf"
+ level="info" additivity="false"> <appender-ref ref="asyncEELFPerformance"
+ /> </logger> <logger name="com.att.eelf.server" level="info" additivity="false">
+ <appender-ref ref="asyncEELFServer" /> </logger> <logger name="com.att.eelf.policy"
+ level="info" additivity="false"> <appender-ref ref="asyncEELFPolicy" /> </logger> -->
+
+ <logger name="com.att.eelf.audit" level="info" additivity="false">
+ <appender-ref ref="asyncEELFAudit" />
+ </logger>
+
+ <logger name="com.att.eelf.metrics" level="info" additivity="false">
+ <appender-ref ref="asyncEELFMetrics" />
+ </logger>
+
+ <logger name="com.att.eelf.error" level="info" additivity="false">
+ <appender-ref ref="asyncEELFError" />
+ </logger>
+
+ <logger name="com.att.eelf.debug" level="debug" additivity="false">
+ <appender-ref ref="asyncEELFDebug" />
+ </logger>
+
+ <root level="INFO">
+ <appender-ref ref="asyncEELF" />
+ </root>
+
+</configuration>
diff --git a/kubernetes/portal/resources/config/log/portal/onapportalsdk/logback.xml b/kubernetes/portal/resources/config/log/portal/onapportalsdk/logback.xml
new file mode 100644
index 0000000000..32a790c6a3
--- /dev/null
+++ b/kubernetes/portal/resources/config/log/portal/onapportalsdk/logback.xml
@@ -0,0 +1,371 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============LICENSE_START==========================================
+ ONAP Portal SDK
+ ===================================================================
+ Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ ===================================================================
+
+ Unless otherwise specified, all software contained herein is licensed
+ under the Apache License, Version 2.0 (the “License”);
+ you may not use this software 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.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ Unless otherwise specified, all documentation contained herein is licensed
+ under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
+ you may not use this documentation except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://creativecommons.org/licenses/by/4.0/
+
+ Unless required by applicable law or agreed to in writing, documentation
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ============LICENSE_END============================================
+
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ -->
+
+<configuration scan="true" scanPeriod="3 seconds" debug="true">
+ <!--
+ Logback files for the ONAP Portal SDK Application
+ are created in directory ${catalina.base}/logs/${componentName}
+ e.g., apache-tomcat-8.0.35/logs/epsdk_app/application.log
+ -->
+ <!--<jmxConfigurator /> -->
+
+ <!-- specify the component name -->
+ <property name="componentName" value="epsdk_app"></property>
+
+ <!-- specify the base path of the log directory -->
+ <property name="logDirPrefix" value="${catalina.base}/logs"></property>
+
+ <!-- The directories where logs are written -->
+ <property name="logDirectory" value="${logDirPrefix}/${componentName}" />
+ <!-- Can easily relocate debug logs by modifying this path. -->
+ <property name="debugLogDirectory" value="${logDirPrefix}/${componentName}" />
+
+ <!-- log file names -->
+ <property name="generalLogName" value="application" />
+ <property name="errorLogName" value="error" />
+ <property name="metricsLogName" value="metrics" />
+ <property name="auditLogName" value="audit" />
+ <property name="debugLogName" value="debug" />
+ <!--
+ These loggers are not used in code (yet).
+ <property name="securityLogName" value="security" />
+ <property name="policyLogName" value="policy" />
+ <property name="performanceLogName" value="performance" />
+ <property name="serverLogName" value="server" />
+ -->
+
+ <!-- 1610 Logging Fields Format Revisions -->
+ <property name="auditLoggerPattern"
+ value="%X{AuditLogBeginTimestamp}|%X{AuditLogEndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
+
+ <property name="metricsLoggerPattern"
+ value="%X{MetricsLogBeginTimestamp}|%X{MetricsLogEndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVisualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
+
+ <property name="errorLoggerPattern"
+ value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{ClassName}|%X{AlertSeverity}|%X{ErrorCode}|%X{ErrorDescription}| %msg%n" />
+
+ <property name="defaultLoggerPattern"
+ value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ClassName}| %msg%n" />
+
+ <!-- use %class so library logging calls yield their class name -->
+ <property name="applicationLoggerPattern"
+ value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%class{36}| %msg%n" />
+
+ <!-- Example evaluator filter applied against console appender -->
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>${defaultLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <!-- ============================================================================ -->
+ <!-- EELF Appenders -->
+ <!-- ============================================================================ -->
+
+ <!-- The EELFAppender is used to record events to the general application
+ log -->
+
+
+ <appender name="EELF"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${generalLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- daily rollover -->
+ <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
+
+ <!-- keep 30 days' worth of history capped at 3GB total size -->
+ <maxHistory>30</maxHistory>
+ <totalSizeCap>3GB</totalSizeCap>
+
+ </rollingPolicy>
+ <encoder>
+ <pattern>${applicationLoggerPattern}</pattern>
+ </encoder>
+ <filter class="org.onap.portalapp.util.CustomLoggingFilter" />
+ </appender>
+
+ <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <!-- Class name is part of caller data -->
+ <includeCallerData>true</includeCallerData>
+ <appender-ref ref="EELF" />
+ </appender>
+
+ <!-- EELF Security Appender. This appender is used to record security events
+ to the security log file. Security events are separate from other loggers
+ in EELF so that security log records can be captured and managed in a secure
+ way separate from the other logs. This appender is set to never discard any
+ events. -->
+ <!--
+ <appender name="EELFSecurity"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${securityLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${defaultPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <discardingThreshold>0</discardingThreshold>
+ <appender-ref ref="EELFSecurity" />
+ </appender>
+ -->
+
+ <!-- EELF Performance Appender. This appender is used to record performance
+ records. -->
+ <!--
+ <appender name="EELFPerformance"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${performanceLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <outputPatternAsHeader>true</outputPatternAsHeader>
+ <pattern>${defaultPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncEELFPerformance" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFPerformance" />
+ </appender>
+ -->
+
+ <!-- EELF Server Appender. This appender is used to record Server related
+ logging events. The Server logger and appender are specializations of the
+ EELF application root logger and appender. This can be used to segregate Server
+ events from other components, or it can be eliminated to record these events
+ as part of the application root log. -->
+ <!--
+ <appender name="EELFServer"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${serverLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${defaultPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFServer" />
+ </appender>
+ -->
+
+ <!-- EELF Policy Appender. This appender is used to record Policy engine
+ related logging events. The Policy logger and appender are specializations
+ of the EELF application root logger and appender. This can be used to segregate
+ Policy engine events from other components, or it can be eliminated to record
+ these events as part of the application root log. -->
+ <!--
+ <appender name="EELFPolicy"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${policyLogName}.log</file>
+ <rollingPolicy
+ class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>${defaultPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFPolicy" />
+ </appender>
+ -->
+
+ <!-- EELF Audit Appender. This appender is used to record audit engine
+ related logging events. The audit logger and appender are specializations
+ of the EELF application root logger and appender. This can be used to segregate
+ Policy engine events from other components, or it can be eliminated to record
+ these events as part of the application root log. -->
+
+ <appender name="EELFAudit"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${auditLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- daily rollover -->
+ <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
+
+ <!-- keep 30 days' worth of history capped at 3GB total size -->
+ <maxHistory>30</maxHistory>
+ <totalSizeCap>3GB</totalSizeCap>
+
+ </rollingPolicy>
+ <encoder>
+ <pattern>${auditLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFAudit" />
+ </appender>
+
+ <appender name="EELFMetrics"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${metricsLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- daily rollover -->
+ <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
+
+ <!-- keep 30 days' worth of history capped at 3GB total size -->
+ <maxHistory>30</maxHistory>
+ <totalSizeCap>3GB</totalSizeCap>
+
+ </rollingPolicy>
+ <encoder>
+ <pattern>${metricsLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+
+
+ <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFMetrics"/>
+ </appender>
+
+ <appender name="EELFError"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${errorLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- daily rollover -->
+ <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
+
+ <!-- keep 30 days' worth of history capped at 3GB total size -->
+ <maxHistory>30</maxHistory>
+ <totalSizeCap>3GB</totalSizeCap>
+
+ </rollingPolicy>
+ <encoder>
+ <pattern>${errorLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFError"/>
+ </appender>
+
+ <appender name="EELFDebug"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${debugLogDirectory}/${debugLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- daily rollover -->
+ <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
+
+ <!-- keep 30 days' worth of history capped at 3GB total size -->
+ <maxHistory>30</maxHistory>
+ <totalSizeCap>3GB</totalSizeCap>
+
+ </rollingPolicy>
+ <encoder>
+ <pattern>${defaultLoggerPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFDebug" />
+ </appender>
+
+
+
+
+ <logger name="org.onap.eelf" level="info" additivity="false">
+ <appender-ref ref="asyncEELF" />
+ </logger>
+
+ <logger name="org.onap.eelf.audit" level="info" additivity="false">
+ <appender-ref ref="asyncEELFAudit" />
+ </logger>
+
+ <logger name="org.onap.eelf.debug" level="debug" additivity="false">
+ <appender-ref ref="asyncEELFDebug" />
+ </logger>
+
+ <logger name="org.onap.eelf.error" level="info" additivity="false">
+ <appender-ref ref="asyncEELFError" />
+ </logger>
+
+ <logger name="org.onap.eelf.metrics" level="info" additivity="false">
+ <appender-ref ref="asyncEELFMetrics" />
+ </logger>
+
+ <root level="DEBUG">
+ <appender-ref ref="asyncEELF" />
+ </root>
+
+</configuration>
diff --git a/kubernetes/portal/resources/config/mariadb/oom_updates.sql b/kubernetes/portal/resources/config/mariadb/oom_updates.sql
new file mode 100644
index 0000000000..781b04626c
--- /dev/null
+++ b/kubernetes/portal/resources/config/mariadb/oom_updates.sql
@@ -0,0 +1,8 @@
+USE portal;
+/*
+Any updates required by OOM to the portaldb are made here.
+1. split up SDC-FE and SDC-BE. Originally both FE and BE point to the same IP
+while the OOM K8s version has these service split up.
+*/
+UPDATE fn_app SET app_rest_endpoint = 'http://sdc.api.be.simpledemo.onap.org:8080/api/v2' where app_name = 'SDC';
+UPDATE fn_app SET app_url = 'http://cli.api.simpledemo.onap.org:8080', app_type = 1 where app_name='CLI';
diff --git a/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/fusion.properties b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/fusion.properties
new file mode 100755
index 0000000000..876c5c7b9a
--- /dev/null
+++ b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/fusion.properties
@@ -0,0 +1,46 @@
+# domain settings
+#domain_class_location =
+
+# validator settings
+#default_error_message = Default error message
+
+login_url_no_ret_val = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/login.htm
+
+user_attribute_name = user
+
+# User Session settings
+roles_attribute_name = roles
+role_functions_attribute_name = role_functions
+
+# menu settings
+menu_query_name = menuData
+application_menu_set_name = APP
+application_menu_attribute_name = applicationMenuData
+business_direct_menu_set_name = BD
+business_direct_menu_attribute_name = businessDirectMenuData
+
+# ECOMP settings
+ecomp_app_id = 1
+# Role settings
+sys_admin_role_id = 1
+account_admin_role_id = 999
+restricted_app_role_id = 900
+
+# Home Page index html
+home_page = /index.html
+
+authentication_mechanism =DBAUTH
+
+login.error.hrid.empty = Login failed, please contact system administrator.
+login.error.hrid.not-found = User not found, please contact system administrator.
+login.error.user.inactive = Account is disabled, please contact system administrator.
+
+#
+# Number of seconds to poll health (database operational, etc.)
+#
+health_poll_interval_seconds = 5
+#
+# If a component is down a log entry will be written that triggers an alert. This parameter specifies how often this alert should be triggered
+# if the component remains down. For example a value of 30, would translate to 30 * 60 seconds = 1800 seconds, or every 30 minutes
+#
+health_fail_alert_every_x_intervals = 30
diff --git a/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/openid-connect.properties b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/openid-connect.properties
new file mode 100755
index 0000000000..2a33551933
--- /dev/null
+++ b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/openid-connect.properties
@@ -0,0 +1,3 @@
+authentication_server_url = http://portal.api.simpledemo.onap.org:8383/openid-connect-server-webapp/
+ecomp_openid_connect_client = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/openid_connect_login
+ecomp_redirect_uri = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/welcome.htm
diff --git a/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/portal.properties b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/portal.properties
new file mode 100755
index 0000000000..6c89f6007c
--- /dev/null
+++ b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/portal.properties
@@ -0,0 +1,24 @@
+# Not used by portal
+portal.api.impl.class = org.onap.portalsdk.core.onboarding.client.OnBoardingApiServiceImpl.not.used.by.portal
+portal.api.prefix = /api
+max.idle.time = 5
+user.attribute.name = user_attribute
+
+# for single sign on
+ecomp_redirect_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/login.htm
+
+# URL of the ECOMP Portal REST API
+ecomp_rest_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/auxapi
+
+ueb_listeners_enable = true
+
+ueb_app_key = 7GkVcrO6sIDb3ngW
+ueb_app_secret = uCYgKjWKK5IxPGNNZzYSSWo9
+ueb_app_mailbox_name = ECOMP-PORTAL-INBOX
+
+ueb_url_list = dmaap.{{.Values.nsPrefix}}
+ecomp_portal_inbox_name = ECOMP-PORTAL-INBOX
+
+# Consumer group name for UEB topic.
+# Use the special tag to generate a unique one for each sdk-app server.
+ueb_app_consumer_group_name = {UUID}
diff --git a/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/system.properties b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/system.properties
new file mode 100755
index 0000000000..345d222621
--- /dev/null
+++ b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTAL/system.properties
@@ -0,0 +1,100 @@
+#mysql
+db.driver = org.mariadb.jdbc.Driver
+db.connectionURL = jdbc:mariadb:failover://portaldb.{{.Values.nsPrefix}}:3306/portal
+db.userName =root
+db.password =Aa123456
+db.hib.dialect = org.hibernate.dialect.MySQLDialect
+db.min_pool_size = 5
+db.max_pool_size = 10
+hb.dialect = org.hibernate.dialect.MySQLDialect
+hb.show_sql = false
+hb.db_reconnect = true
+hb.idle_connection_test_period = 3600
+
+app_display_name = Portal
+files_path = /tmp
+context_root = ECOMPPORTAL
+# menu settings
+menu_query_name = menuData
+menu_properties_file_location = /WEB-INF/fusion/menu/
+application_menu_set_name = APP
+application_menu_attribute_name = applicationMenuData
+application_menu_properties_name = menu.properties
+business_direct_menu_set_name = BD
+business_direct_menu_properties_name = bd.menu.properties
+business_direct_menu_attribute_name = businessDirectMenuData
+
+application_user_id = 30000
+post_default_role_id = 1
+
+#Enable Fusion Mobile capabilities for the application
+mobile_enable = false
+
+cache_config_file_path = /WEB-INF/conf/cache.ccf
+cache_switch = 1
+cache_load_on_startup = false
+
+user_name = fullName
+decryption_key = AGLDdG4D04BKm2IxIWEr8o==
+
+
+#Cron Schedules
+cron_site_name = one
+log_cron = 0 * * * * ? *
+sessiontimeout_feed_cron = 0 0/5 * * * ? *
+
+#Front end URL
+frontend_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/applicationsHome
+
+#cookie domain
+cookie_domain = onap.org
+
+# An Unqiue 128-bit value defined to indentify a specific version of
+# ECOMP Portal deployed on a specific virtual machine.
+# This value must be generated and updated at the time of
+# the deployment.
+# Online Unique UUID generator - https://www.uuidgenerator.net/
+instance_uuid = 90bc9497-10e6-49fe-916b-dcdfaa972383
+
+elastic_search_url = http://
+contact_us_link = http://
+user_guide_link = http://
+
+# Contact Us page properties
+ush_ticket_url = http://
+feedback_email_address = portal@lists.onap.org
+portal_info_url = https://
+
+#Online user bar refresh interval, in seconds
+online_user_update_rate = 30
+
+#Online user bar refresh total duration, in seconds
+online_user_update_duration = 300
+
+#authenticate user server
+authenticate_user_server=http://portal.api.simpledemo.onap.org:8383/openid-connect-server-webapp/allUsers
+
+#window width threshold to collapse left/right menu when page onload
+window_width_threshold_left_menu = 1400
+window_width_threshold_right_menu = 1350
+
+# User notification refresh interval and duration, in seconds
+notification_update_rate = 90
+notification_update_duration = 900
+
+#Microservices Related Properties for Portal
+microservices.widget.protocol = http
+microservices.widget.hostname = portalwidgets.{{.Values.nsPrefix}}
+microservices.widget.username = widget_user
+microservices.widget.password = KpuqIB08YHg+btG+pjX+sA==
+#This property won't be needed after consul is functional on VMs -
+microservices.widget.local.port = 8082
+microservices.m-learn.local.port = 8083
+#HALO API enable flag
+external_access_enable = false
+
+#delete auditlog from number of days ago
+auditlog_del_day_from = 365
+
+#External system notification URL
+external_system_notification_url= https://jira.onap.org/browse/
diff --git a/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/fusion.properties b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/fusion.properties
new file mode 100644
index 0000000000..8ee0a95f74
--- /dev/null
+++ b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/fusion.properties
@@ -0,0 +1,35 @@
+# login settings
+login_method_backdoor = backdoor
+login_method_attribute_name = login_method
+
+# These properties will be removed after SingleSignOnController is cleaned
+authentication_mechanism = BOTH
+login_method_csp = csp
+login_method_web_junction = web_junction
+
+#login message
+login.error.hrid.empty = Login failed, please contact system administrator.
+login.error.hrid.not-found = User not found, please contact system administrator.
+login.error.user.inactive = Account is disabled, please contact system administrator.
+
+# User Session settings
+user_attribute_name = user
+roles_attribute_name = roles
+role_function_list = role_function_list
+role_functions_attribute_name = role_functions
+
+# Import-user LDAP settings
+post_initial_context_factory = com.sun.jndi.ldap.LdapCtxFactory
+post_provider_url = ldap://ldap.mycompany.com:389
+post_security_principal = ou=people,o=mycompany,c=us
+post_max_result_size = 499
+
+# menu settings
+menu_query_name = menuData
+application_menu_set_name = APP
+application_menu_attribute_name = applicationMenuData
+business_direct_menu_set_name = BD
+business_direct_menu_attribute_name = businessDirectMenuData
+
+# Role settings
+sys_admin_role_id = 1
diff --git a/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/portal.properties b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/portal.properties
new file mode 100755
index 0000000000..7eeb913f2d
--- /dev/null
+++ b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/portal.properties
@@ -0,0 +1,45 @@
+# Properties read by ECOMP Framework library, ecompFW.jar
+
+##########################################################################
+# The following properties should NOT be changed by partner applications.
+##########################################################################
+
+portal.api.prefix = /api
+max.idle.time = 5
+user.attribute.name = user_attribute
+
+#Use REST API instead of UEB to fetch the functional menu data
+use_rest_for_functional_menu=true
+
+##########################################################################
+# The following properties MUST be changed by partner applications.
+##########################################################################
+
+# Name of java class that implements the OnBoardingApiService interface.
+# epsdk 1.3 uses org.onap prefix
+portal.api.impl.class = org.onap.portalapp.service.OnBoardingApiServiceImpl
+
+# CSP Global Log On for single sign on
+ecomp_redirect_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/login.htm
+
+# URL of the ECOMP Portal REST API
+
+ecomp_rest_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/auxapi
+
+# Applications do not need to run a UEB listener in 1610.
+ueb_listeners_enable = false
+
+# UEB Configuration
+ueb_url_list = dmaap.{{.Values.nsPrefix}}
+# ECOMP Portal listens on this UEB topic
+ecomp_portal_inbox_name = ECOMP-PORTAL-INBOX
+# Replace these 3 default values with the ones for your specific App,
+# as shown on the on-boarding page on the ECOMP Portal web application.
+ueb_app_key = jQd4a9zVNi4ePyBp
+ueb_app_secret = P0HpqEBhKJvxjRYdw2sCTUll
+ueb_app_mailbox_name = ECOMP-PORTAL-OUTBOX-APP1
+# Consumer group name for UEB topic.
+# Use the special tag '{UUID}' to generate a unique one for each sdk-app server.
+ueb_app_consumer_group_name = {UUID}
+
+decryption_key = AGLDdG4D04BKm2IxIWEr8o==
diff --git a/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/system.properties b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/system.properties
new file mode 100755
index 0000000000..2f53286b56
--- /dev/null
+++ b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/system.properties
@@ -0,0 +1,64 @@
+# Properties read by ECOMP Core library, ecompSDK-core.jar
+
+##########################################################################
+# The following properties should NOT be changed by partner applications.
+##########################################################################
+
+application_user_id = 30000
+post_default_role_id = 16
+clustered = true
+
+#Enable Fusion Mobile capabilities for the application
+mobile_enable = false
+
+# Cache config file is needed on the classpath
+cache_config_file_path = /WEB-INF/classes/cache.ccf
+cache_switch = 199
+cache_load_on_startup = false
+
+user_name = fullName
+decryption_key = AGLDdG4D04BKm2IxIWEr8o==
+
+##########################################################################
+# The following properties MAY require changes by partner applications.
+##########################################################################
+
+db.driver = org.mariadb.jdbc.Driver
+db.connectionURL = jdbc:mariadb://portaldb.{{.Values.nsPrefix}}:3306/ecomp_sdk
+db.userName = root
+db.password = Aa123456
+db.min_pool_size = 5
+db.max_pool_size = 10
+hb.dialect = org.hibernate.dialect.MySQLDialect
+# SQL statements are logged to stdout
+hb.show_sql = true
+hb.idle_connection_test_period = 3600
+
+app_display_name = Demo App
+files_path = /tmp
+
+#element map files
+element_map_file_path = /tmp
+element_map_icon_path = app/fusionapp/icons/
+
+#Cron Schedules
+log_cron = 0 0/1 * * * ?;
+mylogins_feed_cron = 0 0/60 * * * ?;
+#sessiontimeout_feed_cron = 0 * * * * ? *
+my_login_feed_output_dir = /tmp/MyLogins
+
+# Link shown in Help menu
+contact_us_link = https://todo_contact_us_link.com
+
+# An Unique 128-bit value defined to identify a specific version
+# of an application deployed on a specific virtual machine.
+# This value must be generated and updated by the application
+# which is using the ECOMP SDK at the time of its deployment.
+# Online Unique UUID generator - https://www.uuidgenerator.net/
+instance_uuid=8da691c9-987d-43ed-a358-00ac2f35685d
+
+# R Cloud feature - configure this property to enable notebook feature - for more details on RCloud please visit https://rcloud.social/index.html
+guard_notebook_url=
+
+#authenticate user server
+authenticate_user_server=http://portalapps.{{.Values.nsPrefix}}:8383/openid-connect-server-webapp/allUsers
diff --git a/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPWIDGETMS/application.properties b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPWIDGETMS/application.properties
new file mode 100644
index 0000000000..3450a6d414
--- /dev/null
+++ b/kubernetes/portal/resources/config/portal-fe/webapps/etc/ONAPWIDGETMS/application.properties
@@ -0,0 +1,35 @@
+## General App Properties
+server.contextPath=/widget
+server.port=8082
+spring.http.multipart.max-file-size=128MB
+spring.http.multipart.max-request-size=128MB
+microservice.widget.location=/tmp
+
+## App DB Properties
+spring.datasource.url=jdbc:mysql://portaldb.{{.Values.nsPrefix}}:3306/portal
+spring.datasource.username=root
+spring.datasource.password=Aa123456
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
+spring.database.driver.classname=org.mariadb.jdbc.Driver
+spring.jpa.show-sql=false
+spring.jpa.properties.hibernate.format_sql=false
+
+## Basic Authentication Properties
+security.user.name=widget_user
+security.user.password=ENC(IjywcRnI9+nuVEh9+OFFiRWAjBT1n718)
+
+initialization.default.widgets=true
+initialization.widgetData.url=http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/commonWidgets
+
+## Account Basic Authentication Properties
+account.user.name=portal
+account.user.password=6APqvG4AU2rfLgCvMdySwQ==
+
+## Certificate Properties
+#server.ssl.key-store=classpath:widget-keystore.p12
+#server.ssl.key-store-password=ENC(DiIYnAMab4u7rEW2yKhF9zBL00uU55q8)
+#server.ssl.keyStoreType=PKCS12
+#server.ssl.keyAlias=widget-microservice
+
+## Jasypt Properties
+jasypt.encryptor.password=EncryptionKey
diff --git a/kubernetes/portal/resources/scripts/update_hosts.sh b/kubernetes/portal/resources/scripts/update_hosts.sh
new file mode 100644
index 0000000000..cd38fafb40
--- /dev/null
+++ b/kubernetes/portal/resources/scripts/update_hosts.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+_SRC_HOST=$1
+_DST_HOST=$2
+_IP=`getent hosts ${_SRC_HOST}|cut -d' ' -f1`
+if [ -z ${_IP} ]; then
+ echo "Cannot retreive IP for host mapping ${_SRC_HOST} -> ${_DST_HOST}"
+ exit 1
+fi
+_REGEX=".*[[:blank:]]${_DST_HOST}$"
+if grep -c -e "${_REGEX}" /etc/hosts > /dev/null 2>&1 ; then
+ cp /etc/hosts /tmp/hosts
+ sed -i "s/${_REGEX}/${_IP} ${_DST_HOST}/g" /tmp/hosts
+ cp /tmp/hosts /etc/hosts
+else
+ echo "${_IP} ${_DST_HOST}" >> /etc/hosts
+fi
diff --git a/kubernetes/portal/templates/all-services.yaml b/kubernetes/portal/templates/all-services.yaml
index 28ca0303b1..b676e3c6d1 100644
--- a/kubernetes/portal/templates/all-services.yaml
+++ b/kubernetes/portal/templates/all-services.yaml
@@ -3,7 +3,7 @@ apiVersion: v1
kind: Service
metadata:
name: portaldb
- namespace: "{{ .Values.nsPrefix }}-portal"
+ namespace: "{{ .Values.nsPrefix }}"
labels:
app: portaldb
spec:
@@ -22,7 +22,7 @@ metadata:
labels:
app: portalapps
name: portalapps
- namespace: "{{ .Values.nsPrefix }}-portal"
+ namespace: "{{ .Values.nsPrefix }}"
annotations:
msb.onap.org/service-info: '[
{
@@ -58,9 +58,9 @@ apiVersion: v1
kind: Service
metadata:
labels:
- app: vnc-portal
- name: vnc-portal
- namespace: "{{ .Values.nsPrefix }}-portal"
+ app: portal-vnc
+ name: portal-vnc
+ namespace: "{{ .Values.nsPrefix }}"
spec:
ports:
- name: tcp-1
@@ -72,7 +72,7 @@ spec:
targetPort: 5900
nodePort: {{ .Values.nodePortPrefix }}12
selector:
- app: vnc-portal
+ app: portal-vnc
type: NodePort
#{{ end }}
#{{ if not .Values.disablePortalPortalwidgets }}
@@ -81,7 +81,7 @@ apiVersion: v1
kind: Service
metadata:
name: portalwidgets
- namespace: "{{ .Values.nsPrefix }}-portal"
+ namespace: "{{ .Values.nsPrefix }}"
labels:
app: portalwidgets
spec:
@@ -91,4 +91,4 @@ spec:
selector:
app: portalwidgets
clusterIP: None
-#{{ end }} \ No newline at end of file
+#{{ end }}
diff --git a/kubernetes/portal/templates/portal-apps-configmap.yaml b/kubernetes/portal/templates/portal-apps-configmap.yaml
new file mode 100644
index 0000000000..ec3805de32
--- /dev/null
+++ b/kubernetes/portal/templates/portal-apps-configmap.yaml
@@ -0,0 +1,35 @@
+#{{ if not .Values.disablePortalPortalapps }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: portal-onap-portal-sdk-configmap
+ namespace: {{ .Values.nsPrefix }}
+data:
+{{ tpl (.Files.Glob "resources/config/portal-fe/webapps/etc/ONAPPORTALSDK/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: portal-onap-portal-configmap
+ namespace: {{ .Values.nsPrefix }}
+data:
+{{ tpl (.Files.Glob "resources/config/portal-fe/webapps/etc/ONAPPORTAL/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: portal-mariadb-configmap
+ namespace: {{ .Values.nsPrefix }}
+data:
+{{ tpl (.Files.Glob "resources/config/mariadb/oom_updates.sql").AsConfig . | indent 2 }}
+#{{ end }}
+---
+#{{ if not .Values.disablePortalPortalwidgets }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: portal-onapwidgetms-configmap
+ namespace: {{ .Values.nsPrefix }}
+data:
+{{ tpl (.Files.Glob "resources/config/portal-fe/webapps/etc/ONAPWIDGETMS/application.properties").AsConfig . | indent 2 }}
+#{{ end }}
diff --git a/kubernetes/portal/templates/portal-apps-deployment.yaml b/kubernetes/portal/templates/portal-apps-deployment.yaml
index 761441acc3..e00151c714 100755
--- a/kubernetes/portal/templates/portal-apps-deployment.yaml
+++ b/kubernetes/portal/templates/portal-apps-deployment.yaml
@@ -2,9 +2,10 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
- name: portalapps
- namespace: "{{ .Values.nsPrefix }}-portal"
+ name: portal-apps
+ namespace: "{{ .Values.nsPrefix }}"
spec:
+ replicas: {{ .Values.portalAppsReplicas }}
selector:
matchLabels:
app: portalapps
@@ -12,7 +13,7 @@ spec:
metadata:
labels:
app: portalapps
- name: portalapps
+ name: portal-apps
spec:
initContainers:
- command:
@@ -33,11 +34,19 @@ spec:
volumeMounts:
- mountPath: /portal-mysql/oom_updates.sql
name: portal-mariadb-onboarding-sql
+ subPath: oom_updates.sql
- mountPath: /portal_root/
name: portal-root
image: {{ .Values.image.mariadbClient }}
imagePullPolicy: {{ .Values.pullPolicy }}
name: provision-portaldb-users
+ - command: ["/bin/bash", "-c", "mkdir -p /ubuntu-init/ && chmod -R 777 /ubuntu-init/"]
+ volumeMounts:
+ - name: portal-logs
+ mountPath: /ubuntu-init/
+ image: {{ .Values.image.ubuntuInit }}
+ imagePullPolicy: {{ .Values.pullPolicy }}
+ name: portal-app-logs-init
containers:
- image: {{ .Values.image.portalapps }}
imagePullPolicy: {{ .Values.pullPolicy }}
@@ -51,23 +60,32 @@ spec:
name: localtime
readOnly: true
- mountPath: "{{ .Values.onapPortal.webappsDir }}/ONAPPORTAL/WEB-INF/fusion/conf/fusion.properties"
- name: portal-fusion-properties
+ name: onap-portal-properties
+ subPath: fusion.properties
- mountPath: "{{ .Values.onapPortal.webappsDir }}/ONAPPORTAL/WEB-INF/classes/openid-connect.properties"
- name: portal-openid-connect-properties
+ name: onap-portal-properties
+ subPath: openid-connect.properties
- mountPath: "{{ .Values.onapPortal.webappsDir }}/ONAPPORTAL/WEB-INF/conf/system.properties"
- name: portal-system-properties
+ name: onap-portal-properties
+ subPath: system.properties
- mountPath: "{{ .Values.onapPortal.webappsDir }}/ONAPPORTAL/WEB-INF/classes/portal.properties"
- name: portal-portal-properties
+ name: onap-portal-properties
+ subPath: portal.properties
- mountPath: "{{ .Values.onapPortal.webappsDir }}/ONAPPORTAL/WEB-INF/classes/logback.xml"
name: portal-logback
+ subPath: logback.xml
- mountPath: "{{ .Values.onapPortal.webappsDir }}/ONAPPORTALSDK/WEB-INF/conf/system.properties"
- name: sdkapp-system-properties
+ name: portal-sdkapp-properties
+ subPath: system.properties
- mountPath: "{{ .Values.onapPortal.webappsDir }}/ONAPPORTALSDK/WEB-INF/classes/portal.properties"
- name: sdkapp-portal-properties
+ name: portal-sdkapp-properties
+ subPath: portal.properties
- mountPath: "{{ .Values.onapPortal.webappsDir }}/ONAPPORTALSDK/WEB-INF/fusion/conf/fusion.properties"
- name: sdkapp-fusion-properties
+ name: portal-sdkapp-properties
+ subPath: fusion.properties
- mountPath: "{{ .Values.onapPortal.webappsDir }}/ONAPPORTALSDK/WEB-INF/classes/logback.xml"
name: sdkapp-logback
+ subPath: logback.xml
- mountPath: /portal_root/
name: portal-root
- mountPath: "{{ .Values.onapPortal.webappsDir }}/logs"
@@ -89,6 +107,7 @@ spec:
volumeMounts:
- mountPath: /usr/share/filebeat/filebeat.yml
name: filebeat-conf
+ subPath: filebeat.yml
- mountPath: /var/log/onap
name: portal-logs2
- mountPath: /usr/share/filebeat/data
@@ -98,48 +117,35 @@ spec:
hostPath:
path: /etc/localtime
- name: filebeat-conf
- hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/log/filebeat/logback/filebeat.yml
+ configMap:
+ name: portal-filebeat-configmap
- name: portal-logs2
emptyDir: {}
- name: portal-data-filebeat
emptyDir: {}
- - name: portal-fusion-properties
- hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/portal/portal-fe/webapps/etc/ONAPPORTAL/fusion.properties
- - name: portal-openid-connect-properties
- hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/portal/portal-fe/webapps/etc/ONAPPORTAL/openid-connect.properties
- - name: portal-system-properties
- hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/portal/portal-fe/webapps/etc/ONAPPORTAL/system.properties
- - name: portal-portal-properties
- hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/portal/portal-fe/webapps/etc/ONAPPORTAL/portal.properties
+ - name: onap-portal-properties
+ configMap:
+ defaultMode: 0755
+ name: portal-onap-portal-configmap
+ - name: portal-sdkapp-properties
+ configMap:
+ defaultMode: 0755
+ name: portal-onap-portal-sdk-configmap
- name: portal-logback
- hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/log/portal/onapportal/logback.xml
- - name: sdkapp-system-properties
- hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/portal/portal-fe/webapps/etc/ONAPPORTALSDK/system.properties
- - name: sdkapp-portal-properties
- hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/portal/portal-fe/webapps/etc/ONAPPORTALSDK/portal.properties
- - name: sdkapp-fusion-properties
- hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/portal/portal-fe/webapps/etc/ONAPPORTALSDK/fusion.properties
+ configMap:
+ name: portal-onapportal-log-configmap
- name: sdkapp-logback
- hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/log/portal/onapportalsdk/logback.xml
+ configMap:
+ name: portal-onapportalsdk-log-configmap
- name: portal-mariadb-onboarding-sql
- hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/portal/mariadb/oom_updates.sql
+ configMap:
+ name: portal-mariadb-configmap
- name: portal-root
hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/portal
+ path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/portal
- name: portal-logs
hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/portal/logs
+ path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/portal/logs
imagePullSecrets:
- name: "{{ .Values.nsPrefix }}-docker-registry-key"
#{{ end }}
diff --git a/kubernetes/portal/templates/portal-logs-configmap.yaml b/kubernetes/portal/templates/portal-logs-configmap.yaml
new file mode 100644
index 0000000000..60abcb78c8
--- /dev/null
+++ b/kubernetes/portal/templates/portal-logs-configmap.yaml
@@ -0,0 +1,26 @@
+#{{ if not .Values.disablePortalPortalapps }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: portal-filebeat-configmap
+ namespace: {{ .Values.nsPrefix }}
+data:
+{{ tpl (.Files.Glob "resources/config/log/filebeat/filebeat.yml").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: portal-onapportal-log-configmap
+ namespace: {{ .Values.nsPrefix }}
+data:
+{{ tpl (.Files.Glob "resources/config/log/portal/onapportal/logback.xml").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: portal-onapportalsdk-log-configmap
+ namespace: {{ .Values.nsPrefix }}
+data:
+{{ tpl (.Files.Glob "resources/config/log/portal/onapportalsdk/logback.xml").AsConfig . | indent 2 }}
+#{{ end }}
+
diff --git a/kubernetes/portal/templates/portal-mariadb-deployment.yaml b/kubernetes/portal/templates/portal-mariadb-deployment.yaml
index fafcad2772..828779eaa9 100755
--- a/kubernetes/portal/templates/portal-mariadb-deployment.yaml
+++ b/kubernetes/portal/templates/portal-mariadb-deployment.yaml
@@ -2,9 +2,10 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
- name: portaldb
- namespace: "{{ .Values.nsPrefix }}-portal"
+ name: portal-db
+ namespace: "{{ .Values.nsPrefix }}"
spec:
+ replicas: {{ .Values.portalDbReplicas }}
selector:
matchLabels:
app: portaldb
@@ -12,7 +13,7 @@ spec:
metadata:
labels:
app: portaldb
- name: portaldb
+ name: portal-db
spec:
containers:
- image: {{ .Values.image.portaldb}}
@@ -20,7 +21,7 @@ spec:
name: "portaldb"
env:
- name: MYSQL_HOST
- value: "portaldb.{{ .Values.nsPrefix }}-portal"
+ value: "portaldb.{{ .Values.nsPrefix }}"
- name: MYSQL_ROOT_PASSWORD
value: Aa123456
volumeMounts:
diff --git a/kubernetes/portal/templates/portal-pv-pvc.yaml b/kubernetes/portal/templates/portal-pv-pvc.yaml
index b4d2baa334..1f554bc34a 100644
--- a/kubernetes/portal/templates/portal-pv-pvc.yaml
+++ b/kubernetes/portal/templates/portal-pv-pvc.yaml
@@ -2,10 +2,10 @@
apiVersion: v1
kind: PersistentVolume
metadata:
- name: "{{ .Values.nsPrefix }}-portal-db"
- namespace: "{{ .Values.nsPrefix }}-portal"
+ name: "{{ .Values.nsPrefix }}-portal"
+ namespace: "{{ .Values.nsPrefix }}"
labels:
- name: "{{ .Values.nsPrefix }}-portal-db"
+ name: "{{ .Values.nsPrefix }}-portal"
spec:
capacity:
storage: 2Gi
@@ -13,13 +13,13 @@ spec:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/portal/mariadb/data
+ path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/portal/mariadb/data
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: portal-db
- namespace: "{{ .Values.nsPrefix }}-portal"
+ namespace: "{{ .Values.nsPrefix }}"
spec:
accessModes:
- ReadWriteMany
@@ -28,5 +28,5 @@ spec:
storage: 2Gi
selector:
matchLabels:
- name: "{{ .Values.nsPrefix }}-portal-db"
-#{{ end }} \ No newline at end of file
+ name: "{{ .Values.nsPrefix }}-portal"
+#{{ end }}
diff --git a/kubernetes/portal/templates/portal-vnc-dep.yaml b/kubernetes/portal/templates/portal-vnc-dep.yaml
index 536ac37396..0680a8ab24 100644
--- a/kubernetes/portal/templates/portal-vnc-dep.yaml
+++ b/kubernetes/portal/templates/portal-vnc-dep.yaml
@@ -1,27 +1,36 @@
#{{ if not .Values.disablePortalVncPortal }}
kind: ConfigMap
metadata:
- name: vnc-profiles-ini
- namespace: "{{ .Values.nsPrefix }}-portal"
+ name: portal-vnc-profiles-ini
+ namespace: "{{ .Values.nsPrefix }}"
data:
{{ (.Files.Glob "resources/vnc/init_profile/profiles.ini").AsConfig | indent 2 }}
---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: portal-vnc-update-hosts
+ namespace: "{{ .Values.nsPrefix }}"
+data:
+{{ (.Files.Glob "resources/scripts/update_hosts.sh").AsConfig | indent 2 }}
+---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
- app: vnc-portal
- name: vnc-portal
- namespace: "{{ .Values.nsPrefix }}-portal"
+ app: portal-vnc
+ name: portal-vnc
+ namespace: "{{ .Values.nsPrefix }}"
spec:
+ replicas: {{ .Values.vncPortalReplicas }}
selector:
matchLabels:
- app: vnc-portal
+ app: portal-vnc
template:
metadata:
labels:
- app: vnc-portal
- name: vnc-portal
+ app: portal-vnc
+ name: portal-vnc
spec:
initContainers:
- command:
@@ -37,7 +46,7 @@ spec:
fieldPath: metadata.namespace
image: {{ .Values.image.readiness }}
imagePullPolicy: {{ .Values.pullPolicy }}
- name: vnc-portal-readiness
+ name: portal-vnc-readiness
- command:
- /root/ready.py
args:
@@ -45,7 +54,7 @@ spec:
- pap
env:
- name: NAMESPACE
- value: {{ .Values.nsPrefix }}-policy
+ value: {{ .Values.nsPrefix }}
image: {{ .Values.image.readiness }}
imagePullPolicy: {{ .Values.pullPolicy }}
name: vnc-pap-readiness
@@ -56,7 +65,7 @@ spec:
- sdc-fe
env:
- name: NAMESPACE
- value: {{ .Values.nsPrefix }}-sdc
+ value: {{ .Values.nsPrefix }}
image: {{ .Values.image.readiness }}
imagePullPolicy: {{ .Values.pullPolicy }}
name: vnc-sdc-readiness
@@ -67,38 +76,31 @@ spec:
- vid-server
env:
- name: NAMESPACE
- value: {{ .Values.nsPrefix }}-vid
+ value: {{ .Values.nsPrefix }}
image: {{ .Values.image.readiness }}
imagePullPolicy: {{ .Values.pullPolicy }}
name: vnc-vid-readiness
- - command: ["/bin/sh","-c"]
- args: ["echo `host sdc-be.{{ .Values.nsPrefix }}-sdc | awk ''{print$4}''` sdc.api.be.simpledemo.onap.org >> /ubuntu-init/hosts; echo `host portalapps.{{ .Values.nsPrefix }}-portal | awk ''{print$4}''` portal.api.simpledemo.onap.org >> /ubuntu-init/hosts; echo `host pap.{{ .Values.nsPrefix }}-policy | awk ''{print$4}''` policy.api.simpledemo.onap.org >> /ubuntu-init/hosts; echo `host sdc-fe.{{ .Values.nsPrefix }}-sdc | awk ''{print$4}''` sdc.api.simpledemo.onap.org >> /ubuntu-init/hosts; echo `host vid-server.{{ .Values.nsPrefix }}-vid | awk ''{print$4}''` vid.api.simpledemo.onap.org >> /ubuntu-init/hosts; echo `host sparky-be.{{ .Values.nsPrefix }}-aai | awk ''{print$4}''` aai.api.simpledemo.onap.org >> /ubuntu-init/hosts"]
- image: {{ .Values.image.ubuntuInit }}
- imagePullPolicy: {{ .Values.pullPolicy }}
- name: vnc-init-hosts
- volumeMounts:
- - name: ubuntu-init
- mountPath: /ubuntu-init/
containers:
- image: {{ .Values.image.ubuntuDesktop }}
imagePullPolicy: {{ .Values.pullPolicy }}
lifecycle:
postStart:
exec:
- command: ["/bin/sh", "-c", "mkdir -p /root/.mozilla/firefox/onap.default; cp /root/.init_profile/profiles.ini /root/.mozilla/firefox/; echo 'user_pref(\"browser.tabs.remote.autostart.2\", false);' > /root/.mozilla/firefox/onap.default/prefs.js; cat /ubuntu-init/hosts >> /etc/hosts"]
+ command: ["/bin/sh", "-c", "mkdir -p /root/.mozilla/firefox/onap.default; cp /root/.init_profile/profiles.ini /root/.mozilla/firefox/; echo 'user_pref(\"browser.tabs.remote.autostart.2\", false);' > /root/.mozilla/firefox/onap.default/prefs.js; (while true; do /tmp/update_hosts.sh sdc-be.{{ .Values.nsPrefix }} sdc.api.be.simpledemo.onap.org; /tmp/update_hosts.sh portalapps.{{ .Values.nsPrefix }} portal.api.simpledemo.onap.org; /tmp/update_hosts.sh pap.{{ .Values.nsPrefix }} policy.api.simpledemo.onap.org; /tmp/update_hosts.sh sdc-fe.{{ .Values.nsPrefix }} sdc.api.simpledemo.onap.org; /tmp/update_hosts.sh vid-server.{{ .Values.nsPrefix }} vid.api.simpledemo.onap.org; /tmp/update_hosts.sh sparky-be.{{ .Values.nsPrefix }} aai.api.simpledemo.onap.org; /tmp/update_hosts.sh cli.{{ .Values.nsPrefix }} cli.api.simpledemo.onap.org; sleep 10; done) > update_hosts.log 2>&1 &"]
env:
- name: VNC_PASSWORD
value: password
- name: vnc-portal
+ name: portal-vnc
volumeMounts:
- mountPath: /etc/localtime
name: localtime
readOnly: true
- - mountPath: /ubuntu-init/
- name: ubuntu-init
- mountPath: /root/.init_profile/profiles.ini
name: vnc-profiles-ini
subPath: profiles.ini
+ - mountPath: /tmp/update_hosts.sh
+ name: vnc-update-hosts
+ subPath: update_hosts.sh
securityContext:
privileged: true
securityContext: {}
@@ -106,11 +108,13 @@ spec:
- name: localtime
hostPath:
path: /etc/localtime
- - name: ubuntu-init
- emptyDir: {}
- name: vnc-profiles-ini
configMap:
- name: vnc-profiles-ini
+ name: portal-vnc-profiles-ini
+ - name: vnc-update-hosts
+ configMap:
+ name: portal-vnc-update-hosts
+ defaultMode: 0755
imagePullSecrets:
- name: "{{ .Values.nsPrefix }}-docker-registry-key"
#{{ end }}
diff --git a/kubernetes/portal/templates/portal-widgets-deployment.yaml b/kubernetes/portal/templates/portal-widgets-deployment.yaml
index 600419399e..d5237caf33 100644
--- a/kubernetes/portal/templates/portal-widgets-deployment.yaml
+++ b/kubernetes/portal/templates/portal-widgets-deployment.yaml
@@ -2,9 +2,10 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
- name: portalwidgets
- namespace: "{{ .Values.nsPrefix }}-portal"
+ name: portal-widgets
+ namespace: "{{ .Values.nsPrefix }}"
spec:
+ replicas: {{ .Values.portalWidgetsReplicas }}
selector:
matchLabels:
app: portalwidgets
@@ -12,7 +13,7 @@ spec:
metadata:
labels:
app: portalwidgets
- name: portalwidgets
+ name: portal-widgets
spec:
initContainers:
- command:
@@ -31,7 +32,7 @@ spec:
name: portalapps-readiness
containers:
- image: {{ .Values.image.portalwms }}
- imagePullPolicy: {{ .Values.pullPolicy }}
+ imagePullPolicy: {{ .Values.pullPolicy }}
name: portalwidgets
volumeMounts:
- mountPath: /etc/localtime
@@ -39,6 +40,7 @@ spec:
readOnly: true
- mountPath: /application.properties
name: portalwidgets-application-properties
+ subPath: application.properties
ports:
- containerPort: 8082
readinessProbe:
@@ -51,8 +53,8 @@ spec:
hostPath:
path: /etc/localtime
- name: portalwidgets-application-properties
- hostPath:
- path: /dockerdata-nfs/{{ .Values.nsPrefix }}/portal/portal-fe/webapps/etc/ONAPWIDGETMS/application.properties
+ configMap:
+ name: portal-onapwidgetms-configmap
imagePullSecrets:
- name: "{{ .Values.nsPrefix }}-docker-registry-key"
#{{ end }}
diff --git a/kubernetes/portal/values.yaml b/kubernetes/portal/values.yaml
index aaa781995a..abac400ba3 100644
--- a/kubernetes/portal/values.yaml
+++ b/kubernetes/portal/values.yaml
@@ -1,14 +1,19 @@
nsPrefix: onap
pullPolicy: Always
nodePortPrefix: 302
+portalAppsReplicas: 1
+portalDbReplicas: 1
+vncPortalReplicas: 1
+portalWidgetsReplicas: 1
+dataRootDir: /dockerdata-nfs
image:
- readiness: oomk8s/readiness-check:1.0.0
+ readiness: oomk8s/readiness-check:1.1.0
portalapps: nexus3.onap.org:10001/onap/portal-apps:v1.3.0
portaldb: nexus3.onap.org:10001/onap/portal-db:v1.3.0
mariadbClient: oomk8s/mariadb-client-init:1.0.0
portalwms: nexus3.onap.org:10001/onap/portal-wms:v1.3.0
- ubuntuInit: oomk8s/ubuntu-init:1.0.0
ubuntuDesktop: dorowu/ubuntu-desktop-lxde-vnc
filebeat: docker.elastic.co/beats/filebeat:5.5.0
+ ubuntuInit: oomk8s/ubuntu-init:1.0.0
onapPortal:
webappsDir: "/opt/apache-tomcat-8.0.37/webapps"