From b80471e4f68e6d5ba670d03b12b92029e58c0bc7 Mon Sep 17 00:00:00 2001 From: Dan Timoney Date: Tue, 24 Mar 2020 14:30:24 -0400 Subject: Use MariaDB instead of Derby Use MariaDB instead of Derby as backing store for sliboot Change-Id: Ib9fa4abaaf88bcb1eac2276bc974474f067a06d3 Issue-ID: CCSDK-2188 Signed-off-by: Dan Timoney --- .../sliapi/springboot/core/SvcLogicFactory.java | 2 + .../sli/core/sliapi/springboot/core/WebConfig.java | 41 +----- .../src/main/resources/application.properties | 16 ++- .../src/main/resources/svclogic.properties | 8 +- .../ccsdk/sli/core/sliapi/springboot/AppTest.java | 1 + .../springboot/RestconfApiControllerTest.java | 4 + sliapi/springboot/src/test/resources/DEMO_DEMO.xml | 35 +++++ .../src/test/resources/application.properties | 18 +++ .../springboot/src/test/resources/graph.versions | 3 + .../src/test/resources/log4j2.properties | 160 +++++++++++++++++++++ .../src/test/resources/shiro-users.properties | 3 + .../src/test/resources/sli_healthcheck.xml | 27 ++++ .../springboot/src/test/resources/sli_vlbcheck.xml | 27 ++++ .../src/test/resources/svclogic.properties | 29 ++++ 14 files changed, 328 insertions(+), 46 deletions(-) create mode 100755 sliapi/springboot/src/test/resources/DEMO_DEMO.xml create mode 100644 sliapi/springboot/src/test/resources/application.properties create mode 100644 sliapi/springboot/src/test/resources/graph.versions create mode 100644 sliapi/springboot/src/test/resources/log4j2.properties create mode 100644 sliapi/springboot/src/test/resources/shiro-users.properties create mode 100644 sliapi/springboot/src/test/resources/sli_healthcheck.xml create mode 100644 sliapi/springboot/src/test/resources/sli_vlbcheck.xml create mode 100644 sliapi/springboot/src/test/resources/svclogic.properties (limited to 'sliapi/springboot/src') diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/SvcLogicFactory.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/SvcLogicFactory.java index cf8dc5e37..0c8480e11 100644 --- a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/SvcLogicFactory.java +++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/SvcLogicFactory.java @@ -64,12 +64,14 @@ public class SvcLogicFactory { public Properties getProperties() { Properties props = new Properties(); + String propPath = System.getProperty("serviceLogicProperties", ""); if ("".equals(propPath)) { propPath = System.getenv("SVCLOGIC_PROPERTIES"); } + if ((propPath == null) || propPath.length() == 0) { propPath = "src/main/resources/svclogic.properties"; } diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java index 41d3791b4..558a82a11 100644 --- a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java +++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java @@ -21,11 +21,14 @@ package org.onap.ccsdk.sli.core.sliapi.springboot.core; import org.onap.logging.filter.spring.LoggingInterceptor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; import org.springframework.orm.jpa.JpaTransactionManager; @@ -48,43 +51,5 @@ import javax.sql.DataSource; @EnableTransactionManagement public class WebConfig implements WebMvcConfigurer { -/* @Bean - LoggingInterceptor loggingInterceptor() { - return new LoggingInterceptor(); - } - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(loggingInterceptor()); // handles audit log entries - }*/ - - @Bean - public DataSource dataSource() { - - EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); - builder.setName("sdnctl"); - return builder.setType(EmbeddedDatabaseType.DERBY).build(); - } - - @Bean - public EntityManagerFactory entityManagerFactory() { - - HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); - vendorAdapter.setGenerateDdl(true); - - LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); - factory.setJpaVendorAdapter(vendorAdapter); - factory.setPackagesToScan("org.onap.ccsdk.sli.core.sliapi.springboot.*"); - factory.setDataSource(dataSource()); - factory.afterPropertiesSet(); - - return factory.getObject(); - } - - @Bean - public PlatformTransactionManager transactionManager() { - - JpaTransactionManager txManager = new JpaTransactionManager(); - txManager.setEntityManagerFactory(entityManagerFactory()); - return txManager; - } } \ No newline at end of file diff --git a/sliapi/springboot/src/main/resources/application.properties b/sliapi/springboot/src/main/resources/application.properties index 6a4acc7e9..f083ed5e9 100644 --- a/sliapi/springboot/src/main/resources/application.properties +++ b/sliapi/springboot/src/main/resources/application.properties @@ -3,8 +3,16 @@ server.contextPath=/restconf server.port=8080 spring.jackson.date-format=org.onap.ccsdk.sli.core.sliapi.springboot.controllers.swagger.RFC3339DateFormat spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false -spring.datasource.url=jdbc:derby:memory:datasource -spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DerbyTenSevenDialect -spring.jpa.hibernate.ddl-auto=update logging.level.com.att=TRACE -logging.level.org.onap=TRACE \ No newline at end of file +logging.level.org.onap=TRACE +spring.datasource.url=jdbc:mariadb://localhost:3306/sdnctl +spring.datasource.username=sli +spring.datasource.password=abc123 +spring.datasource.driver-class-name=org.mariadb.jdbc.Driver +spring.datasource.testWhileIdle=true +spring.datasource.validationQuery=SELECT 1 +spring.jpa.show-sql=true +spring.jpa.hibernate.ddl-auto=update +spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl +spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy +spring.jpa.database=mysql \ No newline at end of file diff --git a/sliapi/springboot/src/main/resources/svclogic.properties b/sliapi/springboot/src/main/resources/svclogic.properties index 1d90ab9b4..ae396adde 100644 --- a/sliapi/springboot/src/main/resources/svclogic.properties +++ b/sliapi/springboot/src/main/resources/svclogic.properties @@ -20,10 +20,10 @@ ### org.onap.ccsdk.sli.dbtype = jdbc -org.onap.ccsdk.sli.jdbc.url=jdbc:derby:memory:sdnctl;create=true -org.onap.ccsdk.sli.jdbc.driver=org.apache.derby.jdbc.EmbeddedDriver +org.onap.ccsdk.sli.jdbc.url=jdbc:mariadb://localhost:3306/sdnctl +org.onap.ccsdk.sli.jdbc.driver=org.mariadb.jdbc.Driver org.onap.ccsdk.sli.jdbc.database = sdnctl -org.onap.ccsdk.sli.jdbc.user = test -org.onap.ccsdk.sli.jdbc.password = test +org.onap.ccsdk.sli.jdbc.user = sli +org.onap.ccsdk.sli.jdbc.password = abc123 sliapi.serviceLogicDirectory=/opt/onap/sdnc/svclogic/graphs diff --git a/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/AppTest.java b/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/AppTest.java index c5f452cb8..5ad6da9fd 100644 --- a/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/AppTest.java +++ b/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/AppTest.java @@ -18,6 +18,7 @@ public class AppTest { @Before public void setUp() throws Exception { app = new App(); + System.setProperty("serviceLogicProperties", "src/test/resources/svclogic.properties"); } @Test diff --git a/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java b/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java index b4c629097..ae21cef5f 100644 --- a/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java +++ b/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java @@ -126,6 +126,10 @@ public class RestconfApiControllerTest { assertEquals(200, mvcResult.getResponse().getStatus()); + // Delete any existing content before testing insert + mvcResult = mvc.perform(MockMvcRequestBuilders.delete(url)).andReturn(); + assertEquals(200, mvcResult.getResponse().getStatus()); + String jsonString = "{\n" + " \"test-results\" : [\n" + " {\n" + diff --git a/sliapi/springboot/src/test/resources/DEMO_DEMO.xml b/sliapi/springboot/src/test/resources/DEMO_DEMO.xml new file mode 100755 index 000000000..1b304f18a --- /dev/null +++ b/sliapi/springboot/src/test/resources/DEMO_DEMO.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sliapi/springboot/src/test/resources/application.properties b/sliapi/springboot/src/test/resources/application.properties new file mode 100644 index 000000000..dbe2633d4 --- /dev/null +++ b/sliapi/springboot/src/test/resources/application.properties @@ -0,0 +1,18 @@ +springfox.documentation.swagger.v2.path=/api-docs +server.contextPath=/restconf +server.port=8080 +spring.jackson.date-format=org.onap.ccsdk.sli.core.sliapi.springboot.controllers.swagger.RFC3339DateFormat +spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false +logging.level.com.att=TRACE +logging.level.org.onap=TRACE +spring.datasource.url=jdbc:derby:sdnctl;create=true +spring.datasource.username=sli +spring.datasource.password=abc123 +spring.datasource.driver-class-name=org.apache.derby.jdbc.EmbeddedDriver +spring.datasource.testWhileIdle=true +spring.datasource.validationQuery=SELECT 1 +spring.jpa.show-sql=true +spring.jpa.hibernate.ddl-auto=update +spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl +spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy +spring.jpa.database=derby \ No newline at end of file diff --git a/sliapi/springboot/src/test/resources/graph.versions b/sliapi/springboot/src/test/resources/graph.versions new file mode 100644 index 000000000..d21278aa4 --- /dev/null +++ b/sliapi/springboot/src/test/resources/graph.versions @@ -0,0 +1,3 @@ +sli healthcheck 0.7.0 sync +sli vlbcheck 0.7.0 sync +DEMO DEMO 1 sync diff --git a/sliapi/springboot/src/test/resources/log4j2.properties b/sliapi/springboot/src/test/resources/log4j2.properties new file mode 100644 index 000000000..40d18d157 --- /dev/null +++ b/sliapi/springboot/src/test/resources/log4j2.properties @@ -0,0 +1,160 @@ + #- + # ============LICENSE_START======================================================= + # ONAP - CCSDK + # ================================================================================ + # Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + # ================================================================================ + # Licensed under the Apache License, Version 2.0 (the "License"); + # you may not use this file except in compliance with the License. + # You may obtain a copy of the License at + # + # http://www.apache.org/licenses/LICENSE-2.0 + # + # Unless required by applicable law or agreed to in writing, software + # distributed under the License is distributed on an "AS IS" BASIS, + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + # See the License for the specific language governing permissions and + # limitations under the License. + # ============LICENSE_END========================================================= + # + +property.logDir = ${sys:LOG_PATH:-./target} + +property.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{currentGraph} - %X{nodeId} | %m%n + +#default mdc values +property.ServiceName = INTERNAL +property.ErrorCode = 900 +property.ErrorDesc = UnknownError + +rootLogger.level = INFO +rootLogger.appenderRef.AppFile.ref = AppFile +rootLogger.appenderRef.Console.ref = Console +rootLogger.appenderRef.DebugFile.ref = DebugFile +rootLogger.appenderRef.ErrorFile.ref = ErrorFile +rootLogger.appenderRef.Console.filter.threshold.type = ThresholdFilter +rootLogger.appenderRef.Console.filter.threshold.level = DEBUG + +appender.console.type = Console +appender.console.name = Console +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = ${pattern} + +appender.app.type = RollingRandomAccessFile +appender.app.name = AppFile +appender.app.fileName = ${logDir}/app.log +appender.app.filePattern = ${logDir}/app.log.%i +appender.app.immediateFlush = true +appender.app.append = true +appender.app.layout.type = PatternLayout +appender.app.layout.pattern = ${pattern} +appender.app.policies.type = Policies +appender.app.policies.size.type = SizeBasedTriggeringPolicy +appender.app.policies.size.size = 10MB +appender.app.strategy.type = DefaultRolloverStrategy +appender.app.strategy.max = 100 +appender.app.strategy.fileIndex = min + +appender.debug.type = RollingRandomAccessFile +appender.debug.name = DebugFile +appender.debug.fileName = ${logDir}/debug.log +appender.debug.filePattern = ${logDir}/debug.log.%i +appender.debug.immediateFlush = true +appender.debug.append = true +appender.debug.layout.type = PatternLayout +appender.debug.layout.pattern = %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%-16.16t|%-5.5p|%-32.32c{1}|%X{currentGraph} - %X{nodeId}|%m%n +appender.debug.policies.type = Policies +appender.debug.policies.size.type = SizeBasedTriggeringPolicy +appender.debug.policies.size.size = 10MB +appender.debug.strategy.type = DefaultRolloverStrategy +appender.debug.strategy.max = 200 +appender.debug.strategy.fileIndex = min + +appender.error.type = RollingRandomAccessFile +appender.error.name = ErrorFile +appender.error.fileName = ${logDir}/error.log +appender.error.filePattern = ${logDir}/error.log.%i +appender.error.immediateFlush = true +appender.error.append = true +appender.error.layout.type = PatternLayout +appender.error.layout.pattern = %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%-16.16t|$${ctx:ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%p|$${ctx:ErrorCode}|$${ctx:ErrorDesc}|%m%n + +appender.error.policies.type = Policies +appender.error.policies.size.type = SizeBasedTriggeringPolicy +appender.error.policies.size.size = 10MB +appender.error.strategy.type = DefaultRolloverStrategy +appender.error.strategy.max = 100 +appender.error.strategy.fileIndex = min +appender.error.filter.threshold.type = ThresholdFilter +appender.error.filter.threshold.level = WARN + +appender.metric.type = RollingRandomAccessFile +appender.metric.name = MetricFile +appender.metric.fileName = ${logDir}/metric.log +appender.metric.filePattern = ${logDir}/metric.log.%i +appender.metric.immediateFlush = true +appender.metric.append = true +appender.metric.layout.type = PatternLayout +appender.metric.layout.pattern=%X{InvokeTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%-16.16t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceID}|%p|%X{Severity}|192.168.23.111|%X{ElapsedTime}|${hostName}|%X{ClientIPAddress}|%C{1}|||%X{TargetElement}|%markerSimpleName|%X|%X{currentGraph} - %X{nodeId}||%m%n +appender.metric.policies.type = Policies +appender.metric.policies.size.type = SizeBasedTriggeringPolicy +appender.metric.policies.size.size = 10MB +appender.metric.strategy.type = DefaultRolloverStrategy +appender.metric.strategy.max = 100 +appender.metric.strategy.fileIndex = min + +appender.audit.type = RollingRandomAccessFile +appender.audit.name = AuditFile +appender.audit.fileName = ${logDir}/audit.log +appender.audit.filePattern = ${logDir}/audit.log.%i +appender.audit.immediateFlush = true +appender.audit.append = true +appender.audit.layout.type = PatternLayout +appender.audit.layout.pattern=%X{EntryTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%-16.16t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceID}|INFO|%X{Severity}|192.168.23.111|%X{ElapsedTime}|${hostName}|%X{ClientIPAddress}|%C{1}|%X{AUDIT-Unused}|%X{AUDIT-ProcessKey}|%markerSimpleName|%X|||%m%n +appender.audit.policies.type = Policies +appender.audit.policies.size.type = SizeBasedTriggeringPolicy +appender.audit.policies.size.size = 10MB +appender.audit.strategy.type = DefaultRolloverStrategy +appender.audit.strategy.max = 200 +appender.audit.strategy.fileIndex = min + +appender.rr.name = RequestResponseFile +appender.rr.type = RollingRandomAccessFile +appender.rr.fileName = ${logDir}/request-response.log +appender.rr.filePattern = ${logDir}/request-response.log.%i +appender.rr.immediateFlush = true +appender.rr.append = true +appender.rr.layout.type = PatternLayout +appender.rr.layout.pattern = %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%X{PartnerName}|%m%n +appender.rr.policies.type = Policies +appender.rr.policies.size.type = SizeBasedTriggeringPolicy +appender.rr.policies.size.size = 10MB +appender.rr.strategy.type = DefaultRolloverStrategy +appender.rr.strategy.max = 100 +appender.rr.strategy.fileIndex = min + +logger.metric.name = org.onap.ccsdk.sli.core.filters.metric +logger.metric.level = INFO +logger.metric.additivity = false +logger.metric.appenderRef.MetricFile.ref = MetricFile + +logger.metric2.name = org.onap.logging.filter.base.AbstractMetricLogFilter +logger.metric2.level = INFO +logger.metric2.additivity = false +logger.metric2.appenderRef.MetricFile.ref = MetricFile + +logger.audit.name = org.onap.logging.filter.base.AbstractAuditLogFilter +logger.audit.level = INFO +logger.audit.additivity = false +logger.audit.appenderRef.AuditFile.ref = AuditFile + +logger.rr.name = org.onap.logging.filter.base.PayloadLoggingServletFilter +logger.rr.level = INFO +logger.rr.additivity = false +logger.rr.appenderRef.RequestResponseFile.ref = RequestResponseFile + +logger.ccsdk.name = org.onap.ccsdk +logger.ccsdk.level = DEBUG + +logger.onaplogging.name = org.onap.logging +logger.onaplogging.level = DEBUG \ No newline at end of file diff --git a/sliapi/springboot/src/test/resources/shiro-users.properties b/sliapi/springboot/src/test/resources/shiro-users.properties new file mode 100644 index 000000000..df4b1ae7a --- /dev/null +++ b/sliapi/springboot/src/test/resources/shiro-users.properties @@ -0,0 +1,3 @@ +user.admin = Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U,service +role.service = odl-api:* + diff --git a/sliapi/springboot/src/test/resources/sli_healthcheck.xml b/sliapi/springboot/src/test/resources/sli_healthcheck.xml new file mode 100644 index 000000000..bc8e2f700 --- /dev/null +++ b/sliapi/springboot/src/test/resources/sli_healthcheck.xml @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/sliapi/springboot/src/test/resources/sli_vlbcheck.xml b/sliapi/springboot/src/test/resources/sli_vlbcheck.xml new file mode 100644 index 000000000..820a85c10 --- /dev/null +++ b/sliapi/springboot/src/test/resources/sli_vlbcheck.xml @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/sliapi/springboot/src/test/resources/svclogic.properties b/sliapi/springboot/src/test/resources/svclogic.properties new file mode 100644 index 000000000..1d90ab9b4 --- /dev/null +++ b/sliapi/springboot/src/test/resources/svclogic.properties @@ -0,0 +1,29 @@ +### +# ============LICENSE_START======================================================= +# ONAP : CCSDK +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +org.onap.ccsdk.sli.dbtype = jdbc +org.onap.ccsdk.sli.jdbc.url=jdbc:derby:memory:sdnctl;create=true +org.onap.ccsdk.sli.jdbc.driver=org.apache.derby.jdbc.EmbeddedDriver +org.onap.ccsdk.sli.jdbc.database = sdnctl +org.onap.ccsdk.sli.jdbc.user = test +org.onap.ccsdk.sli.jdbc.password = test + +sliapi.serviceLogicDirectory=/opt/onap/sdnc/svclogic/graphs -- cgit 1.2.3-korg