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.
The second (config/application.yaml) contains logging and security configurations.

Static configuration - Settings that cannot be changed at runtime (application.yaml)

...

For details about the parameters in this file, see documentation in the file.

Code Block
languageyml
titleSample: application.yaml
linenumberstrue
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:

See also Istanbul - Configuration of Certs

...

The component has configuration that can be updated in runtime. This configuration can either be loaded from a file (accessible from the container), or from a CBS/Consul database (Cloudify), or using the Configuration REST API. The configuration is re-read and refreshed at regular intervals.

...

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

Sample JSON Configuration

A sample configuration is included below.

Code Block
languageyml
titleapplication_configuration.json
linenumberstrue
collapsetrue
{
  "description": "Application configuration",
  "config": {    
    "controller": [
      {
        "name": "controller1",
        "baseUrl": "http://sdnc_controller:8181",
        "userName": "admin",
        "password": "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"
      }
    ],
    "ric": [
      {
        "name": "ric1",
        "baseUrl": "http://ric1:8085/", 
        "managedElementIds": [
        ]
      },
      {
        "name": "ric2",
        "baseUrl": "http://ric2:8085/",       
        "managedElementIds": [
          "kista_3",
          "kista_4"
        ]
      },
       {
        "name": "ric3",
        "baseUrl": "http://ric3:8085/",
        "controller": "controller1", 
        "managedElementIds": [
          "kista_5",
          "kista_6"
        ]
      },
       {
        "name": "ric4",
        "baseUrl": "http://ric4:8085/",
        "controller": "controller1", 
        "managedElementIds": [
          "kista_7",
          "kista_8",
          "kista_9",
          "kista_10",
          "kista_11"
         ]
      }
    ]
  }
}

JSON Schema for the application configuration

The configuration must comply to the following JSON schema. There are several tools on internet where it is possible to validate JSON against a schema. 

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"
  ]
}

Using CBS/Consul database for dynamic configuration

...