diff options
11 files changed, 427 insertions, 2 deletions
diff --git a/packages/docker/pom.xml b/packages/docker/pom.xml index ee1bbd9..2df3f49 100755 --- a/packages/docker/pom.xml +++ b/packages/docker/pom.xml @@ -99,7 +99,30 @@ </assembly> </build> </image> - + <image> + <name>${docker.image.prefix}/so-cnfm-as-lcm</name> + <build> + <cleanup>try</cleanup> + <dockerFile>docker-files/Dockerfile.so-cnfm-app</dockerFile> + <tags> + <tag>${project.version}</tag> + <tag>${project.version}-${maven.build.timestamp}</tag> + <tag>${project.docker.latesttag.version}</tag> + </tags> + <assembly> + <inline> + <dependencySets> + <dependencySet> + <includes> + <include>org.onap.so.adapters.so-cnf-adapter.so-cnfm.lcm:so-cnfm-lcm-application</include> + </includes> + <outputFileNameMapping>app.jar</outputFileNameMapping> + </dependencySet> + </dependencySets> + </inline> + </assembly> + </build> + </image> </images> </configuration> @@ -131,7 +154,7 @@ <goal>push</goal> </goals> <configuration> - <image>${docker.image.prefix}/so-cnf-adapter</image> + <image>${docker.image.prefix}/so-cnf-adapter,${docker.image.prefix}/so-cnfm-as-lcm</image> </configuration> </execution> </executions> @@ -153,5 +176,10 @@ <artifactId>so-cnf-adapter-application</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.onap.so.adapters.so-cnf-adapter.so-cnfm.lcm</groupId> + <artifactId>so-cnfm-lcm-application</artifactId> + <version>${project.version}</version> + </dependency> </dependencies> </project>
\ No newline at end of file diff --git a/packages/docker/src/main/docker/docker-files/Dockerfile.so-cnfm-app b/packages/docker/src/main/docker/docker-files/Dockerfile.so-cnfm-app new file mode 100644 index 0000000..eb85e3b --- /dev/null +++ b/packages/docker/src/main/docker/docker-files/Dockerfile.so-cnfm-app @@ -0,0 +1,50 @@ +FROM onap/so/base-image:1.0 + +ARG http_proxy +ENV HTTP_PROXY=$http_proxy +ENV http_proxy=$HTTP_PROXY +ARG https_proxy +ENV HTTPS_PROXY=$https_proxy +ENV https_proxy=$HTTPS_PROXY +ARG KUBECTL_VERSION=v1.21.1 +ARG HELM_VERSION=v3.5.2 + +USER root +RUN mkdir -p /app/config +RUN mkdir -p /app/certificates +RUN mkdir -p /app/logs +RUN mkdir -p /app/ca-certificates +RUN mkdir -p /app/csar +RUN mkdir -p /app/kube-configs + +COPY maven/app.jar /app +COPY configs/logging/logback-spring.xml /app +COPY scripts/start-app.sh /app +COPY scripts/wait-for.sh /app +COPY ca-certificates/onap-ca.crt /app/ca-certificates/onap-ca.crt +RUN chown -R so:so /app + + +ENV TAR_FILE="helm-${HELM_VERSION}-linux-amd64.tar.gz" + +RUN wget https://get.helm.sh/${TAR_FILE} && \ + tar xvf ${TAR_FILE} && \ + chmod +x linux-amd64/helm && \ + mv linux-amd64/helm /usr/local/bin && \ + rm -rf linux-amd64 && \ + rm ${TAR_FILE} + +RUN wget https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl && \ + chmod +x kubectl && \ + mv kubectl /usr/local/bin/kubectl + +USER so + +# Springboot configuration (required) +VOLUME /app/config + +# Root certificates (optional) +VOLUME /app/ca-certificates + +WORKDIR /app +ENTRYPOINT ["/app/start-app.sh"] diff --git a/so-cnfm/so-cnfm-lcm/pom.xml b/so-cnfm/so-cnfm-lcm/pom.xml index 0b1dd81..82474e2 100644 --- a/so-cnfm/so-cnfm-lcm/pom.xml +++ b/so-cnfm/so-cnfm-lcm/pom.xml @@ -16,5 +16,6 @@ <module>so-cnfm-lcm-database-service</module> <module>so-cnfm-lcm-bpmn-flows</module> <module>so-cnfm-lcm-service</module> + <module>so-cnfm-lcm-application</module> </modules> </project>
\ No newline at end of file diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/pom.xml b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/pom.xml new file mode 100644 index 0000000..812bd6d --- /dev/null +++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/pom.xml @@ -0,0 +1,66 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.onap.so.adapters.so-cnf-adapter.so-cnfm.lcm</groupId> + <artifactId>so-cnfm-lcm</artifactId> + <version>1.9.0-SNAPSHOT</version> + </parent> + + <artifactId>so-cnfm-lcm-application</artifactId> + <name>SO CNFM LCM Application</name> + + <build> + <finalName>${project.artifactId}-${project.version}</finalName> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <mainClass>org.onap.so.cnfm.lcm.app.Application</mainClass> + </configuration> + <executions> + <execution> + <goals> + <goal>repackage</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <executions> + <execution> + <id>original</id> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <systemPropertyVariables> + <so.log.level>DEBUG</so.log.level> + </systemPropertyVariables> + <rerunFailingTestsCount>2</rerunFailingTestsCount> + <parallel>suites</parallel> + <useUnlimitedThreads>false</useUnlimitedThreads> + <threadCount>1</threadCount> + </configuration> + </plugin> + </plugins> + </build> + + <dependencies> + <dependency> + <groupId>org.onap.so.adapters.so-cnf-adapter.so-cnfm.lcm</groupId> + <artifactId>so-cnfm-lcm-service</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> +</project>
\ No newline at end of file diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/java/org/onap/so/cnfm/lcm/app/Application.java b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/java/org/onap/so/cnfm/lcm/app/Application.java new file mode 100644 index 0000000..ef383bf --- /dev/null +++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/java/org/onap/so/cnfm/lcm/app/Application.java @@ -0,0 +1,53 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2023 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.cnfm.lcm.app; + +import org.onap.so.security.SoBasicHttpSecurityConfigurer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.ComponentScan.Filter; +import org.springframework.context.annotation.FilterType; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +@SpringBootApplication(scanBasePackages = {"org.onap.so"}) +@ComponentScan(basePackages = {"org.onap"}, nameGenerator = DefaultToShortClassNameBeanNameGenerator.class, + excludeFilters = {@Filter(type = FilterType.ANNOTATION, classes = SpringBootApplication.class), + @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = SoBasicHttpSecurityConfigurer.class)}) +public class Application { + private static final Logger logger = LoggerFactory.getLogger(Application.class); + + /** + * Entry point for the Spring boot application + * + * @param args arguments for the application + */ + public static void main(final String[] args) { + new SpringApplication(Application.class).run(args); + logger.info("SO CNFM LCM Application started successfully!"); + + } + +} diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/java/org/onap/so/cnfm/lcm/app/AsyncThreadExecutorConfiguration.java b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/java/org/onap/so/cnfm/lcm/app/AsyncThreadExecutorConfiguration.java new file mode 100644 index 0000000..249856e --- /dev/null +++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/java/org/onap/so/cnfm/lcm/app/AsyncThreadExecutorConfiguration.java @@ -0,0 +1,64 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2023 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.cnfm.lcm.app; + +import static org.slf4j.LoggerFactory.getLogger; +import java.util.concurrent.Executor; +import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +@Configuration +@EnableAsync +public class AsyncThreadExecutorConfiguration { + private static final Logger logger = getLogger(AsyncThreadExecutorConfiguration.class); + + @Value("${mso.async.core-pool-size:20}") + private int corePoolSize; + + @Value("${mso.async.max-pool-size:30}") + private int maxPoolSize; + + @Value("${mso.async.queue-capacity:50}") + private int queueCapacity; + + @Bean + @Primary + public Executor asyncExecutor() { + logger.info("Setting ThreadPoolTaskExecutor for async calls ..."); + final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(corePoolSize); + executor.setMaxPoolSize(maxPoolSize); + executor.setQueueCapacity(queueCapacity); + executor.setThreadNamePrefix("Async Process-"); + executor.initialize(); + return executor; + } + + +} diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/java/org/onap/so/cnfm/lcm/app/DefaultToShortClassNameBeanNameGenerator.java b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/java/org/onap/so/cnfm/lcm/app/DefaultToShortClassNameBeanNameGenerator.java new file mode 100644 index 0000000..dbf5e02 --- /dev/null +++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/java/org/onap/so/cnfm/lcm/app/DefaultToShortClassNameBeanNameGenerator.java @@ -0,0 +1,36 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2023 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.cnfm.lcm.app; + +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.AnnotationBeanNameGenerator; +import org.springframework.util.ClassUtils; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class DefaultToShortClassNameBeanNameGenerator extends AnnotationBeanNameGenerator { + + @Override + protected String buildDefaultBeanName(final BeanDefinition definition) { + return ClassUtils.getShortName(definition.getBeanClassName()); + } +} diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/java/org/onap/so/cnfm/lcm/app/DisabledBasicHttpSecurityConfigurer.java b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/java/org/onap/so/cnfm/lcm/app/DisabledBasicHttpSecurityConfigurer.java new file mode 100644 index 0000000..b2da420 --- /dev/null +++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/java/org/onap/so/cnfm/lcm/app/DisabledBasicHttpSecurityConfigurer.java @@ -0,0 +1,45 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2023 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.so.cnfm.lcm.app; + +import static org.slf4j.LoggerFactory.getLogger; +import org.onap.so.security.HttpSecurityConfigurer; +import org.slf4j.Logger; +import org.springframework.context.annotation.Primary; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.stereotype.Component; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + */ +@Primary +@Component("basic") +public class DisabledBasicHttpSecurityConfigurer implements HttpSecurityConfigurer { + + private static final Logger logger = getLogger(DisabledBasicHttpSecurityConfigurer.class); + + @Override + public void configure(final HttpSecurity http) throws Exception { + logger.debug("Disabling basic auth settings ... "); + http.csrf().disable().authorizeRequests().antMatchers("/**").permitAll().and().httpBasic().disable(); + } +} + diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/resources/application-aaf.yaml b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/resources/application-aaf.yaml new file mode 100644 index 0000000..cd60460 --- /dev/null +++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/resources/application-aaf.yaml @@ -0,0 +1,13 @@ +# Copyright © 2023 Nordix Foundation +# +# 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.
\ No newline at end of file diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/resources/application-basic.yaml b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/resources/application-basic.yaml new file mode 100644 index 0000000..cd60460 --- /dev/null +++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/resources/application-basic.yaml @@ -0,0 +1,13 @@ +# Copyright © 2023 Nordix Foundation +# +# 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.
\ No newline at end of file diff --git a/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/resources/application.yaml b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/resources/application.yaml new file mode 100644 index 0000000..606e5d4 --- /dev/null +++ b/so-cnfm/so-cnfm-lcm/so-cnfm-lcm-application/src/main/resources/application.yaml @@ -0,0 +1,56 @@ +# Copyright © 2023 Nordix Foundation +# +# 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. +aai: + auth: 2A11B07DB6214A839394AA1EC5844695F5114FC407FF5422625FB00175A3DCB8A1FF745F22867EFA72D5369D599BBD88DA8BED4233CF5586 + version: v19 + endpoint: https://aai.onap:8443 +spring: + datasource: + hikari: + camunda: + jdbcUrl: jdbc:mariadb://${DB_HOST}:${DB_PORT}/camundabpmn + username: ${DB_USERNAME} + password: ${DB_PASSWORD} + driver-class-name: org.mariadb.jdbc.Driver + pool-name: bpmn-pool + registerMbeans: true + cnfm: + jdbcUrl: jdbc:mariadb://${DB_HOST}:${DB_PORT}/cnfm + username: ${DB_ADMIN_USERNAME} + password: ${DB_ADMIN_PASSWORD} + driver-class-name: org.mariadb.jdbc.Driver + pool-name: cnfm-pool + registerMbeans: true + servlet: + multipart: + enabled: true +cnfm: + kube-configs-dir: /app/kube-configs +server: + port: 9888 + tomcat: + max-threads: 50 +camunda: + bpm: + history-level: full + job-execution: + max-pool-size: 30 + core-pool-size: 3 + deployment-aware: true +sdc: + username: mso + password: 76966BDD3C7414A03F7037264FF2E6C8EEC6C28F2B67F2840A1ED857C0260FEE731D73F47F828E5527125D29FD25D3E0DE39EE44C058906BF1657DE77BF897EECA93BDC07FA64F + key: 566B754875657232314F5548556D3665 + endpoint: http://sdc-be.onap:8080 +
\ No newline at end of file |