<groupId>org.onap.ccsdk.parent</groupId>
<artifactId>parent</artifactId>
<version>2.0.0-SNAPSHOT</version>
+ <relativePath />
</parent>
<groupId>org.onap.ccsdk.sli.core</groupId>
String crTableCmd = "CREATE TABLE " + dbName + ".SVC_LOGIC (" + "module varchar(80) NOT NULL,"
+ "rpc varchar(80) NOT NULL," + "version varchar(40) NOT NULL," + "mode varchar(5) NOT NULL,"
+ "active varchar(1) NOT NULL,graph BLOB,"
- + "modified_timestamp timestamp DEFAULT NULL,"
+ + "modified_timestamp timestamp ,"
+ "md5sum varchar(128) DEFAULT NULL,"
+ "CONSTRAINT P_SVC_LOGIC PRIMARY KEY(module, rpc, version, mode))";
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
- <scope>runtime</scope>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mariadb.jdbc</groupId>
+ <artifactId>mariadb-java-client</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<dependency>
<groupId>org.onap.logging-analytics</groupId>
<artifactId>logging-filter-spring</artifactId>
- <version>1.6.4</version>
+ <version>1.6.6</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
public Properties getProperties() {\r
Properties props = new Properties();\r
\r
+\r
String propPath = System.getProperty("serviceLogicProperties", "");\r
\r
if ("".equals(propPath)) {\r
propPath = System.getenv("SVCLOGIC_PROPERTIES");\r
}\r
\r
+\r
if ((propPath == null) || propPath.length() == 0) {\r
propPath = "src/main/resources/svclogic.properties";\r
}\r
package org.onap.ccsdk.sli.core.sliapi.springboot.core;\r
\r
import org.onap.logging.filter.spring.LoggingInterceptor;\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.beans.factory.annotation.Value;\r
import org.springframework.boot.autoconfigure.domain.EntityScan;\r
import org.springframework.context.annotation.Bean;\r
import org.springframework.context.annotation.ComponentScan;\r
import org.springframework.context.annotation.Configuration;\r
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;\r
+import org.springframework.jdbc.datasource.DriverManagerDataSource;\r
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;\r
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;\r
import org.springframework.orm.jpa.JpaTransactionManager;\r
@EnableTransactionManagement\r
public class WebConfig implements WebMvcConfigurer {\r
\r
-/* @Bean\r
- LoggingInterceptor loggingInterceptor() {\r
- return new LoggingInterceptor();\r
- }\r
\r
- public void addInterceptors(InterceptorRegistry registry) { \r
- registry.addInterceptor(loggingInterceptor()); // handles audit log entries\r
- }*/\r
-\r
- @Bean\r
- public DataSource dataSource() {\r
-\r
- EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();\r
- builder.setName("sdnctl");\r
- return builder.setType(EmbeddedDatabaseType.DERBY).build();\r
- }\r
-\r
- @Bean\r
- public EntityManagerFactory entityManagerFactory() {\r
-\r
- HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();\r
- vendorAdapter.setGenerateDdl(true);\r
-\r
- LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();\r
- factory.setJpaVendorAdapter(vendorAdapter);\r
- factory.setPackagesToScan("org.onap.ccsdk.sli.core.sliapi.springboot.*");\r
- factory.setDataSource(dataSource());\r
- factory.afterPropertiesSet();\r
-\r
- return factory.getObject();\r
- }\r
-\r
- @Bean\r
- public PlatformTransactionManager transactionManager() {\r
-\r
- JpaTransactionManager txManager = new JpaTransactionManager();\r
- txManager.setEntityManagerFactory(entityManagerFactory());\r
- return txManager;\r
- }\r
}
\ No newline at end of file
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
###
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
@Before
public void setUp() throws Exception {
app = new App();
+ System.setProperty("serviceLogicProperties", "src/test/resources/svclogic.properties");
}
@Test
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" +
--- /dev/null
+<service-logic\r
+ xmlns='http://www.onap.org/sdnc/svclogic'\r
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='DEMO' version='1'>\r
+ <method rpc='DEMO' mode='sync'>\r
+ <block>\r
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+ <parameter name="logger" value="message-log" />\r
+ <parameter name="level" value="error" />\r
+ <parameter name="field1" value="Slf4jRecorder must be working!" />\r
+ </record>\r
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">\r
+ <parameter name="ctx-destination" value="requestID" />\r
+ </execute>\r
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome='true' >\r
+ <parameter name="source" value="TEAM" />\r
+ <parameter name="target" value="I" />\r
+ </execute>\r
+ <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties" >\r
+ <parameter name="fileName" value="%SDNC_CONFIG_DIR%/aaf.properties" />\r
+ <parameter name="contextPrefix" value="tmp.props" />\r
+ </execute>\r
+ <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">\r
+ <parameter name="restapiUrl" value="http://127.0.0.1:8080/restconf/config/SLI-API:test-results/"/>\r
+ <parameter name="restapiUser" value="admin"/>\r
+ <parameter name="restapiPassword" value="test"/>\r
+ <parameter name="format" value="json" />\r
+ <parameter name="httpMethod" value="get" />\r
+ <parameter name="responsePrefix" value="restapi-result" />\r
+ </execute>\r
+ <return status='success'>\r
+ <parameter name='' value='' />\r
+ </return>\r
+ </block>\r
+ </method>\r
+</service-logic>
\ No newline at end of file
--- /dev/null
+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
--- /dev/null
+sli healthcheck 0.7.0 sync
+sli vlbcheck 0.7.0 sync
+DEMO DEMO 1 sync
--- /dev/null
+ #-
+ # ============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
--- /dev/null
+user.admin = Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U,service
+role.service = odl-api:*
+
--- /dev/null
+<!--
+ ============LICENSE_START=======================================================
+ openECOMP : SDN-C
+ ================================================================================
+ 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=========================================================
+ -->
+
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.onap.org/sdnc/svclogic ./svclogic.xsd" module='sli' version='0.7.0'><method rpc='healthcheck' mode='sync'>
+<set>
+<parameter name='error-code' value='200' />
+<parameter name='error-message' value='SDN-C is healthy'/>
+<parameter name='ack-final' value='Y'/>
+</set></method></service-logic>
--- /dev/null
+<!--
+ ============LICENSE_START=======================================================
+ openECOMP : SDN-C
+ ================================================================================
+ 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=========================================================
+ -->
+
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.onap.org/sdnc/svclogic ./svclogic.xsd" module='sli' version='0.7.0'><method rpc='vlbcheck' mode='sync'>
+<set>
+<parameter name='error-code' value='200' />
+<parameter name='error-message' value='SDN-C is healthy'/>
+<parameter name='ack-final' value='Y'/>
+</set></method></service-logic>
--- /dev/null
+###
+# ============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