Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

There are two configuration files for A1 Policy Management Service, config/application_configuration.json and config/application.yaml
The first (config/application_configuration.json) contains configuration needed by the application, such as which near-RT-RICs, controller, or DMaaP topic to use. (Note using/configuring DMaaP is deprecated, and will be removed)
The second (config/application.yaml) contains logging and security configurations.

...

(A sample static config file can be found in the repo: application.yaml (Jakartakohn))

Code Block
languageyml
titleSample: application.yaml
collapsetrue
#
# ============LICENSE_START=======================================================
# ONAP : ccsdk oran
# ================================================================================
# Copyright (C) 2020 Nordix Foundation. 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.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================
#
spring:
  profiles:
    active: prod
  main:
    allow-bean-definition-overriding: true
  aop:
    auto: false
management:
  endpoints:
    web:
      exposure:
        # Enabling of springboot actuator features. See springboot documentation.
        include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
 
logging:
  # Configuration of logging
  level:
    ROOT: ERROR
    org.springframework: ERROR
    org.springframework.data: ERROR
    org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
    org.onap.ccsdk.oran.a1policymanagementservice: INFO
    # org.onap.ccsdk.oran.a1policymanagementservice.tasks: TRACE 
  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
   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
app:
  # Location of the component configuration file. The file will only be used if the Consul database is not used;
  # configuration from the Consul will override the 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
  vardata-directory: /var/policy-management-service
  config-file-schema-path:

...

  • controller : Optional A1 Controller configuration, e.g. an SDNC instance (with A1-Adapter)
    • name : for use later in the configuration
    • baseUrl : the URL of the A1 controller (e.g. SDNC + A1 Adapter)
    • userName & password : to configure security parameters to access to the controller
    • The A1 Policy Management service can entirely by-pass the A1-Controller (SDNC + A1 Adapter) if desired - it is optional to access the near-RT-RIC through an A1-Controller.
      In the configuration the "controller" property is optional in the "ric" objects (below)
      If all configured rics bypass the A1-Controller (do not have "controller" values) then the "controller" object at the top of the configuration can be omitted.
      If all configured rics bypass the A1-Controller there is no need to start an A1-Controller.
      There is no functional gain in accessing the near-RT-RIC through an A1-Controller.
  • ric : One entry for each near-RT-RIC, which includes:
    • name : a friendly name to refer to the near-RT-RIC
    • baseUrl : The base URL of the A1 interface endpoint in the near-RT-RIC.
    • managedElementIds : A optional list of identifiers that near-RT-RIC is using. An application can query the A1 Policy Management Service to retrieve "RIC" instance associated with these identiefiers. (e.g. cells, sectors, locations, etc.) .
    • controller : An optional reference to the controller to use, or excluded if the near-RT-RIC can be accessed directly from this A1 Policy Management Service.
    • customAdapterClass: Note: This functionality is not available in Jakarta ... will be added in Kohn release:
      • An optional java class name to be used for the southbound interface towards the NearRT near-RT-RIC. If this is not given the PMS will automatically discover the A1-P API version supported by the NearRT near-RT-RIC.
        This parameter can be used for explicitly defining a class to be used. See the example below using the "customAdapterClass" property. The class used has to be in the class path of the built container.
        This means that the A1-PMS can be extended to support any protocol towards the NearRT near-RT-RIC without changing its implementation.
        On how to implement such an adapter class, see the source code and the actual class referred to in the configuration example below.
  • DMaaP configuration: Optional. Used if the A1 Policy Management Service is configured to send/receive API calls over a DMaaP topic:
    • streams_subscribes : Information on the DMaaP topic to receive API requests
    • streams_publishes : Information on the DMaaP topic to publish API responses
    • Note: Support for accessing the service using DMaaP is deprecated, and will be removed in future versions.

For details about the syntax of the file, there is an example in source code repository /config/application_configuration.json (JakartaKohn). This file is also included in the docker container /opt/app/policy-agent/data/application_configuration.json_example.

...

The configuration must comply to the following JSON schema. There are several publicly available tools (e.g. online) where it is possible to validate JSON objects against their schema. 
The schema is available in the gerrit repo : application_configuration_schema.json (JakartaKohn)

Code Block
languageyml
titleapplication_configuration_schema.json
linenumberstrue
collapsetrue
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "config": {
      "type": "object",
      "properties": {
        "//description": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "controller": {
          "type": "array",
          "items": [
            {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "baseUrl": {
                  "type": "string"
                },
                "userName": {
                  "type": "string"
                },
                "password": {
                  "type": "string"
                }
              },
              "required": [
                "name",
                "baseUrl",
                "userName",
                "password"
              ],
              "additionalProperties": false
            }
          ]
        },
        "ric": {
          "type": "array",
          "items": [
            {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "baseUrl": {
                  "type": "string"
                },
                "controller": {
                  "type": "string"
                },
                "managedElementIds": {
                  "type": "array",
                  "items": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              },
              "required": [
                "name",
                "baseUrl",
                "managedElementIds"
              ],
              "additionalProperties": false
            }
          ]
        },
        "streams_publishes": {
          "type": "object",
          "properties": {
            "dmaap_publisher": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "dmaap_info": {
                  "type": "object",
                  "properties": {
                    "topic_url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "topic_url"
                  ]
                }
              },
              "required": [
                "type",
                "dmaap_info"
              ]
            }
          },
          "required": [
            "dmaap_publisher"
          ]
        },
        "streams_subscribes": {
          "type": "object",
          "properties": {
            "dmaap_subscriber": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "dmaap_info": {
                  "type": "object",
                  "properties": {
                    "topic_url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "topic_url"
                  ]
                }
              },
              "required": [
                "type",
                "dmaap_info"
              ]
            }
          },
          "required": [
            "dmaap_subscriber"
          ]
        }
      },
      "required": [
        "ric"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "config"
  ]
}

...