summaryrefslogtreecommitdiffstats
path: root/cps-rest/pom.xml
blob: ccfb77fb691c56737653af8ec21429105460b30d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ============LICENSE_START=======================================================
  Modifications Copyright (C) 2020-2024 Nordix Foundation.
  Modifications Copyright (C) 2021 Bell Canada.
  ================================================================================
  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=========================================================
-->

<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.cps</groupId>
        <artifactId>cps-parent</artifactId>
        <version>3.5.0-SNAPSHOT</version>
        <relativePath>../cps-parent/pom.xml</relativePath>
    </parent>

    <artifactId>cps-rest</artifactId>

    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>cps-service</artifactId>
        </dependency>
        <!-- S P R I N G   D E P E N D E N C I E S -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
        <!-- A L P H A B E T I C A L   D E P E N D E N C I E S -->
        <dependency>
            <groupId>jakarta.validation</groupId>
            <artifactId>jakarta.validation-api</artifactId>
        </dependency>
        <dependency>
            <groupId>io.gsonfire</groupId>
            <artifactId>gson-fire</artifactId>
        </dependency>
        <dependency>
            <groupId>io.swagger.core.v3</groupId>
            <artifactId>swagger-annotations</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
        </dependency>
        <!-- T E S T   D E P E N D E N C I E S -->
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-json</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.spockframework</groupId>
            <artifactId>spock-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.spockframework</groupId>
            <artifactId>spock-spring</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib-nodep</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- Swagger code generation. -->
            <plugin>
                <groupId>org.openapitools</groupId>
                <artifactId>openapi-generator-maven-plugin</artifactId>
                <version>6.6.0</version>
                <executions>
                    <execution>
                        <id>code-gen</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec>
                            <invokerPackage>org.onap.cps.rest.controller</invokerPackage>
                            <modelPackage>org.onap.cps.rest.model</modelPackage>
                            <apiPackage>org.onap.cps.rest.api</apiPackage>
                            <generatorName>spring</generatorName>
                            <generateSupportingFiles>false</generateSupportingFiles>
                            <configOptions>
                                <sourceFolder>src/gen/java</sourceFolder>
                                <dateLibrary>java11</dateLibrary>
                                <interfaceOnly>true</interfaceOnly>
                                <useSpringBoot3>true</useSpringBoot3>
                                <useTags>true</useTags>
                                <openApiNullable>false</openApiNullable>
                                <skipDefaultInterface>true</skipDefaultInterface>
                            </configOptions>
                        </configuration>
                    </execution>
                    <execution>
                        <id>openapi-yaml-gen</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <phase>compile</phase>
                        <configuration>
                            <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec>
                            <generatorName>openapi-yaml</generatorName>
                            <configOptions>
                                <outputFile>openapi.yaml</outputFile>
                            </configOptions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.basedir}/target/classes/static/api-docs/cps-core</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${project.basedir}/target/generated-sources/openapi/</directory>
                                    <includes>
                                      <include>openapi.yaml</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
