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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
# # ============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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"$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
...