From: aravind.est Date: Fri, 13 Sep 2024 15:54:01 +0000 (+0100) Subject: Update latest CCSDK version X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F53%2F13353%2F3;p=nonrtric%2Fplt%2Fa1policymanagementservice.git Update latest CCSDK version This includes following changes: * Handling non-transient policy creation * Sonar issue/coverage fixes * A1PMS root and policy types updated as per July edition * Set serviceId in v2 policy_info to optional and blank by default * Add database support * Re-arrange application properties * Spring boot upgrade to 3.3.2 Issue-ID: CCSDK-4033 Change-Id: Iaceaaebe02978e24f41d61bcf443508286bec74f Signed-off-by: aravind.est --- diff --git a/api/pms-api-v3.yaml b/api/pms-api-v3.yaml index 3d39056..d2d613a 100644 --- a/api/pms-api-v3.yaml +++ b/api/pms-api-v3.yaml @@ -53,7 +53,7 @@ info: url: https://www.onap.org/ email: discuss-list@onap.com servers: - - url: '{apiRoot}/a1policymanagement/v1' + - url: '{apiRoot}/a1-policy-management/v1' variables: apiRoot: description: 'apiRoot is the Host:port/Domain name of the service where the A1Pms running' @@ -168,7 +168,7 @@ paths: summary: Query Near-RT RIC information tags: - NearRT-RIC Repository - /policytypes: + /policy-types: get: operationId: getPolicyTypes parameters: @@ -238,7 +238,7 @@ paths: description: Query policy type identities tags: - A1 Policy Management - /policytypes/{policyTypeId}: + /policy-types/{policyTypeId}: get: operationId: getPolicyTypeDefinition parameters: @@ -436,7 +436,7 @@ paths: description: "Returns a list of A1 policies matching given search criteria.\ \
If several query parameters are defined, the policies matching all conditions\ \ are returned." - operationId: getPolicyIds + operationId: getAllPolicies parameters: - description: Select policies of a given policy type identity. explode: true @@ -877,9 +877,6 @@ components: 'rApp ID' policyObject: $ref: '#/components/schemas/PolicyObject' - statusNotificationUri: - description: Callback URI for policy status updates - type: string policyTypeId: description: identity of the policy type type: string diff --git a/api/pms-api.json b/api/pms-api.json index 00935a8..f67bca8 100644 --- a/api/pms-api.json +++ b/api/pms-api.json @@ -1594,7 +1594,7 @@ "description" : "Information about policy types" }, "policy_info" : { - "required" : [ "policy_data", "policy_id", "policytype_id", "ric_id", "service_id" ], + "required" : [ "policy_data", "policy_id", "policytype_id", "ric_id" ], "type" : "object", "properties" : { "ric_id" : { @@ -1614,7 +1614,8 @@ }, "service_id" : { "type" : "string", - "description" : "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered." + "description" : "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered.", + "default" : "" }, "policy_data" : { "type" : "object", diff --git a/api/pms-api.yaml b/api/pms-api.yaml index 699d5ed..1c25e05 100644 --- a/api/pms-api.yaml +++ b/api/pms-api.yaml @@ -1307,6 +1307,7 @@ components: used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered. type: string + default: "" policy_data: description: the configuration of the policy type: object @@ -1319,7 +1320,6 @@ components: required: - ric_id - policy_id - - service_id - policy_data - policytype_id type: object diff --git a/api/pms-api/index.html b/api/pms-api/index.html index 1c3ccb1..60783dc 100644 --- a/api/pms-api/index.html +++ b/api/pms-api/index.html @@ -941,7 +941,7 @@ ul.nav-tabs { } }; defs["policy_info"] = { - "required" : [ "policy_data", "policy_id", "policytype_id", "ric_id", "service_id" ], + "required" : [ "policy_data", "policy_id", "policytype_id", "ric_id" ], "type" : "object", "properties" : { "ric_id" : { @@ -961,7 +961,8 @@ ul.nav-tabs { }, "service_id" : { "type" : "string", - "description" : "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered." + "description" : "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered.", + "default" : "" }, "policy_data" : { "type" : "object", diff --git a/config/application.yaml b/config/application.yaml index 39b4486..205c21a 100644 --- a/config/application.yaml +++ b/config/application.yaml @@ -3,6 +3,7 @@ # ONAP : ccsdk oran # ================================================================================ # Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. +# Copyright (C) 2024 OpenInfra Foundation Europe. 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. @@ -19,95 +20,84 @@ # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= # -spring: - application: - name: a1-pms - profiles: - active: prod - main: - allow-bean-definition-overriding: true - aop: - auto: false -management: - tracing: - propagation: - produce: ${ONAP_PROPAGATOR_PRODUCE:[W3C]} - sampling: - probability: 1.0 - endpoints: - web: - exposure: - # Enabling of springboot actuator features. See springboot documentation. - include: "loggers,logfile,health,info,metrics,threaddump,heapdump,shutdown" - endpoint: - shutdown: - enabled: true -lifecycle: - timeout-per-shutdown-phase: "20s" -springdoc: - show-actuator: true -logging: - # Configuration of logging - level: - ROOT: ERROR - org.springframework: ERROR - org.springframework.data: ERROR - org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR - org.springframework.web.servlet.DispatcherServlet: ERROR - org.onap.ccsdk.oran.a1policymanagementservice: INFO - pattern: - console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{20} - %msg%n" - file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{20} - %msg%n" - file: - name: /var/log/policy-agent/application.log -server: - # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework. - # See springboot documentation. - port : 8433 - http-port: 8081 - shutdown: "graceful" - ssl: - key-store-type: JKS - key-store-password: policy_agent - key-store: /opt/app/policy-agent/etc/cert/keystore.jks - key-password: policy_agent - key-alias: policy_agent - # trust-store-password: - # trust-store: + app: - # Location of the component configuration file. - filepath: /opt/app/policy-agent/data/application_configuration.json - webclient: - # Configuration of the trust store used for the HTTP client (outgoing requests) - # The file location and the password for the truststore is only relevant if trust-store-used == true - # Note that the same keystore as for the server is used. - trust-store-used: false - trust-store-password: policy_agent - trust-store: /opt/app/policy-agent/etc/cert/truststore.jks - # Configuration of usage of HTTP Proxy for the southbound accesses. - # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s - # proxy-type can be either HTTP, SOCKS4 or SOCKS5 - http.proxy-host: - http.proxy-port: 0 - http.proxy-type: HTTP - # path where the service can store data. This parameter is not relevant if S3 Object store is configured. - vardata-directory: /var/policy-management-service - # the config-file-schema-path referres to a location in the jar file. If this property is empty or missing, - # no schema validation will be executed. - config-file-schema-path: /application_configuration_schema.json # A file containing an authorization token, which shall be inserted in each HTTP header (authorization). # If the file name is empty, no authorization token is sent. auth-token-file: # A URL to authorization provider such as OPA. Each time an A1 Policy is accessed, a call to this # authorization provider is done for access control. If this is empty, no fine grained access control is done. authorization-provider: + # the config-file-schema-path referres to a location in the jar file. If this property is empty or missing, + # no schema validation will be executed. + config-file-schema-path: /application_configuration_schema.json + # Postgres database usage is enabled using the below parameter. + # If this is enabled, the application will use postgres database for storage. + # This overrides the s3(s3.bucket) or file store(vardata-directory) configuration if enabled. + database-enabled: false + # Location of the component configuration file. + filepath: /opt/app/policy-agent/data/application_configuration.json # S3 object store usage is enabled by defining the bucket to use. This will override the vardata-directory parameter. s3: endpointOverride: http://localhost:9000 accessKeyId: minio secretAccessKey: miniostorage bucket: + webclient: + # Configuration of usage of HTTP Proxy for the southbound accesses. + # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s + # proxy-type can be either HTTP, SOCKS4 or SOCKS5 + http.proxy-host: + http.proxy-port: 0 + http.proxy-type: HTTP + # Configuration of the trust store used for the HTTP client (outgoing requests) + # The file location and the password for the truststore is only relevant if trust-store-used == true + # Note that the same keystore as for the server is used. + trust-store-used: false + trust-store-password: policy_agent + trust-store: /opt/app/policy-agent/etc/cert/truststore.jks + # path where the service can store data. This parameter is not relevant if S3 Object store is configured. + vardata-directory: /var/policy-management-service +lifecycle: + timeout-per-shutdown-phase: "20s" +logging: + # Configuration of logging + file: + name: /var/log/policy-agent/application.log + level: + ROOT: ERROR + org.onap.ccsdk.oran.a1policymanagementservice: INFO + org.springframework: ERROR + org.springframework.data: ERROR + org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR + org.springframework.web.servlet.DispatcherServlet: ERROR + pattern: + console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{20} - %msg%n" + file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{20} - %msg%n" +management: + endpoint: + shutdown: + enabled: true + endpoints: + web: + exposure: + # Enabling of springboot actuator features. See springboot documentation. + include: "loggers,logfile,health,info,metrics,threaddump,heapdump,shutdown" + tracing: + propagation: + produce: ${ONAP_PROPAGATOR_PRODUCE:[W3C]} + sampling: + probability: 1.0 otel: + exporter: + otlp: + traces: + endpoint: ${ONAP_OTEL_EXPORTER_ENDPOINT:http://jaeger:4317} + protocol: ${ONAP_OTEL_EXPORTER_PROTOCOL:grpc} + logs: + exporter: none + metrics: + exporter: none sdk: disabled: ${ONAP_SDK_DISABLED:true} south: ${ONAP_TRACING_SOUTHBOUND:true} @@ -115,12 +105,44 @@ otel: sampler: jaeger_remote: endpoint: ${ONAP_OTEL_SAMPLER_JAEGER_REMOTE_ENDPOINT:http://jaeger:14250} - exporter: - otlp: - traces: - protocol: ${ONAP_OTEL_EXPORTER_PROTOCOL:grpc} - endpoint: ${ONAP_OTEL_EXPORTER_ENDPOINT:http://jaeger:4317} - metrics: - exporter: none - logs: - exporter: none +server: + # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework. + # See springboot documentation. + port : 8433 + http-port: 8081 + shutdown: "graceful" + ssl: + key-store-type: JKS + key-store-password: policy_agent + key-store: /opt/app/policy-agent/etc/cert/keystore.jks + key-password: policy_agent + key-alias: policy_agent + # trust-store-password: + # trust-store: +spring: + aop: + auto: false + application: + name: a1-pms + flyway: + # Configuration of the postgres database to be used for database migration. + # This is where the flyway maintains the information about the sql files loaded. + # These values can be passed via configmap/secret/env variable based on the installation. + # By default, Flyway uses location classpath:db/migration to load the sql files. + # This can be overridden using "flyway.locations" to have a different location. + baseline-on-migrate: true + url: "jdbc:postgresql://127.0.0.1:5432/a1pms" + user: a1pms + password: mypwd + main: + allow-bean-definition-overriding: true + profiles: + active: prod + r2dbc: + # Configuration of the postgres database to be used by the application. + # These values can be passed via configmap/secret/env variable based on the installation. + url: "r2dbc:postgresql://127.0.0.1:5432/a1pms" + username: a1pms + password: mypwd +springdoc: + show-actuator: true \ No newline at end of file diff --git a/docs/offeredapis/swagger/pms-api.json b/docs/offeredapis/swagger/pms-api.json index 00935a8..f67bca8 100644 --- a/docs/offeredapis/swagger/pms-api.json +++ b/docs/offeredapis/swagger/pms-api.json @@ -1594,7 +1594,7 @@ "description" : "Information about policy types" }, "policy_info" : { - "required" : [ "policy_data", "policy_id", "policytype_id", "ric_id", "service_id" ], + "required" : [ "policy_data", "policy_id", "policytype_id", "ric_id" ], "type" : "object", "properties" : { "ric_id" : { @@ -1614,7 +1614,8 @@ }, "service_id" : { "type" : "string", - "description" : "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered." + "description" : "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered.", + "default" : "" }, "policy_data" : { "type" : "object", diff --git a/docs/offeredapis/swagger/pms-api.yaml b/docs/offeredapis/swagger/pms-api.yaml index 699d5ed..1c25e05 100644 --- a/docs/offeredapis/swagger/pms-api.yaml +++ b/docs/offeredapis/swagger/pms-api.yaml @@ -1307,6 +1307,7 @@ components: used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered. type: string + default: "" policy_data: description: the configuration of the policy type: object @@ -1319,7 +1320,6 @@ components: required: - ric_id - policy_id - - service_id - policy_data - policytype_id type: object diff --git a/onap/oran b/onap/oran index ad80065..8909784 160000 --- a/onap/oran +++ b/onap/oran @@ -1 +1 @@ -Subproject commit ad800650d7958985a34ac30d77407a9ce7c2de1a +Subproject commit 890978456c238de30d547d5d4a2992b5cace62ee diff --git a/pom.xml b/pom.xml index 9ed284d..d3c7eca 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ org.springframework.boot spring-boot-starter-parent - 3.2.5 + 3.3.2 org.o-ran-sc.nonrtric.plt @@ -59,6 +59,8 @@ 3.7.0.1746 0.8.8 3.1.0 + 1.20.1 + 1.20.1 @@ -97,6 +99,24 @@ org.springframework.boot spring-boot-starter-webflux + + org.springframework.boot + spring-boot-starter-data-r2dbc + + + org.postgresql + postgresql + runtime + + + org.postgresql + r2dbc-postgresql + runtime + + + org.flywaydb + flyway-core + org.aspectj aspectjweaver @@ -167,6 +187,18 @@ true runtime + + org.testcontainers + junit-jupiter + ${junit.jupiter.version} + test + + + org.testcontainers + localstack + ${localstack.version} + test + org.springframework.boot spring-boot-starter-test