----+ | postgres.config.pgUserName | Internal user name used by cps-core to connect to its own database. | ``cps`` | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | postgres.config.pgUserPassword | Internal password used by cps-core to connect to its own database. | Not defined | | | | | | | If not defined, the password is generated when deploying the application. | | | | | | | | See also :ref:`cps_common_credentials_retrieval`. | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | postgres.config.pgDatabase | Database name used by cps-core | ``cpsdb`` | | | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | logging.level | Logging level set in cps-core | info | | | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.useStrimziKafka | If targeting a custom kafka cluster, i.e. useStrimziKafka: false, the | true | | | config.eventPublisher.spring.kafka values below must be set. | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.eventPublisher. | Kafka hostname and port | ``<kafka-bootstrap>:9092`` | | spring.kafka.bootstrap-servers | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.eventPublisher. | Kafka consumer client id | ``cps-core`` | | spring.kafka.consumer.client-id | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.eventPublisher. | Kafka security protocol. | ``SASL_PLAINTEXT`` | | spring.kafka.security.protocol | Some possible values are: | | | | | | | | * ``PLAINTEXT`` | | | | * ``SASL_PLAINTEXT``, for authentication | | | | * ``SASL_SSL``, for authentication and encryption | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.eventPublisher. | Kafka security SASL mechanism. Required for SASL_PLAINTEXT and SASL_SSL protocols. | Not defined | | spring.kafka.properties. | Some possible values are: | | | sasl.mechanism | | | | | * ``PLAIN``, for PLAINTEXT | | | | * ``SCRAM-SHA-512``, for SSL | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.eventPublisher. | Kafka security SASL JAAS configuration. Required for SASL_PLAINTEXT and SASL_SSL protocols. | Not defined | | spring.kafka.properties. | Some possible values are: | | | sasl.jaas.config | | | | | * ``org.apache.kafka.common.security.plain.PlainLoginModule required username="..." password="...";``, | | | | for PLAINTEXT | | | | * ``org.apache.kafka.common.security.scram.ScramLoginModule required username="..." password="...";``, | | | | for SSL | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.eventPublisher. | Kafka security SASL SSL store type. Required for SASL_SSL protocol. | Not defined | | spring.kafka.ssl.trust-store-type | Some possible values are: | | | | | | | | * ``JKS`` | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.eventPublisher. | Kafka security SASL SSL store file location. Required for SASL_SSL protocol. | Not defined | | spring.kafka.ssl.trust-store-location | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.eventPublisher. | Kafka security SASL SSL store password. Required for SASL_SSL protocol. | Not defined | | spring.kafka.ssl.trust-store-password | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.eventPublisher. | Kafka security SASL SSL broker hostname identification verification. Required for SASL_SSL protocol. | Not defined | | spring.kafka.properties. | Possible value is: | | | ssl.endpoint.identification.algorithm | | | | | * ``""``, empty string to disable | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.additional. | Core pool size in asynchronous execution of notification. | ``2`` | | notification.async.executor. | | | | core-pool-size | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.additional. | Max pool size in asynchronous execution of notification. | ``1`` | | notification.async.executor. | | | | max-pool-size | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.additional. | Queue Capacity in asynchronous execution of notification. | ``500`` | | notification.async.executor. | | | | queue-capacity | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.additional. | If the executor should wait for the tasks to be completed on shutdown | ``true`` | | notification.async.executor. | | | | wait-for-tasks-to-complete-on-shutdown | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.additional. | Prefix to be added to the thread name in asynchronous execution of notifications. | ``Async-`` | | notification.async.executor. | | | | thread-name-prefix | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.additional. | Maximum time allowed by the thread pool executor for execution of one of the threads in milliseconds. | ``60000`` | | notification.async.executor. | | | | time-out-value-in-ms | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.additional. | Specifies number of database connections between database and application. | ``10`` | | spring.datasource.hikari. | This property controls the maximum size that the pool is allowed to reach, | | | maximumPoolSize | including both idle and in-use connections. | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ .. _additional-cps-ncmp-customizations: Additional CPS-NCMP Customizations ================================== +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.dmiPluginUserName | User name used by cps-core to authenticate themselves for using ncmp-dmi-plugin service. | ``dmiuser`` | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.dmiPluginUserPassword | Internal password used by cps-core to connect to ncmp-dmi-plugin service. | Not defined | | | | | | | If not defined, the password is generated when deploying the application. | | | | | | | | See also :ref:`cps_common_credentials_retrieval`. | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.ncmp.timers | Specifies the delay in milliseconds in which the module sync watch dog will wake again after finishing. | ``30000`` | | .advised-modules-sync.sleep-time-ms | | | | | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.ncmp.timers | Specifies the delay in milliseconds in which the retry mechanism watch dog | | | .locked-modules-sync.sleep-time-ms | will wake again after finishing. | ``300000`` | | | | | | | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.ncmp.timers | Specifies the delay in milliseconds in which the data sync watch dog will wake again after finishing. | ``30000`` | | .cm-handle-data-sync.sleep-time-ms | | | | | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.additional.ncmp.dmi.httpclient | Specifies the maximum time in seconds, to wait for establishing a connection for the HTTP Client. | ``180`` | | .connectionTimeoutInSeconds | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.additional.ncmp.dmi.httpclient | Specifies the maximum number of connections allowed per route in the HTTP client. | ``50`` | | .maximumConnectionsPerRoute | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.additional.ncmp.dmi.httpclient | Specifies the maximum total number of connections that can be held by the HTTP client. | ``100`` | | .maximumConnectionsTotal | | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ | config.additional.ncmp.dmi.httpclient | Specifies the duration in seconds for the threshold, after which idle connections will be evicted | ``5`` | | .idleConnectionEvictionThresholdInSeconds | from the connection pool by the HTTP client. | | +-------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------+ CPS-Core Docker Installation ============================ CPS-Core can also be installed in a docker environment. Latest `docker-compose <https://github.com/onap/cps/blob/master/docker-compose/docker-compose.yml>`_ is included in the repo to start all the relevant services. The latest instructions are covered in the `README <https://github.com/onap/cps/blob/master/docker-compose/README.md>`_. .. Below Label is used by documentation for other CPS components to link here, do not remove even if it gives a warning .. _cps_common_distributed_datastructures: CPS-Core and NCMP Distributed Datastructures ============================================ CPS-Core and NCMP both internally uses embedded distributed datastructure to replicate the state across various instances for low latency. These instances require some additional ports to be available. The default range starts from 5701 and based on the number of instances configured they are incremented sequentially. Below are the list of distributed datastructures that we have. +--------------+------------------------------------+-----------------------------------------------------------+ | Component | Datastructure name | Use | +==============+====================================+===========================================================+ | cps-core | anchorDataCache | Used to resolve prefix for the container name. | +--------------+------------------------------------+-----------------------------------------------------------+ | cps-ncmp | moduleSyncStartedOnCmHandles | Watchdog process to register cm handles. | +--------------+------------------------------------+-----------------------------------------------------------+ | cps-ncmp | dataSyncSemaphores | Watchdog process to sync data from the nodes. | +--------------+------------------------------------+-----------------------------------------------------------+ | cps-ncmp | moduleSyncWorkQueue | Queue used internally for workers to pick the task. | +--------------+------------------------------------+-----------------------------------------------------------+ | cps-ncmp | untrustworthyCmHandlesSet | Stores untrustworthy cm handles whose trust level is NONE.| +--------------+------------------------------------+-----------------------------------------------------------+ | cps-ncmp | trustLevelPerDmiPlugin | Stores the trust level for the dmi-plugins. | +--------------+------------------------------------+-----------------------------------------------------------+ | cps-ncmp | moduleSetTagCacheMapConfig | Stores the module set tags for cm handles. | +--------------+------------------------------------+-----------------------------------------------------------+ | cps-ncmp | cmNotificationSubscriptionCache | Stores and tracks cm notification subscription requests. | +--------------+------------------------------------+-----------------------------------------------------------+ Total number of caches : 8