diff options
Diffstat (limited to 'kubernetes/pomba')
40 files changed, 290 insertions, 566 deletions
diff --git a/kubernetes/pomba/Chart.yaml b/kubernetes/pomba/Chart.yaml index 0124bc1943..b1899fd72d 100644 --- a/kubernetes/pomba/Chart.yaml +++ b/kubernetes/pomba/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1 description: ONAP Post Orchestration Model Based Audit name: pomba -version: 3.0.0 +version: 4.0.0 diff --git a/kubernetes/pomba/charts/pomba-aaictxbuilder/Chart.yaml b/kubernetes/pomba/charts/pomba-aaictxbuilder/Chart.yaml index f64eb73ba4..7ec60c580c 100644 --- a/kubernetes/pomba/charts/pomba-aaictxbuilder/Chart.yaml +++ b/kubernetes/pomba/charts/pomba-aaictxbuilder/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1 description: ONAP POMBA AAI Context Builder name: pomba-aaictxbuilder -version: 3.0.0 +version: 4.0.0 diff --git a/kubernetes/pomba/charts/pomba-aaictxbuilder/requirements.yaml b/kubernetes/pomba/charts/pomba-aaictxbuilder/requirements.yaml index cf4086962c..509eaddf3d 100644 --- a/kubernetes/pomba/charts/pomba-aaictxbuilder/requirements.yaml +++ b/kubernetes/pomba/charts/pomba-aaictxbuilder/requirements.yaml @@ -14,5 +14,5 @@ dependencies: - name: common - version: ~3.0.0 + version: ~4.x-0 repository: '@local' diff --git a/kubernetes/pomba/charts/pomba-aaictxbuilder/resources/config/application.properties b/kubernetes/pomba/charts/pomba-aaictxbuilder/resources/config/application.properties index 41ec250ac8..790707914d 100644 --- a/kubernetes/pomba/charts/pomba-aaictxbuilder/resources/config/application.properties +++ b/kubernetes/pomba/charts/pomba-aaictxbuilder/resources/config/application.properties @@ -43,7 +43,7 @@ aai.readTimeout={{ .Values.config.aaiReadTimeout }} http.userId={{ .Values.config.httpUserId }} http.password={{ .Values.config.httpPassword }} -aai.searchNodeQuery=/aai/v11/search/nodes-query?search-node-type=service-instance&filter=service-instance-id:EQUALS: +aai.searchNodeQuery=/aai/v13/search/nodes-query?search-node-type=service-instance&filter=service-instance-id:EQUALS: #Servlet context parameters server.context_parameters.p-name=value #context parameter with p-name as key and value as value. diff --git a/kubernetes/pomba/charts/pomba-aaictxbuilder/resources/config/logback.xml b/kubernetes/pomba/charts/pomba-aaictxbuilder/resources/config/logback.xml index 9991b8b1b0..0a4b616453 100644 --- a/kubernetes/pomba/charts/pomba-aaictxbuilder/resources/config/logback.xml +++ b/kubernetes/pomba/charts/pomba-aaictxbuilder/resources/config/logback.xml @@ -1,235 +1,31 @@ -<configuration scan="true" scanPeriod="10 seconds" debug="false"> - <jmxConfigurator /> - <property name="logDirectory" value="/var/log/onap/pomba-aaictxbuilder" /> - <!-- Example evaluator filter applied against console appender --> - <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> - <!-- filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> - <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter --> - <!-- deny all events with a level below INFO, that is TRACE and DEBUG --> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <encoder> - <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n - </pattern> - </encoder> - </appender> - - <appender name="ERROR" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <file>${logDirectory}/error.log</file> - <append>true</append> - <encoder> - <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", UTC}|%X{RequestId}|%.20thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDescription}|%msg%n</pattern> - </encoder> - <rollingPolicy - class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> - <maxIndex>10</maxIndex> - <FileNamePattern>${logDirectory}/error.%i.log.zip - </FileNamePattern> - </rollingPolicy> - <triggeringPolicy - class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> - <maxFileSize>10MB</maxFileSize> - </triggeringPolicy> - </appender> - - <appender name="DEBUG" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/debug.log</file> - <append>true</append> - <encoder> - <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX",UTC}|%X{RequestId}|%.20thread|%.-5level|%logger{36}|%msg%n</pattern> - </encoder> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/debug.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>10MB</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>5</maxHistory> - </rollingPolicy> - </appender> - - <appender name="AUDIT" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/audit.log</file> - <append>true</append> - <encoder> - <pattern>%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%.20thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n - </pattern> - </encoder> - <rollingPolicy - class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> - <maxIndex>10</maxIndex> - <FileNamePattern>${logDirectory}/audit.%i.log.zip - </FileNamePattern> - </rollingPolicy> - <triggeringPolicy - class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> - <maxFileSize>10MB</maxFileSize> - </triggeringPolicy> - </appender> - <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="AUDIT" /> - </appender> - - <appender name="METRIC" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/metric.log</file> - <append>true</append> - <encoder> - <pattern>%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%.20thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| - %msg%n</pattern> - </encoder> - <rollingPolicy - class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> - <maxIndex>10</maxIndex> - <FileNamePattern>${logDirectory}/metric.%i.log.zip - </FileNamePattern> - </rollingPolicy> - <triggeringPolicy - class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> - <maxFileSize>10MB</maxFileSize> - </triggeringPolicy> - </appender> - <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="METRIC" /> - </appender> - - <!-- SECURITY related loggers --> - <appender name="SECURITY" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/security.log</file> - <append>true</append> - <encoder> - <pattern>%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%.20thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n - </pattern> - </encoder> - <rollingPolicy - class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> - <maxIndex>10</maxIndex> - <FileNamePattern>${logDirectory}/security.%i.log.zip - </FileNamePattern> - </rollingPolicy> - <triggeringPolicy - class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> - <maxFileSize>10MB</maxFileSize> - </triggeringPolicy> - </appender> - <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="SECURITY" /> - </appender> - - <!-- CLDS related loggers --> - <logger name="org.onap.pomba.clds" level="INFO" additivity="true"> - <appender-ref ref="ERROR" /> - </logger> - - <!-- CLDS related loggers --> - <logger name="com.att.eelf.error" level="OFF" additivity="true"> - <appender-ref ref="ERROR" /> - </logger> - <!-- EELF related loggers --> - <logger name="com.att.eelf.audit" level="INFO" additivity="false"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - <logger name="com.att.eelf.metrics" level="DEBUG" additivity="false"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - <logger name="com.att.eelf.security" level="DEBUG" additivity="false"> - <appender-ref ref="asyncEELFSecurity" /> - </logger> - - - <!-- Spring related loggers --> - <logger name="org.springframework" level="WARN" /> - <logger name="org.springframework.beans" level="WARN" /> - <logger name="org.springframework.web" level="WARN" /> - <logger name="com.blog.spring.jms" level="WARN" /> - - <!-- Other Loggers that may help troubleshoot --> - <logger name="net.sf" level="WARN" /> - <logger name="org.apache.commons.httpclient" level="WARN" /> - <logger name="org.apache.commons" level="WARN" /> - <logger name="org.apache.coyote" level="WARN" /> - <logger name="org.apache.jasper" level="WARN" /> - - <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. - May aid in troubleshooting) --> - <logger name="org.apache.camel" level="WARN" /> - <logger name="org.apache.cxf" level="WARN" /> - <logger name="org.apache.camel.processor.interceptor" level="WARN" /> - <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" /> - <logger name="org.apache.cxf.service" level="WARN" /> - <logger name="org.restlet" level="DEBUG" /> - <logger name="org.apache.camel.component.restlet" level="DEBUG" /> - - <!-- logback internals logging --> - <logger name="ch.qos.logback.classic" level="INFO" /> - <logger name="ch.qos.logback.core" level="INFO" /> - - <!-- logback jms appenders & loggers definition starts here --> - <!-- logback jms appenders & loggers definition starts here --> - <appender name="auditLogs" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - </filter> - <file>${logDirectory}/Audit.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> - <fileNamePattern>${logDirectory}/Audit.%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>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern> - </encoder> - </appender> - <appender name="perfLogs" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - </filter> - <file>${logDirectory}/Perform.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> - <fileNamePattern>${logDirectory}/Perform.%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>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern> - </encoder> - </appender> - <logger name="AuditRecord" level="INFO" additivity="FALSE"> - <appender-ref ref="auditLogs" /> - </logger> - <logger name="AuditRecord_DirectCall" level="INFO" additivity="FALSE"> - <appender-ref ref="auditLogs" /> - </logger> - <logger name="PerfTrackerRecord" level="INFO" additivity="FALSE"> - <appender-ref ref="perfLogs" /> - </logger> - <!-- logback jms appenders & loggers definition ends here --> - - <root level="WARN"> - <appender-ref ref="DEBUG" /> - <appender-ref ref="STDOUT" /> - </root> - +<configuration > + <property name="p_tim" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}"/> + <property name="p_lvl" value="%level"/> + <property name="p_log" value="%logger"/> + <property name="p_mdc" value="%replace(%replace(%mdc){'\t','\\\\t'}){'\n', '\\\\n'}"/> + <property name="p_msg" value="%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}"/> + <property name="p_exc" value="%replace(%replace(%rootException){'\t', '\\\\t'}){'\n','\\\\n'}"/> + <!-- tabs --> + <property name="p_mak" value="%replace(%replace(%marker){'\t', '\\\\t'}){'\n','\\\\n'}"/> + <property name="p_thr" value="%thread"/> + <property name="pattern" value="%nopexception${p_tim}\t${p_thr}\t${p_lvl}\t${p_log}\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t%n"/> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <appender name="FILE" class="ch.qos.logback.core.FileAppender"> + <file>/opt/app/logs/EELF/output.log</file> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + <logger level="INFO" name="org.onap.logging.ref.slf4j" additivity="false"> + <appender-ref ref="STDOUT" /> + <appender-ref ref="FILE" /> + </logger> + <root level="info"> + <appender-ref ref="STDOUT" /> + <appender-ref ref="FILE" /> + </root> </configuration> diff --git a/kubernetes/pomba/charts/pomba-aaictxbuilder/templates/deployment.yaml b/kubernetes/pomba/charts/pomba-aaictxbuilder/templates/deployment.yaml index 6d46e9de09..d8210b32fc 100644 --- a/kubernetes/pomba/charts/pomba-aaictxbuilder/templates/deployment.yaml +++ b/kubernetes/pomba/charts/pomba-aaictxbuilder/templates/deployment.yaml @@ -56,15 +56,20 @@ spec: name: localtime readOnly: true - name: {{ include "common.fullname" . }}-logs - mountPath: /var/log/onap + mountPath: /opt/app/logs + readOnly: false - mountPath: /opt/app/config/logback.xml name: {{ include "common.fullname" . }}-log-conf subPath: logback.xml + - name: {{ include "common.fullname" . }}-logs-eelf + mountPath: /opt/app/logs/EELF + readOnly: false - mountPath: /opt/app/config/application.properties name: {{ include "common.fullname" . }}-config subPath: application.properties readOnly: true + resources: {{ include "common.resources" . | indent 12 }} {{- if .Values.nodeSelector }} @@ -87,7 +92,7 @@ spec: - name: {{ include "common.fullname" . }}-data-filebeat mountPath: /usr/share/filebeat/data - name: {{ include "common.fullname" . }}-logs - mountPath: /var/log/onap + mountPath: /opt/app/logs volumes: - name: localtime @@ -106,7 +111,8 @@ spec: emptyDir: {} - name: {{ include "common.fullname" . }}-logs emptyDir: {} - + - name: {{ include "common.fullname" . }}-logs-eelf + emptyDir: {} imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/pomba/charts/pomba-aaictxbuilder/values.yaml b/kubernetes/pomba/charts/pomba-aaictxbuilder/values.yaml index b612389407..f6e13eb482 100644 --- a/kubernetes/pomba/charts/pomba-aaictxbuilder/values.yaml +++ b/kubernetes/pomba/charts/pomba-aaictxbuilder/values.yaml @@ -54,14 +54,14 @@ affinity: {} # probe configuration parameters liveness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 # necessary to disable liveness probe when setting breakpoints # in debugger so K8s doesn't restart unresponsive container enabled: true readiness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 #Example service definition with external, internal and node ports. diff --git a/kubernetes/pomba/charts/pomba-contextaggregator/Chart.yaml b/kubernetes/pomba/charts/pomba-contextaggregator/Chart.yaml index 28bd0ec88a..77182fb07e 100644 --- a/kubernetes/pomba/charts/pomba-contextaggregator/Chart.yaml +++ b/kubernetes/pomba/charts/pomba-contextaggregator/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1 description: ONAP POMBA Context Aggregator name: pomba-contextaggregator -version: 3.0.0 +version: 4.0.0 diff --git a/kubernetes/pomba/charts/pomba-contextaggregator/requirements.yaml b/kubernetes/pomba/charts/pomba-contextaggregator/requirements.yaml index 896eaf4baa..1d30dfd918 100755 --- a/kubernetes/pomba/charts/pomba-contextaggregator/requirements.yaml +++ b/kubernetes/pomba/charts/pomba-contextaggregator/requirements.yaml @@ -14,5 +14,5 @@ dependencies: - name: common - version: ~3.0.0 + version: ~4.x-0 repository: '@local'
\ No newline at end of file diff --git a/kubernetes/pomba/charts/pomba-contextaggregator/values.yaml b/kubernetes/pomba/charts/pomba-contextaggregator/values.yaml index d2a0aa1de6..32544219f3 100755 --- a/kubernetes/pomba/charts/pomba-contextaggregator/values.yaml +++ b/kubernetes/pomba/charts/pomba-contextaggregator/values.yaml @@ -55,14 +55,14 @@ affinity: {} # probe configuration parameters liveness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 # necessary to disable liveness probe when setting breakpoints # in debugger so K8s doesn't restart unresponsive container enabled: true readiness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 enabled: false diff --git a/kubernetes/pomba/charts/pomba-data-router/Chart.yaml b/kubernetes/pomba/charts/pomba-data-router/Chart.yaml index 6bc19c5aad..5d91c65360 100644 --- a/kubernetes/pomba/charts/pomba-data-router/Chart.yaml +++ b/kubernetes/pomba/charts/pomba-data-router/Chart.yaml @@ -14,4 +14,4 @@ apiVersion: v1 description: ONAP POMBA Data-Router name: pomba-data-router -version: 3.0.0 +version: 4.0.0 diff --git a/kubernetes/pomba/charts/pomba-data-router/values.yaml b/kubernetes/pomba/charts/pomba-data-router/values.yaml index d92e75c705..5815b9667a 100644 --- a/kubernetes/pomba/charts/pomba-data-router/values.yaml +++ b/kubernetes/pomba/charts/pomba-data-router/values.yaml @@ -27,7 +27,7 @@ global: # application image repository: nexus3.onap.org:10001 -image: onap/data-router:1.3.1 +image: onap/data-router:1.3.3 pullPolicy: Always restartPolicy: Always diff --git a/kubernetes/pomba/charts/pomba-elasticsearch/Chart.yaml b/kubernetes/pomba/charts/pomba-elasticsearch/Chart.yaml index a198fb42fa..e62e7fdeba 100644 --- a/kubernetes/pomba/charts/pomba-elasticsearch/Chart.yaml +++ b/kubernetes/pomba/charts/pomba-elasticsearch/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1 description: ONAP POMBA Elasticsearch name: pomba-elasticsearch -version: 3.0.0 +version: 4.0.0 diff --git a/kubernetes/pomba/charts/pomba-elasticsearch/requirements.yaml b/kubernetes/pomba/charts/pomba-elasticsearch/requirements.yaml index 896eaf4baa..1d30dfd918 100644 --- a/kubernetes/pomba/charts/pomba-elasticsearch/requirements.yaml +++ b/kubernetes/pomba/charts/pomba-elasticsearch/requirements.yaml @@ -14,5 +14,5 @@ dependencies: - name: common - version: ~3.0.0 + version: ~4.x-0 repository: '@local'
\ No newline at end of file diff --git a/kubernetes/pomba/charts/pomba-kibana/Chart.yaml b/kubernetes/pomba/charts/pomba-kibana/Chart.yaml index 667059f147..d732104cbf 100644 --- a/kubernetes/pomba/charts/pomba-kibana/Chart.yaml +++ b/kubernetes/pomba/charts/pomba-kibana/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1 description: ONAP POMBA Kibana name: pomba-kibana -version: 3.0.0 +version: 4.0.0 diff --git a/kubernetes/pomba/charts/pomba-kibana/requirements.yaml b/kubernetes/pomba/charts/pomba-kibana/requirements.yaml index 896eaf4baa..1d30dfd918 100644 --- a/kubernetes/pomba/charts/pomba-kibana/requirements.yaml +++ b/kubernetes/pomba/charts/pomba-kibana/requirements.yaml @@ -14,5 +14,5 @@ dependencies: - name: common - version: ~3.0.0 + version: ~4.x-0 repository: '@local'
\ No newline at end of file diff --git a/kubernetes/pomba/charts/pomba-networkdiscovery/Chart.yaml b/kubernetes/pomba/charts/pomba-networkdiscovery/Chart.yaml index 5ab80a70f4..eb27414348 100644 --- a/kubernetes/pomba/charts/pomba-networkdiscovery/Chart.yaml +++ b/kubernetes/pomba/charts/pomba-networkdiscovery/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1
description: ONAP POMBA Network Discovery
name: pomba-networkdiscovery
-version: 3.0.0
+version: 4.0.0
diff --git a/kubernetes/pomba/charts/pomba-networkdiscovery/requirements.yaml b/kubernetes/pomba/charts/pomba-networkdiscovery/requirements.yaml index 8f9493a9a7..1e8f79bc0e 100644 --- a/kubernetes/pomba/charts/pomba-networkdiscovery/requirements.yaml +++ b/kubernetes/pomba/charts/pomba-networkdiscovery/requirements.yaml @@ -14,5 +14,5 @@ dependencies:
- name: common
- version: ~3.0.0
+ version: ~4.x-0
repository: '@local'
diff --git a/kubernetes/pomba/charts/pomba-networkdiscovery/resources/config/application.properties b/kubernetes/pomba/charts/pomba-networkdiscovery/resources/config/application.properties index a5aeb71ec1..f09dc05980 100644 --- a/kubernetes/pomba/charts/pomba-networkdiscovery/resources/config/application.properties +++ b/kubernetes/pomba/charts/pomba-networkdiscovery/resources/config/application.properties @@ -30,9 +30,10 @@ openstack.identity.url ={{ .Values.config.openstackIdentityUrl }} openstack.identity.user ={{ .Values.config.openstackUserId }} openstack.identity.password ={{ .Values.config.openstackPassword }} -openstack.types = vserver, l3-network +openstack.types = vserver, l3-network, port openstack.type.vserver.url = {{ .Values.config.openstackTypeVserverUrl }} openstack.type.l3-network.url = {{ .Values.config.openstackTypeL3NetworkUrl }} +openstack.type.port.url = {{ .Values.config.openstackTypePortUrl }} openstack.api.microversion = 2.42 diff --git a/kubernetes/pomba/charts/pomba-networkdiscovery/values.yaml b/kubernetes/pomba/charts/pomba-networkdiscovery/values.yaml index fdc44298e2..3a50130e24 100644 --- a/kubernetes/pomba/charts/pomba-networkdiscovery/values.yaml +++ b/kubernetes/pomba/charts/pomba-networkdiscovery/values.yaml @@ -24,7 +24,7 @@ global: ################################################################# # application image repository: nexus3.onap.org:10001 -image: onap/network-discovery:1.4.1-latest +image: onap/network-discovery:1.5.0-SNAPSHOT-latest pullPolicy: Always # flag to enable debugging - application support required @@ -55,6 +55,7 @@ config: # Openstack Rest API URLs: openstackTypeVserverUrl: http://10.69.36.11:8774/v2.1/servers/{0} openstackTypeL3NetworkUrl: http://10.69.36.11:9696/v2.0/networks/{0} + openstackTypePortUrl: http://10.69.36.11:9696/v2.0/ports/{0} # default number of instances replicaCount: 1 @@ -65,14 +66,14 @@ affinity: {} # probe configuration parameters liveness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 # necessary to disable liveness probe when setting breakpoints # in debugger so K8s doesn't restart unresponsive container enabled: true readiness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 #Example service definition with external, internal and node ports. diff --git a/kubernetes/pomba/charts/pomba-networkdiscoveryctxbuilder/Chart.yaml b/kubernetes/pomba/charts/pomba-networkdiscoveryctxbuilder/Chart.yaml index 1ded7ec8e3..4479e0931f 100644 --- a/kubernetes/pomba/charts/pomba-networkdiscoveryctxbuilder/Chart.yaml +++ b/kubernetes/pomba/charts/pomba-networkdiscoveryctxbuilder/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1 description: ONAP POMBA Network Discovery Context Builder name: pomba-networkdiscoveryctxbuilder -version: 3.0.0 +version: 4.0.0 diff --git a/kubernetes/pomba/charts/pomba-networkdiscoveryctxbuilder/requirements.yaml b/kubernetes/pomba/charts/pomba-networkdiscoveryctxbuilder/requirements.yaml index cf4086962c..509eaddf3d 100644 --- a/kubernetes/pomba/charts/pomba-networkdiscoveryctxbuilder/requirements.yaml +++ b/kubernetes/pomba/charts/pomba-networkdiscoveryctxbuilder/requirements.yaml @@ -14,5 +14,5 @@ dependencies: - name: common - version: ~3.0.0 + version: ~4.x-0 repository: '@local' diff --git a/kubernetes/pomba/charts/pomba-networkdiscoveryctxbuilder/values.yaml b/kubernetes/pomba/charts/pomba-networkdiscoveryctxbuilder/values.yaml index b45c24b9e9..6afe768b14 100644 --- a/kubernetes/pomba/charts/pomba-networkdiscoveryctxbuilder/values.yaml +++ b/kubernetes/pomba/charts/pomba-networkdiscoveryctxbuilder/values.yaml @@ -69,14 +69,14 @@ affinity: {} # probe configuration parameters liveness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 # necessary to disable liveness probe when setting breakpoints # in debugger so K8s doesn't restart unresponsive container enabled: true readiness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 #Example service definition with external, internal and node ports. diff --git a/kubernetes/pomba/charts/pomba-sdcctxbuilder/Chart.yaml b/kubernetes/pomba/charts/pomba-sdcctxbuilder/Chart.yaml index 4a49d84c07..c77e28d19f 100644 --- a/kubernetes/pomba/charts/pomba-sdcctxbuilder/Chart.yaml +++ b/kubernetes/pomba/charts/pomba-sdcctxbuilder/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1 description: ONAP POMBA SDC Context Builder name: pomba-sdcctxbuilder -version: 3.0.0 +version: 4.0.0 diff --git a/kubernetes/pomba/charts/pomba-sdcctxbuilder/requirements.yaml b/kubernetes/pomba/charts/pomba-sdcctxbuilder/requirements.yaml index 896eaf4baa..1d30dfd918 100644 --- a/kubernetes/pomba/charts/pomba-sdcctxbuilder/requirements.yaml +++ b/kubernetes/pomba/charts/pomba-sdcctxbuilder/requirements.yaml @@ -14,5 +14,5 @@ dependencies: - name: common - version: ~3.0.0 + version: ~4.x-0 repository: '@local'
\ No newline at end of file diff --git a/kubernetes/pomba/charts/pomba-sdcctxbuilder/values.yaml b/kubernetes/pomba/charts/pomba-sdcctxbuilder/values.yaml index 6d90256fd1..bddc349736 100644 --- a/kubernetes/pomba/charts/pomba-sdcctxbuilder/values.yaml +++ b/kubernetes/pomba/charts/pomba-sdcctxbuilder/values.yaml @@ -56,14 +56,14 @@ affinity: {} # probe configuration parameters liveness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 # necessary to disable liveness probe when setting breakpoints # in debugger so K8s doesn't restart unresponsive container enabled: true readiness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 #Example service definition with external, internal and node ports. diff --git a/kubernetes/pomba/charts/pomba-sdncctxbuilder/Chart.yaml b/kubernetes/pomba/charts/pomba-sdncctxbuilder/Chart.yaml index c9dad032aa..2acbe53495 100644 --- a/kubernetes/pomba/charts/pomba-sdncctxbuilder/Chart.yaml +++ b/kubernetes/pomba/charts/pomba-sdncctxbuilder/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1 description: ONAP POMBA SDNC Context Builder name: pomba-sdncctxbuilder -version: 3.0.0 +version: 4.0.0 diff --git a/kubernetes/pomba/charts/pomba-sdncctxbuilder/requirements.yaml b/kubernetes/pomba/charts/pomba-sdncctxbuilder/requirements.yaml index cf4086962c..509eaddf3d 100644 --- a/kubernetes/pomba/charts/pomba-sdncctxbuilder/requirements.yaml +++ b/kubernetes/pomba/charts/pomba-sdncctxbuilder/requirements.yaml @@ -14,5 +14,5 @@ dependencies: - name: common - version: ~3.0.0 + version: ~4.x-0 repository: '@local' diff --git a/kubernetes/pomba/charts/pomba-sdncctxbuilder/resources/config/application.properties b/kubernetes/pomba/charts/pomba-sdncctxbuilder/resources/config/application.properties index fcfe9dc412..991c77df7c 100644 --- a/kubernetes/pomba/charts/pomba-sdncctxbuilder/resources/config/application.properties +++ b/kubernetes/pomba/charts/pomba-sdncctxbuilder/resources/config/application.properties @@ -53,9 +53,9 @@ aai.readTimeout={{ .Values.config.aaiReadTimeout }} aai.http.userId={{ .Values.config.aaiHttpUserId }} aai.http.password={{ .Values.config.aaiHttpPassword }} -aai.searchNodeQuery=/aai/v11/search/nodes-query?search-node-type=service-instance&filter=service-instance-id:EQUALS: -aai.customerQuery=/aai/v11/business/customers/customer/ -aai.serviceInstancePath=/aai/v11/business/customers/customer/{0}/service-subscriptions/service-subscription/{1}/service-instances/service-instance/{2} +aai.searchNodeQuery=/aai/v13/search/nodes-query?search-node-type=service-instance&filter=service-instance-id:EQUALS: +aai.customerQuery=/aai/v13/business/customers/customer/ +aai.serviceInstancePath=/aai/v13/business/customers/customer/{0}/service-subscriptions/service-subscription/{1}/service-instances/service-instance/{2} # SDNC REST Client Configuration sdnc.serviceName={{ .Values.config.sdncServiceName }}.{{.Release.Namespace}} @@ -66,6 +66,7 @@ sdnc.httpProtocol={{ .Values.config.sdncHttpProtocol }} sdnc.connectionTimeout={{ .Values.config.sdncConnectionTimeout }} sdnc.readTimeout={{ .Values.config.sdncReadTimeout }} sdnc.genericResourcePath=/restconf/config/GENERIC-RESOURCE-API:services/service/{0} +sdnc.portMirrorResourcePath=/restconf/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/{0}/configuration-data/configuration-operation-information/port-mirror-configuration-request-input sdnc.vnfPath=/restconf/config/VNF-API:vnfs/vnf-list/{0} #Servlet context parameters diff --git a/kubernetes/pomba/charts/pomba-search-data/Chart.yaml b/kubernetes/pomba/charts/pomba-search-data/Chart.yaml index 1895998edb..bd5bdb6a68 100644 --- a/kubernetes/pomba/charts/pomba-search-data/Chart.yaml +++ b/kubernetes/pomba/charts/pomba-search-data/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1 description: ONAP POMBA search-data name: pomba-search-data -version: 3.0.0 +version: 4.0.0 diff --git a/kubernetes/pomba/charts/pomba-search-data/values.yaml b/kubernetes/pomba/charts/pomba-search-data/values.yaml index 6a3659e82d..7404f71232 100644 --- a/kubernetes/pomba/charts/pomba-search-data/values.yaml +++ b/kubernetes/pomba/charts/pomba-search-data/values.yaml @@ -29,14 +29,14 @@ affinity: {} # probe configuration parameters liveness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 # necessary to disable liveness probe when setting breakpoints # in debugger so K8s doesn't restart unresponsive container enabled: true readiness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 service: diff --git a/kubernetes/pomba/charts/pomba-servicedecomposition/Chart.yaml b/kubernetes/pomba/charts/pomba-servicedecomposition/Chart.yaml index 98b2e9771c..153e98d105 100644 --- a/kubernetes/pomba/charts/pomba-servicedecomposition/Chart.yaml +++ b/kubernetes/pomba/charts/pomba-servicedecomposition/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1
description: ONAP POMBA Network Discovery Service Decomposition
name: pomba-servicedecomposition
-version: 3.0.0
+version: 4.0.0
diff --git a/kubernetes/pomba/charts/pomba-servicedecomposition/requirements.yaml b/kubernetes/pomba/charts/pomba-servicedecomposition/requirements.yaml index 653f6ac0f1..d64f5a31e1 100644 --- a/kubernetes/pomba/charts/pomba-servicedecomposition/requirements.yaml +++ b/kubernetes/pomba/charts/pomba-servicedecomposition/requirements.yaml @@ -14,5 +14,5 @@ dependencies:
- name: common
- version: ~3.0.0
+ version: ~4.x-0
repository: '@local'
diff --git a/kubernetes/pomba/charts/pomba-servicedecomposition/resources/config/application.properties b/kubernetes/pomba/charts/pomba-servicedecomposition/resources/config/application.properties index 8c7d27cab0..bbf0901449 100644 --- a/kubernetes/pomba/charts/pomba-servicedecomposition/resources/config/application.properties +++ b/kubernetes/pomba/charts/pomba-servicedecomposition/resources/config/application.properties @@ -45,8 +45,9 @@ aai.httpProtocol={{ .Values.config.aaiHttpProtocol }} aai.securityProtocol=TLS aai.connectionTimeout=60000 aai.readTimeout=60000 -aai.resourceList=vnfc,vserver,l3-network +aai.resourceList=vnfc,vserver,l3-network,pserver aai.serviceInstancePath=/aai/v13/nodes/service-instance/{0} +aai.urlDepth=2 #Servlet context parameters server.context_parameters.p-name=value #context parameter with p-name as key and value as value. diff --git a/kubernetes/pomba/charts/pomba-servicedecomposition/values.yaml b/kubernetes/pomba/charts/pomba-servicedecomposition/values.yaml index 8923020c98..4d8d496223 100644 --- a/kubernetes/pomba/charts/pomba-servicedecomposition/values.yaml +++ b/kubernetes/pomba/charts/pomba-servicedecomposition/values.yaml @@ -24,7 +24,7 @@ global: ################################################################# # application image repository: nexus3.onap.org:10001 -image: onap/service-decomposition:1.4.2 +image: onap/service-decomposition:1.5.0-SNAPSHOT-latest pullPolicy: Always # flag to enable debugging - application support required @@ -52,14 +52,14 @@ affinity: {} # probe configuration parameters liveness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 # necessary to disable liveness probe when setting breakpoints # in debugger so K8s doesn't restart unresponsive container enabled: true readiness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 #Example service definition with external, internal and node ports. diff --git a/kubernetes/pomba/charts/pomba-validation-service/Chart.yaml b/kubernetes/pomba/charts/pomba-validation-service/Chart.yaml index 3fbbb5d8b6..020409da0b 100644 --- a/kubernetes/pomba/charts/pomba-validation-service/Chart.yaml +++ b/kubernetes/pomba/charts/pomba-validation-service/Chart.yaml @@ -15,4 +15,4 @@ apiVersion: v1 description: POMBA Validaton-Service name: pomba-validation-service -version: 3.0.0 +version: 4.0.0 diff --git a/kubernetes/pomba/charts/pomba-validation-service/requirements.yaml b/kubernetes/pomba/charts/pomba-validation-service/requirements.yaml index 9f23fac6f8..71fbbc5ce9 100644 --- a/kubernetes/pomba/charts/pomba-validation-service/requirements.yaml +++ b/kubernetes/pomba/charts/pomba-validation-service/requirements.yaml @@ -14,5 +14,5 @@ dependencies: - name: common - version: ~3.0.0 + version: ~4.x-0 repository: '@local' diff --git a/kubernetes/pomba/charts/pomba-validation-service/resources/bundleconfig/etc/rules/poa-event/default-rules.groovy b/kubernetes/pomba/charts/pomba-validation-service/resources/bundleconfig/etc/rules/poa-event/default-rules.groovy index 877e74c7e0..1902a1050f 100644 --- a/kubernetes/pomba/charts/pomba-validation-service/resources/bundleconfig/etc/rules/poa-event/default-rules.groovy +++ b/kubernetes/pomba/charts/pomba-validation-service/resources/bundleconfig/etc/rules/poa-event/default-rules.groovy @@ -25,130 +25,171 @@ entity { // NDCB-AAI comparison: Context level useRule { - name 'NDCB-AAI-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.ndcb', 'context-list.aai' } // NDCB-AAI comparison: Service entity useRule { - name 'NDCB-AAI-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.ndcb.service', 'context-list.aai.service' } - // NDCB-AAI comparison: VF list + // NDCB-AAI comparison: Context level network list useRule { - name 'NDCB-AAI-attribute-comparison' + name 'Attribute-comparison' + attributes 'context-list.ndcb.networkList[*]', 'context-list.aai.networkList[*]' + } + + // NDCB-AAI comparison: VNF list + useRule { + name 'Attribute-comparison' attributes 'context-list.ndcb.vnfList[*]', 'context-list.aai.vnfList[*]' } + // NDCB-AAI comparison: VNF network list + useRule { + name 'Attribute-comparison' + attributes 'context-list.ndcb.vnfList[*].networkList[*]', 'context-list.aai.vnfList[*].networkList[*]' + } + // NDCB-AAI comparison: VF-Module list useRule { - name 'NDCB-AAI-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.ndcb.vnfList[*].vfModuleList[*]', 'context-list.aai.vnfList[*].vfModuleList[*]' } + // NDCB-AAI comparison: VF-Module network list + useRule { + name 'Attribute-comparison' + attributes 'context-list.ndcb.vnfList[*].vfModuleList[*].networkList[*]', 'context-list.aai.vnfList[*].vfModuleList[*].networkList[*]' + } + // NDCB-AAI comparison: VNFC list useRule { - name 'NDCB-AAI-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.ndcb.vnfList[*].vnfcList[*]', 'context-list.aai.vnfList[*].vnfcList[*]' } // NDCB-AAI comparison: VM list useRule { - name 'NDCB-AAI-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.ndcb.vnfList[*].vfModuleList[*].vmList[*]', 'context-list.aai.vnfList[*].vfModuleList[*].vmList[*]' } - - // NDCB-AAI comparison: Network list - useRule { - name 'NDCB-AAI-attribute-comparison' - attributes 'context-list.ndcb.vnfList[*].vfModuleList[*].networkList[*]', 'context-list.aai.vnfList[*].vfModuleList[*].networkList[*]' - } - + + // SDNC-AAI comparison: Context level useRule { - name 'SDNC-AAI-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.sdnc', 'context-list.aai' } // SDNC-AAI comparison: Service entity useRule { - name 'SDNC-AAI-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.sdnc.service', 'context-list.aai.service' } - // SDNC-AAI comparison: VF list + // SDNC-AAI comparison: Context level network list + useRule { + name 'Attribute-comparison' + attributes 'context-list.sdnc.networkList[*]', 'context-list.aai.networkList[*]' + } + + // SDNC-AAI comparison: VNF list useRule { - name 'SDNC-AAI-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.sdnc.vnfList[*]', 'context-list.aai.vnfList[*]' } + // SDNC-AAI comparison: VNF network list + useRule { + name 'Attribute-comparison' + attributes 'context-list.sdnc.vnfList[*].networkList[*]', 'context-list.aai.vnfList[*].networkList[*]' + } + // SDNC-AAI comparison: VF-Module list useRule { - name 'SDNC-AAI-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.sdnc.vnfList[*].vfModuleList[*]', 'context-list.aai.vnfList[*].vfModuleList[*]' } + // SDNC-AAI comparison: VF-Module network list + useRule { + name 'Attribute-comparison' + attributes 'context-list.sdnc.vnfList[*].vfModuleList[*].networkList[*]', 'context-list.aai.vnfList[*].vfModuleList[*].networkList[*]' + } + // SDNC-AAI comparison: VNFC list useRule { - name 'SDNC-AAI-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.sdnc.vnfList[*].vnfcList[*]', 'context-list.aai.vnfList[*].vnfcList[*]' } // SDNC-AAI comparison: VM list useRule { - name 'SDNC-AAI-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.sdnc.vnfList[*].vfModuleList[*].vmList[*]', 'context-list.aai.vnfList[*].vfModuleList[*].vmList[*]' } - // SDNC-AAI comparison: Network list - useRule { - name 'SDNC-AAI-attribute-comparison' - attributes 'context-list.sdnc.vnfList[*].vfModuleList[*].networkList[*]', 'context-list.aai.vnfList[*].vfModuleList[*].networkList[*]' - } - + + // SDNC-NDCB comparison: Context level useRule { - name 'SDNC-NDCB-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.sdnc', 'context-list.ndcb' } // SDNC-NDCB comparison: Service entity useRule { - name 'SDNC-NDCB-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.sdnc.service', 'context-list.ndcb.service' } - // SDNC-NDCB comparison: VF list + // SDNC-NDCB comparison: Context level network list + useRule { + name 'Attribute-comparison' + attributes 'context-list.sdnc.networkList[*]', 'context-list.ndcb.networkList[*]' + } + + // SDNC-NDCB comparison: VNF list useRule { - name 'SDNC-NDCB-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.sdnc.vnfList[*]', 'context-list.ndcb.vnfList[*]' } + // SDNC-NDCB comparison: VNF network list + useRule { + name 'Attribute-comparison' + attributes 'context-list.sdnc.vnfList[*].networkList[*]', 'context-list.ndcb.vnfList[*].networkList[*]' + } + // SDNC-NDCB comparison: VF-Module list useRule { - name 'SDNC-NDCB-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.sdnc.vnfList[*].vfModuleList[*]', 'context-list.ndcb.vnfList[*].vfModuleList[*]' } + // SDNC-NDCB comparison: VF-Module network list + useRule { + name 'Attribute-comparison' + attributes 'context-list.sdnc.vnfList[*].vfModuleList[*].networkList[*]', 'context-list.ndcb.vnfList[*].vfModuleList[*].networkList[*]' + } + // SDNC-NDCB comparison: VNFC list useRule { - name 'SDNC-NDCB-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.sdnc.vnfList[*].vnfcList[*]', 'context-list.ndcb.vnfList[*].vnfcList[*]' } // SDNC-NDCB comparison: VM list useRule { - name 'SDNC-NDCB-attribute-comparison' + name 'Attribute-comparison' attributes 'context-list.sdnc.vnfList[*].vfModuleList[*].vmList[*]', 'context-list.ndcb.vnfList[*].vfModuleList[*].vmList[*]' } - // SDNC-NDCB comparison: Network list - useRule { - name 'SDNC-NDCB-attribute-comparison' - attributes 'context-list.sdnc.vnfList[*].vfModuleList[*].networkList[*]', 'context-list.ndcb.vnfList[*].vfModuleList[*].networkList[*]' - } - + + // SDC-AAI VNFC type useRule { name 'SDC-AAI-vnfc-type' @@ -236,249 +277,126 @@ rule { } rule { - name 'NDCB-AAI-attribute-comparison' + name 'Attribute-comparison' category 'Attribute Mismatch' - description 'Verify that all attributes in Network-Discovery are the same as in AAI' - errorText 'Error found with attribute "{0}"; Network-Discovery value does not match AAI value "{1}"' + description 'Determine all discrepancies between values for attributes with matching names from each model' + errorText 'Error found with attribute(s) and values: {0}' severity 'ERROR' - attributes 'ndcbItems', 'aaiItems' + attributes 'lhsObject', 'rhsObject' validate ''' - Closure<java.util.Map> getAttributes = { parsedData -> - java.util.Map attributeMap = new java.util.HashMap() - - def isAttributeDataQualityOk = { attribute -> - attribute.findResult{ k, v -> if(k.equals("dataQuality") ) {return v.get("status")}}.equals("ok") - } - - def addToMap = { attrKey, attrValue -> - java.util.Set values = attributeMap.get("$attrKey") - if(values == null) { - values = new java.util.HashSet() - attributeMap.put("$attrKey", values) - } - values.add("$attrValue") - } - - def addAttributeToMap = { attribute -> - if(isAttributeDataQualityOk(attribute)) { - String key, value - attribute.each { k, v -> - if(k.equals("name")) {key = "$v"} - if(k.equals("value")) {value = "$v"} - } - addToMap("$key", "$value") - } - } - - def processKeyValue = { key, value -> - if(value instanceof java.util.ArrayList) { - if(key.equals("attributeList")) { - value.each { - addAttributeToMap(it) - } - } - } else if(!(value instanceof groovy.json.internal.LazyMap)) { - // only add key-value attributes, skip the rest - addToMap("$key", "$value") - } - } - - if(parsedData instanceof java.util.ArrayList) { - parsedData.each { - it.each { key, value -> processKeyValue(key, value) } - } - } else { - parsedData.each { key, value -> processKeyValue(key, value) } - } - return attributeMap - } - - def slurper = new groovy.json.JsonSlurper() - java.util.Map ndcb = getAttributes(slurper.parseText(ndcbItems.toString())) - java.util.Map aai = getAttributes(slurper.parseText(aaiItems.toString())) - - boolean result = true - List<String> details = new ArrayList<>(); - ndcb.any{ ndcbKey, ndcbValueList -> - def aaiValueList = aai.get("$ndcbKey") - aaiValueList.each{ aaiValue -> - if(!ndcbValueList.any{ it == "$aaiValue" }) { - result = false - details.add("$ndcbKey") - details.add("$aaiValue") - } - } - if(result == false) { - // break out of 'any' loop - return true - } - } - return new Tuple2(result, details) - ''' -} - -rule { - name 'SDNC-AAI-attribute-comparison' - category 'Attribute Mismatch' - description 'Verify that all attributes in SDN-C are the same as in AAI' - errorText 'Error found with attribute "{0}"; SDN-C value does not match AAI value "{1}"' - severity 'ERROR' - attributes 'sdncItems', 'aaiItems' - validate ''' - Closure<java.util.Map> getAttributes = { parsedData -> - java.util.Map attributeMap = new java.util.HashMap() - - def isAttributeDataQualityOk = { attribute -> - attribute.findResult{ k, v -> if(k.equals("dataQuality") ) {return v.get("status")}}.equals("ok") - } - - def addToMap = { attrKey, attrValue -> - java.util.Set values = attributeMap.get("$attrKey") - if(values == null) { - values = new java.util.HashSet() - attributeMap.put("$attrKey", values) - } - values.add("$attrValue") - } - - def addAttributeToMap = { attribute -> - if(isAttributeDataQualityOk(attribute)) { - String key, value - attribute.each { k, v -> - if(k.equals("name")) {key = "$v"} - if(k.equals("value")) {value = "$v"} - } - addToMap("$key", "$value") - } - } - - def processKeyValue = { key, value -> - if(value instanceof java.util.ArrayList) { - if(key.equals("attributeList")) { - value.each { - addAttributeToMap(it) - } - } - } else if(!(value instanceof groovy.json.internal.LazyMap)) { - // only add key-value attributes, skip the rest - addToMap("$key", "$value") - } - } - - if(parsedData instanceof java.util.ArrayList) { - parsedData.each { - it.each { key, value -> processKeyValue(key, value) } - } - } else { - parsedData.each { key, value -> processKeyValue(key, value) } - } - return attributeMap - } - - def slurper = new groovy.json.JsonSlurper() - java.util.Map sdnc = getAttributes(slurper.parseText(sdncItems.toString())) - java.util.Map aai = getAttributes(slurper.parseText(aaiItems.toString())) - - boolean result = true - List<String> details = new ArrayList<>(); - sdnc.any{ sdncKey, sdncValueList -> - def aaiValueList = aai.get("$sdncKey") - aaiValueList.each{ aaiValue -> - if(!sdncValueList.any{ it == "$aaiValue" }) { - result = false - details.add("$sdncKey") - details.add("$aaiValue") - } - } - if(result == false) { - // break out of 'any' loop - return true - } - } - return new Tuple2(result, details) - ''' -} - - -rule { - name 'SDNC-NDCB-attribute-comparison' - category 'Attribute Mismatch' - description 'Verify that all attributes in SDN-C are the same as in Network Discovery' - errorText 'Error found with attribute "{0}"; SDN-C value does not match Network-Discovery value "{1}"' - severity 'ERROR' - attributes 'sdncItems', 'ndcbItems' - validate ''' - Closure<java.util.Map> getAttributes = { parsedData -> - java.util.Map attributeMap = new java.util.HashMap() - - def isAttributeDataQualityOk = { attribute -> - attribute.findResult{ k, v -> if(k.equals("dataQuality") ) {return v.get("status")}}.equals("ok") - } - - def addToMap = { attrKey, attrValue -> - java.util.Set values = attributeMap.get("$attrKey") - if(values == null) { - values = new java.util.HashSet() - attributeMap.put("$attrKey", values) - } - values.add("$attrValue") - } - - def addAttributeToMap = { attribute -> - if(isAttributeDataQualityOk(attribute)) { - String key, value - attribute.each { k, v -> - if(k.equals("name")) {key = "$v"} - if(k.equals("value")) {value = "$v"} - } - addToMap("$key", "$value") - } - } - - def processKeyValue = { key, value -> - if(value instanceof java.util.ArrayList) { - if(key.equals("attributeList")) { - value.each { - addAttributeToMap(it) - } - } - } else if(!(value instanceof groovy.json.internal.LazyMap)) { - // only add key-value attributes, skip the rest - addToMap("$key", "$value") - } - } - - if(parsedData instanceof java.util.ArrayList) { - parsedData.each { - it.each { key, value -> processKeyValue(key, value) } - } - } else { - parsedData.each { key, value -> processKeyValue(key, value) } - } - return attributeMap - } - - def slurper = new groovy.json.JsonSlurper() - java.util.Map sdnc = getAttributes(slurper.parseText(sdncItems.toString())) - java.util.Map ndcb = getAttributes(slurper.parseText(ndcbItems.toString())) - - boolean result = true - List<String> details = new ArrayList<>(); - sdnc.any{ sdncKey, sdncValueList -> - def ndcbValueList = ndcb.get("$sdncKey") - ndcbValueList.each{ ndcbValue -> - if(!sdncValueList.any{ it == "$ndcbValue" }) { - result = false - details.add("$sdncKey") - details.add("$ndcbValue") - } - } - if(result == false) { - // break out of 'any' loop - return true - } - } - return new Tuple2(result, details) + // This closure extracts the given object's root level attributes and contents of the attribute list. + // Complex items like lists are excluded. + // Returns a map containing attribute names as keys, mapping to a list of values for each attribute. + Closure<java.util.Map> getAttributes = { parsedData -> + java.util.Map attributeMap = new java.util.HashMap() + + def isAttributeDataQualityOk = { attribute -> + attribute.findResult{ k, v -> if(k.equals("dataQuality") ) {return v.get("status")}}.equals("ok") + } + + def addToMap = { attrKey, attrValue -> + java.util.Set values = attributeMap.get("$attrKey") + if(values == null) { + values = new java.util.HashSet() + attributeMap.put("$attrKey", values) + } + values.add("$attrValue") + } + + def addAttributeToMap = { attribute -> + if(isAttributeDataQualityOk(attribute)) { + String key, value + attribute.each { k, v -> + if(k.equals("name")) {key = "$v"} + if(k.equals("value")) {value = "$v"} + } + addToMap("$key", "$value") + } + } + + def processKeyValue = { key, value -> + if(value instanceof java.util.ArrayList) { + if(key.equals("attributeList")) { + value.each { + addAttributeToMap(it) + } + } + } else if(!(value instanceof groovy.json.internal.LazyMap)) { + // only add key-value attributes, skip the rest + addToMap("$key", "$value") + } + } + + if(parsedData instanceof java.util.ArrayList) { + parsedData.each { + it.each { key, value -> processKeyValue(key, value) } + } + } else { + parsedData.each { key, value -> processKeyValue(key, value) } + } + return attributeMap + } + + // This closure compares all values for each key from the left map, to values of the same key from the right map. + // Returns a map of attributes with mismatched or missing values (i.e. attribute name mapped to list of failed values). + Closure<java.util.Map> compareAttributes = { java.util.Map left, java.util.Map right -> + java.util.Map violationMap = new java.util.HashMap() + left.each{ leftKey, leftValueList -> + def rightValueList = right.get("$leftKey") + rightValueList.each{ rightValue -> + if(!leftValueList.any{ it == "$rightValue" }) { + def existingValues = violationMap.get(leftKey) + if(existingValues) { + existingValues.add("$rightValue") + } else { + java.util.Set newValues = new HashSet() + newValues.add("$rightValue") + violationMap.put("$leftKey", newValues) + } + } + } + } + return violationMap + } + + // This closure merges the given maps into a new map. + // Returns a map containing all keys and their values from both maps. + Closure<java.util.Map> mergeMaps = { java.util.Map left, java.util.Map right -> + if(left.isEmpty() && right.isEmpty()) { + return [:] + } else if(left.isEmpty()) { + return right + } else if(right.isEmpty()) { + return left + } + java.util.Map merged = new java.util.HashMap() + merged.putAll(left) + right.each{ rightKey, rightValues -> + java.util.Set mergedValues = merged.get(rightKey) + if(mergedValues == null) { + merged.put(rightKey, rightValues) + } else { + mergedValues.addAll(rightValues) + } + } + return merged + } + + def slurper = new groovy.json.JsonSlurper() + java.util.Map lhsAttributes = getAttributes(slurper.parseText(lhsObject.toString())) + java.util.Map rhsAttributes = getAttributes(slurper.parseText(rhsObject.toString())) + + def leftToRight = compareAttributes(lhsAttributes, rhsAttributes) + def rightToLeft = compareAttributes(rhsAttributes, lhsAttributes) + def mergedResults = mergeMaps(leftToRight, rightToLeft) + + boolean success = true + List<String> details = new ArrayList<>() + if(!mergedResults.isEmpty()) { + success = false + details.add(mergedResults.toString()) + } + return new Tuple2(success, details) ''' } diff --git a/kubernetes/pomba/charts/pomba-validation-service/values.yaml b/kubernetes/pomba/charts/pomba-validation-service/values.yaml index 2cb175a265..d0b964e5e3 100644 --- a/kubernetes/pomba/charts/pomba-validation-service/values.yaml +++ b/kubernetes/pomba/charts/pomba-validation-service/values.yaml @@ -56,14 +56,14 @@ affinity: {} # probe configuration parameters liveness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 # necessary to disable liveness probe when setting breakpoints # in debugger so K8s doesn't restart unresponsive container enabled: false readiness: - initialDelaySeconds: 10 + initialDelaySeconds: 30 periodSeconds: 10 enabled: false diff --git a/kubernetes/pomba/requirements.yaml b/kubernetes/pomba/requirements.yaml index 5359e3b505..845a5fe571 100644 --- a/kubernetes/pomba/requirements.yaml +++ b/kubernetes/pomba/requirements.yaml @@ -14,7 +14,7 @@ dependencies: - name: common - version: ~3.0.0 + version: ~4.x-0 # local reference to common chart, as it is # a part of this chart's package and will not # be published independently to a repo (at this point) |