summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--a1-policy-management/api/pms-api.json633
-rw-r--r--a1-policy-management/pom.xml4
-rw-r--r--a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshCounterTask.java35
-rw-r--r--a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshCounterTaskTest.java71
-rwxr-xr-xdocs/consumedapis/consumedapis.rst10
-rw-r--r--docs/guide/developer-guide.rst14
-rw-r--r--docs/releasenotes/release-notes.rst240
7 files changed, 792 insertions, 215 deletions
diff --git a/a1-policy-management/api/pms-api.json b/a1-policy-management/api/pms-api.json
index 5c5915c5..a81070f7 100644
--- a/a1-policy-management/api/pms-api.json
+++ b/a1-policy-management/api/pms-api.json
@@ -15,18 +15,22 @@
"type": "integer",
"example": 404
}
- }
+ },
+ "example": null
},
"void": {
"description": "Void/empty",
- "type": "object"
+ "type": "object",
+ "example": null
},
"status_info_v2": {
"type": "object",
"properties": {"status": {
"description": "status text",
- "type": "string"
- }}
+ "type": "string",
+ "example": null
+ }},
+ "example": null
},
"ric_info_v2": {
"description": "Information for a Near-RT RIC",
@@ -34,15 +38,18 @@
"properties": {
"ric_id": {
"description": "identity of the Near-RT RIC",
- "type": "string"
+ "type": "string",
+ "example": null
},
"managed_element_ids": {
"description": "O1 identities for managed entities",
"type": "array",
"items": {
"description": "O1 identities for managed entities",
- "type": "string"
- }
+ "type": "string",
+ "example": null
+ },
+ "example": null
},
"state": {
"description": "Represents the states for a Near-RT RIC",
@@ -52,17 +59,21 @@
"AVAILABLE",
"SYNCHRONIZING",
"CONSISTENCY_CHECK"
- ]
+ ],
+ "example": null
},
"policytype_ids": {
"description": "supported policy types",
"type": "array",
"items": {
"description": "supported policy types",
- "type": "string"
- }
+ "type": "string",
+ "example": null
+ },
+ "example": null
}
- }
+ },
+ "example": null
},
"service_registration_info_v2": {
"description": "Information for one service",
@@ -71,18 +82,22 @@
"properties": {
"callback_url": {
"description": "callback for notifying of Near-RT RIC state changes",
- "type": "string"
+ "type": "string",
+ "example": null
},
"service_id": {
"description": "identity of the service",
- "type": "string"
+ "type": "string",
+ "example": null
},
"keep_alive_interval_seconds": {
"format": "int64",
"description": "keep alive interval for the service. This is used to enable optional heartbeat supervision of the service. If set (> 0) the registered service should regularly invoke a 'keepalive' REST call. When a service fails to invoke this 'keepalive' call within the configured time, the service is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means timeout supervision is disabled.",
- "type": "integer"
+ "type": "integer",
+ "example": null
}
- }
+ },
+ "example": null
},
"policy_info_list_v2": {
"description": "List of policy information",
@@ -90,8 +105,10 @@
"properties": {"policies": {
"description": "List of policy information",
"type": "array",
- "items": {"$ref": "#/components/schemas/policy_info_v2"}
- }}
+ "items": {"$ref": "#/components/schemas/policy_info_v2"},
+ "example": null
+ }},
+ "example": null
},
"policy_status_info_v2": {
"description": "Status for one A1-P Policy",
@@ -99,13 +116,16 @@
"properties": {
"last_modified": {
"description": "timestamp, last modification time",
- "type": "string"
+ "type": "string",
+ "example": null
},
"status": {
"description": "the Policy status",
- "type": "object"
+ "type": "object",
+ "example": null
}
- }
+ },
+ "example": null
},
"service_status_v2": {
"description": "List of service information",
@@ -113,23 +133,28 @@
"properties": {
"callback_url": {
"description": "callback for notifying of RIC synchronization",
- "type": "string"
+ "type": "string",
+ "example": null
},
"service_id": {
"description": "identity of the service",
- "type": "string"
+ "type": "string",
+ "example": null
},
"keep_alive_interval_seconds": {
"format": "int64",
"description": "policy keep alive timeout",
- "type": "integer"
+ "type": "integer",
+ "example": null
},
"time_since_last_activity_seconds": {
"format": "int64",
"description": "time since last invocation by the service",
- "type": "integer"
+ "type": "integer",
+ "example": null
}
- }
+ },
+ "example": null
},
"ric_info_list_v2": {
"description": "List of Near-RT RIC information",
@@ -137,16 +162,20 @@
"properties": {"rics": {
"description": "List of Near-RT RIC information",
"type": "array",
- "items": {"$ref": "#/components/schemas/ric_info_v2"}
- }}
+ "items": {"$ref": "#/components/schemas/ric_info_v2"},
+ "example": null
+ }},
+ "example": null
},
"policytype_v2": {
"description": "Policy type",
"type": "object",
"properties": {"policy_schema": {
"description": "Policy type json schema. The schema is a json object following http://json-schema.org/draft-07/schema",
- "type": "object"
- }}
+ "type": "object",
+ "example": null
+ }},
+ "example": null
},
"policytype_id_list_v2": {
"description": "Information about policy types",
@@ -156,9 +185,12 @@
"type": "array",
"items": {
"description": "Policy type identities",
- "type": "string"
- }
- }}
+ "type": "string",
+ "example": null
+ },
+ "example": null
+ }},
+ "example": null
},
"policy_info_v2": {
"description": "Information for one A1-P Policy",
@@ -173,33 +205,41 @@
"properties": {
"ric_id": {
"description": "identity of the target Near-RT RIC",
- "type": "string"
+ "type": "string",
+ "example": null
},
"policy_id": {
"description": "identity of the policy",
- "type": "string"
+ "type": "string",
+ "example": null
},
"transient": {
"description": "if true, the policy is deleted at RIC restart. If false, its value is maintained by this service until explicitly deleted. Default false.",
- "type": "boolean"
+ "type": "boolean",
+ "example": null
},
"service_id": {
"description": "the identity of the service owning the policy",
- "type": "string"
+ "type": "string",
+ "example": null
},
"policy_data": {
"description": "the configuration of the policy",
- "type": "object"
+ "type": "object",
+ "example": null
},
"status_notification_uri": {
"description": "Callback URI for policy status updates",
- "type": "string"
+ "type": "string",
+ "example": null
},
"policytype_id": {
"description": "identity of the policy type",
- "type": "string"
+ "type": "string",
+ "example": null
}
- }
+ },
+ "example": null
},
"policy_id_list_v2": {
"description": "A list of policy identities",
@@ -209,9 +249,12 @@
"type": "array",
"items": {
"description": "Policy identities",
- "type": "string"
- }
- }}
+ "type": "string",
+ "example": null
+ },
+ "example": null
+ }},
+ "example": null
},
"service_list_v2": {
"description": "List of service information",
@@ -219,8 +262,10 @@
"properties": {"service_list": {
"description": "List of service information",
"type": "array",
- "items": {"$ref": "#/components/schemas/service_status_v2"}
- }}
+ "items": {"$ref": "#/components/schemas/service_status_v2"},
+ "example": null
+ }},
+ "example": null
},
"service_callback_info_v2": {
"description": "Information transferred as in Service callbacks (callback_url)",
@@ -232,21 +277,31 @@
"properties": {
"ric_id": {
"description": "identity of a Near-RT RIC",
- "type": "string"
+ "type": "string",
+ "example": null
},
"event_type": {
"description": "values:\nAVAILABLE: the Near-RT RIC has become available for A1 Policy management",
"type": "string",
- "enum": ["AVAILABLE"]
+ "enum": ["AVAILABLE"],
+ "example": null
}
- }
+ },
+ "example": null
},
"Link": {
"type": "object",
"properties": {
- "templated": {"type": "boolean"},
- "href": {"type": "string"}
- }
+ "templated": {
+ "type": "boolean",
+ "example": null
+ },
+ "href": {
+ "type": "string",
+ "example": null
+ }
+ },
+ "example": null
}
}},
"openapi": "3.0.1",
@@ -258,37 +313,55 @@
"responses": {
"200": {
"description": "Policies",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_info_list_v2"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/policy_info_list_v2"},
+ "example": null
+ }}
},
"404": {
"description": "Near-RT RIC, policy type or service not found",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"parameters": [
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "policytype_id",
"description": "Select policies with a given type identity.",
"required": false
},
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "ric_id",
"description": "Select policies for a given Near-RT RIC identity.",
"required": false
},
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "service_id",
"description": "Select policies owned by a given service.",
"required": false
},
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "type_name",
"description": "Select policies of a given type name (type identity has the format <typename_version>)",
@@ -302,7 +375,13 @@
"operationId": "threaddump_2",
"responses": {"200": {
"description": "OK",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
}},
"tags": ["Actuator"]
}},
@@ -311,7 +390,10 @@
"operationId": "getStatus",
"responses": {"200": {
"description": "Service is living",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/status_info_v2"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/status_info_v2"},
+ "example": null
+ }}
}},
"tags": ["Health Check"]
}},
@@ -320,7 +402,13 @@
"operationId": "loggers",
"responses": {"200": {
"description": "OK",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
}},
"tags": ["Actuator"]
}},
@@ -329,7 +417,13 @@
"operationId": "health-path",
"responses": {"200": {
"description": "OK",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
}},
"tags": ["Actuator"]
}},
@@ -340,23 +434,35 @@
"responses": {
"200": {
"description": "Near-RT RIC is found",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ric_info_v2"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/ric_info_v2"},
+ "example": null
+ }}
},
"404": {
"description": "Near-RT RIC is not found",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"parameters": [
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "managed_element_id",
"description": "The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.",
"required": false
},
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "ric_id",
"description": "The identity of a Near-RT RIC to get information for.",
@@ -371,30 +477,45 @@
"responses": {
"200": {
"description": "Policy type IDs",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policytype_id_list_v2"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/policytype_id_list_v2"},
+ "example": null
+ }}
},
"404": {
"description": "Near-RT RIC is not found",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"parameters": [
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "ric_id",
"description": "Select types for the given Near-RT RIC identity.",
"required": false
},
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "type_name",
"description": "Select types with the given type name (type identity has the format <typename_version>)",
"required": false
},
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "compatible_with_version",
"description": "Select types that are compatible with the given version. This parameter is only applicable in conjunction with type_name. As an example version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching types will be returned sorted in ascending order.",
@@ -410,15 +531,24 @@
"responses": {
"200": {
"description": "Policy found",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_info_v2"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/policy_info_v2"},
+ "example": null
+ }}
},
"404": {
"description": "Policy is not found",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"parameters": [{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "path",
"name": "policy_id",
"required": true
@@ -431,23 +561,38 @@
"responses": {
"200": {
"description": "Not used",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/void"},
+ "example": null
+ }}
},
"423": {
"description": "Near-RT RIC is not operational",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
},
"204": {
"description": "Policy deleted",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/void"},
+ "example": null
+ }}
},
"404": {
"description": "Policy is not found",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"parameters": [{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "path",
"name": "policy_id",
"required": true
@@ -460,10 +605,19 @@
"operationId": "metrics-requiredMetricName",
"responses": {"200": {
"description": "OK",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
}},
"parameters": [{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "path",
"name": "requiredMetricName",
"required": true
@@ -477,11 +631,20 @@
"responses": {
"200": {
"description": "Configuration",
- "content": {"application/json": {"schema": {"type": "object"}}}
+ "content": {"application/json": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
},
"404": {
"description": "File is not found or readable",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"tags": ["Management of configuration"]
@@ -489,22 +652,37 @@
"put": {
"summary": "Replace the current configuration file with the given configuration",
"requestBody": {
- "content": {"application/json": {"schema": {"type": "object"}}},
+ "content": {"application/json": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }},
"required": true
},
"operationId": "putConfiguration",
"responses": {
"200": {
"description": "Configuration updated",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/void"},
+ "example": null
+ }}
},
"400": {
"description": "Invalid configuration provided",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
},
"500": {
"description": "Something went wrong when replacing the configuration. Try again.",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"tags": ["Management of configuration"]
@@ -515,13 +693,18 @@
"operationId": "links",
"responses": {"200": {
"description": "OK",
- "content": {"*/*": {"schema": {
- "additionalProperties": {
- "additionalProperties": {"$ref": "#/components/schemas/Link"},
- "type": "object"
+ "content": {"*/*": {
+ "schema": {
+ "additionalProperties": {
+ "additionalProperties": {"$ref": "#/components/schemas/Link"},
+ "type": "object",
+ "example": null
+ },
+ "type": "object",
+ "example": null
},
- "type": "object"
- }}}
+ "example": null
+ }}
}},
"tags": ["Actuator"]
}},
@@ -531,10 +714,19 @@
"operationId": "loggers-name",
"responses": {"200": {
"description": "OK",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
}},
"parameters": [{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "path",
"name": "name",
"required": true
@@ -546,10 +738,19 @@
"operationId": "loggers-name_2",
"responses": {"200": {
"description": "OK",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
}},
"parameters": [{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "path",
"name": "name",
"required": true
@@ -564,15 +765,27 @@
"responses": {
"200": {
"description": "Service supervision timer refreshed, OK",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
},
"404": {
"description": "The service is not found, needs re-registration",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"parameters": [{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "path",
"name": "service_id",
"required": true
@@ -584,7 +797,13 @@
"operationId": "metrics",
"responses": {"200": {
"description": "OK",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
}},
"tags": ["Actuator"]
}},
@@ -595,15 +814,24 @@
"responses": {
"200": {
"description": "OK",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ric_info_list_v2"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/ric_info_list_v2"},
+ "example": null
+ }}
},
"404": {
"description": "Policy type is not found",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"parameters": [{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "policytype_id",
"description": "The identity of a policy type. If given, all Near-RT RICs supporting the policy type are returned",
@@ -619,15 +847,24 @@
"responses": {
"200": {
"description": "OK",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_list_v2"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/service_list_v2"},
+ "example": null
+ }}
},
"404": {
"description": "Service is not found",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"parameters": [{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "service_id",
"description": "The identity of the service",
@@ -638,7 +875,10 @@
"put": {
"summary": "Register a service",
"requestBody": {
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_registration_info_v2"}}},
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/service_registration_info_v2"},
+ "example": null
+ }},
"required": true
},
"description": "Registering a service is needed to:<ul><li>Get callbacks.<\/li><li>Activate supervision of the service. If a service is inactive, its policies will be deleted.<\/li><\/ul>",
@@ -646,15 +886,30 @@
"responses": {
"200": {
"description": "Service updated",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
},
"201": {
"description": "Service created",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
},
"400": {
"description": "The ServiceRegistrationInfo is not accepted",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"tags": ["Service Registry and Supervision"]
@@ -665,7 +920,13 @@
"operationId": "info",
"responses": {"200": {
"description": "OK",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
}},
"tags": ["Actuator"]
}},
@@ -674,7 +935,13 @@
"operationId": "getStatusV1",
"responses": {"200": {
"description": "Service is living",
- "content": {"*/*": {"schema": {"type": "string"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "string",
+ "example": null
+ },
+ "example": null
+ }}
}},
"tags": ["Health Check"]
}},
@@ -684,15 +951,24 @@
"responses": {
"200": {
"description": "Policy type",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/policytype_v2"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/policytype_v2"},
+ "example": null
+ }}
},
"404": {
"description": "Policy type is not found",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"parameters": [{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "path",
"name": "policytype_id",
"required": true
@@ -704,7 +980,13 @@
"operationId": "logfile",
"responses": {"200": {
"description": "OK",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
}},
"tags": ["Actuator"]
}},
@@ -713,7 +995,13 @@
"operationId": "health",
"responses": {"200": {
"description": "OK",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
}},
"tags": ["Actuator"]
}},
@@ -725,37 +1013,55 @@
"responses": {
"200": {
"description": "Policy identities",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_id_list_v2"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/policy_id_list_v2"},
+ "example": null
+ }}
},
"404": {
"description": "Near-RT RIC or type not found",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"parameters": [
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "policytype_id",
"description": "Select policies of a given policy type identity.",
"required": false
},
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "ric_id",
"description": "Select policies of a given Near-RT RIC identity.",
"required": false
},
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "service_id",
"description": "Select policies owned by a given service.",
"required": false
},
{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "query",
"name": "type_name",
"description": "Select policies of types with the given type name (type identity has the format <typename_version>)",
@@ -767,26 +1073,41 @@
"put": {
"summary": "Create or update a policy",
"requestBody": {
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_info_v2"}}},
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/policy_info_v2"},
+ "example": null
+ }},
"required": true
},
"operationId": "putPolicy",
"responses": {
"200": {
"description": "Policy updated",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/void"},
+ "example": null
+ }}
},
"201": {
"description": "Policy created",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/void"},
+ "example": null
+ }}
},
"423": {
"description": "Near-RT RIC is not operational",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
},
"404": {
"description": "Near-RT RIC or policy type is not found",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"tags": ["A1 Policy Management"]
@@ -795,14 +1116,20 @@
"/r-app/near-rt-ric-status": {"post": {
"summary": "Callback for Near-RT RIC status",
"requestBody": {
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_callback_info_v2"}}},
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/service_callback_info_v2"},
+ "example": null
+ }},
"required": true
},
"description": "The URL to this call is registered at Service registration.",
"operationId": "serviceCallback",
"responses": {"200": {
"description": "OK",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/void"},
+ "example": null
+ }}
}},
"tags": ["Callbacks"]
}},
@@ -812,19 +1139,34 @@
"responses": {
"200": {
"description": "Not used",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/void"},
+ "example": null
+ }}
},
"204": {
"description": "Service unregistered",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
},
"404": {
"description": "Service not found",
- "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"*/*": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"parameters": [{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "path",
"name": "service_id",
"required": true
@@ -836,7 +1178,13 @@
"operationId": "heapdump",
"responses": {"200": {
"description": "OK",
- "content": {"*/*": {"schema": {"type": "object"}}}
+ "content": {"*/*": {
+ "schema": {
+ "type": "object",
+ "example": null
+ },
+ "example": null
+ }}
}},
"tags": ["Actuator"]
}},
@@ -846,15 +1194,24 @@
"responses": {
"200": {
"description": "Policy status",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_status_info_v2"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/policy_status_info_v2"},
+ "example": null
+ }}
},
"404": {
"description": "Policy is not found",
- "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+ "content": {"application/json": {
+ "schema": {"$ref": "#/components/schemas/error_information"},
+ "example": null
+ }}
}
},
"parameters": [{
- "schema": {"type": "string"},
+ "schema": {
+ "type": "string",
+ "example": null
+ },
"in": "path",
"name": "policy_id",
"required": true
diff --git a/a1-policy-management/pom.xml b/a1-policy-management/pom.xml
index bd343e9a..6bb438a5 100644
--- a/a1-policy-management/pom.xml
+++ b/a1-policy-management/pom.xml
@@ -41,8 +41,10 @@
<formatter-maven-plugin.version>2.13.0</formatter-maven-plugin.version>
<spotless-maven-plugin.version>2.5.0</spotless-maven-plugin.version>
<commons-io.version>2.11.0</commons-io.version>
+ <guava.version>31.0.1-jre</guava.version>
<docker-maven-plugin>0.30.0</docker-maven-plugin>
<surefire-maven-plugin.version>3.0.0-M5</surefire-maven-plugin.version>
+ <snakeyaml.version>1.32</snakeyaml.version><!-- overrides version included via spring-boot-starter:jar:2.6.11 to address CVE-2022-38752. Remove later if possible -->
<!-- Version must be higher than version 2.19.1 that is defined in the parent pom for JUnit 5 tests to be run. Do not remove! -->
<jacoco-maven-plugin.version>0.8.6</jacoco-maven-plugin.version>
<swagger-codegen-maven-plugin.version>3.0.11</swagger-codegen-maven-plugin.version>
@@ -116,6 +118,7 @@
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
+ <version>${guava.version}</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
@@ -224,7 +227,6 @@
<version>${commons-io.version}</version>
<scope>test</scope>
</dependency>
- <!-- https://mvnrepository.com/artifact/com.github.erosb/everit-json-schema -->
<dependency>
<groupId>com.github.erosb</groupId>
<artifactId>everit-json-schema</artifactId>
diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshCounterTask.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshCounterTask.java
index 8eb8fbcb..95999a04 100644
--- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshCounterTask.java
+++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshCounterTask.java
@@ -22,37 +22,37 @@ package org.onap.ccsdk.oran.a1policymanagementservice.tasks;
import io.micrometer.core.instrument.MeterRegistry;
import java.lang.invoke.MethodHandles;
-import java.util.concurrent.atomic.AtomicLong;
+import lombok.AccessLevel;
+import lombok.Getter;
import org.onap.ccsdk.oran.a1policymanagementservice.repository.Policies;
import org.onap.ccsdk.oran.a1policymanagementservice.repository.PolicyTypes;
import org.onap.ccsdk.oran.a1policymanagementservice.repository.Rics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* The aim is to collect statistical values from the A1 Policy Management Service.
- * The counters are being updated every minute.
*/
-@EnableScheduling
@Component
public class RefreshCounterTask {
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+ @Autowired
private final Rics rics;
+
+ @Autowired
private final PolicyTypes policyTypes;
+
+ @Autowired
private final Policies policies;
+ @Autowired
+ @Getter(AccessLevel.PUBLIC)
private final MeterRegistry meterRegistry;
- private final AtomicLong ricCount;
- private final AtomicLong policyTypeCount;
- private final AtomicLong policyCount;
-
@Autowired
public RefreshCounterTask(Rics rics, PolicyTypes policyTypes, Policies policies, MeterRegistry meterRegistry) {
this.rics = rics;
@@ -60,19 +60,10 @@ public class RefreshCounterTask {
this.policies = policies;
this.meterRegistry = meterRegistry;
- ricCount = meterRegistry.gauge("total_ric_count", new AtomicLong(0));
- policyTypeCount = meterRegistry.gauge("total_policy_type_count", new AtomicLong(0));
- policyCount = meterRegistry.gauge("total_policy_count", new AtomicLong(0));
+ logger.trace("Counters have been initialized.");
+ meterRegistry.gauge("total_ric_count", rics, Rics::size);
+ meterRegistry.gauge("total_policy_type_count", policyTypes, PolicyTypes::size);
+ meterRegistry.gauge("total_policy_count", policies, Policies::size);
}
- /**
- * Every minute, updates counters for statistical purposes.
- */
- @Scheduled(fixedRate = 1000 * 60)
- public void checkAllCounters() {
- logger.trace("Checking counters starting...");
- ricCount.set(rics.size());
- policyCount.set(policies.size());
- policyTypeCount.set(policyTypes.size());
- }
}
diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshCounterTaskTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshCounterTaskTest.java
index 3adfb316..bd315c26 100644
--- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshCounterTaskTest.java
+++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshCounterTaskTest.java
@@ -23,6 +23,7 @@ package org.onap.ccsdk.oran.a1policymanagementservice.tasks;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.spy;
+import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.prometheus.PrometheusConfig;
import io.micrometer.prometheus.PrometheusMeterRegistry;
import java.time.Instant;
@@ -42,7 +43,7 @@ import org.onap.ccsdk.oran.a1policymanagementservice.repository.Ric;
import org.onap.ccsdk.oran.a1policymanagementservice.repository.Rics;
@ExtendWith(MockitoExtension.class)
-public class RefreshCounterTaskTest {
+class RefreshCounterTaskTest {
private static final String POLICY_TYPE_1_NAME = "type1";
private static final PolicyType POLICY_TYPE_1 = PolicyType.builder().id(POLICY_TYPE_1_NAME).schema("").build();
@@ -56,16 +57,16 @@ public class RefreshCounterTaskTest {
.ric(RIC_1).type(POLICY_TYPE_1).lastModified(Instant.now()).isTransient(false)
.statusNotificationUri("statusNotificationUri").build();
- private PrometheusMeterRegistry prometheusMeterRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
+ private final PrometheusMeterRegistry prometheusMeterRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
private final ApplicationConfig appConfig = new ApplicationConfig();
- private PolicyTypes types;
+ private PolicyTypes policyTypes;
private Policies policies;
private Rics rics = new Rics();
@BeforeEach
void init() {
- types = new PolicyTypes(appConfig);
+ policyTypes = new PolicyTypes(appConfig);
policies = new Policies(appConfig);
rics.clear();
@@ -79,16 +80,16 @@ public class RefreshCounterTaskTest {
RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
rics.put(RIC_1);
- types.put(POLICY_TYPE_1);
+ policyTypes.put(POLICY_TYPE_1);
policies.put(POLICY_1);
- RefreshCounterTask refreshCounterTaskUnderTest = spy(createRefreshCounterTask());
- refreshCounterTaskUnderTest.checkAllCounters();
+ RefreshCounterTask spy = spy(createRefreshCounterTask()); // instantiate RefreshCounterTask
+ MeterRegistry meterRegistry = spy.getMeterRegistry();
- assertThat(prometheusMeterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
- assertThat(prometheusMeterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(1);
- assertThat(prometheusMeterRegistry.get("total_policy_count").gauge().value()).isEqualTo(1);
+ assertThat(meterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
+ assertThat(meterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(1);
+ assertThat(meterRegistry.get("total_policy_count").gauge().value()).isEqualTo(1);
}
@Test
@@ -97,30 +98,30 @@ public class RefreshCounterTaskTest {
RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
rics.put(RIC_1);
- types.put(POLICY_TYPE_1);
+ policyTypes.put(POLICY_TYPE_1);
policies.put(POLICY_1);
String POLICY_2_ID = "policyId2";
- Policy POLICY_2 = Policy.builder() //
- .id(POLICY_2_ID) //
- .json("") //
- .ownerServiceId("service") //
- .ric(RIC_1) //
- .type(POLICY_TYPE_1) //
- .lastModified(Instant.now()) //
+ Policy POLICY_2 = Policy.builder()
+ .id(POLICY_2_ID)
+ .json("")
+ .ownerServiceId("service")
+ .ric(RIC_1)
+ .type(POLICY_TYPE_1)
+ .lastModified(Instant.now())
.isTransient(false) //
- .statusNotificationUri("statusNotificationUri") //
+ .statusNotificationUri("statusNotificationUri")
.build();
policies.put(POLICY_2);
- RefreshCounterTask refreshCounterTaskUnderTest = spy(createRefreshCounterTask());
- refreshCounterTaskUnderTest.checkAllCounters();
+ RefreshCounterTask spy = spy(createRefreshCounterTask()); // instantiate RefreshCounterTask
+ MeterRegistry meterRegistry = spy.getMeterRegistry();
- assertThat(prometheusMeterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
- assertThat(prometheusMeterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(1);
- assertThat(prometheusMeterRegistry.get("total_policy_count").gauge().value()).isEqualTo(2);
+ assertThat(meterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
+ assertThat(meterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(1);
+ assertThat(meterRegistry.get("total_policy_count").gauge().value()).isEqualTo(2);
}
@Test
@@ -128,29 +129,29 @@ public class RefreshCounterTaskTest {
RIC_1.setState(Ric.RicState.AVAILABLE);
String POLICY_TYPE_2_NAME = "type2";
- PolicyType POLICY_TYPE_2 = PolicyType.builder() //
- .id(POLICY_TYPE_2_NAME) //
- .schema("") //
+ PolicyType POLICY_TYPE_2 = PolicyType.builder()
+ .id(POLICY_TYPE_2_NAME)
+ .schema("")
.build();
RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
RIC_1.addSupportedPolicyType(POLICY_TYPE_2);
rics.put(RIC_1);
- types.put(POLICY_TYPE_1);
- types.put(POLICY_TYPE_2);
+ policyTypes.put(POLICY_TYPE_1);
+ policyTypes.put(POLICY_TYPE_2);
policies.put(POLICY_1);
- RefreshCounterTask refreshCounterTaskUnderTest = spy(createRefreshCounterTask());
- refreshCounterTaskUnderTest.checkAllCounters();
+ RefreshCounterTask spy = spy(createRefreshCounterTask()); // instantiate RefreshCounterTask
+ MeterRegistry meterRegistry = spy.getMeterRegistry();
- assertThat(prometheusMeterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
- assertThat(prometheusMeterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(2);
- assertThat(prometheusMeterRegistry.get("total_policy_count").gauge().value()).isEqualTo(1);
+ assertThat(meterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
+ assertThat(meterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(2);
+ assertThat(meterRegistry.get("total_policy_count").gauge().value()).isEqualTo(1);
}
private RefreshCounterTask createRefreshCounterTask() {
- return new RefreshCounterTask(rics, types, policies, prometheusMeterRegistry);
+ return new RefreshCounterTask(rics, policyTypes, policies, prometheusMeterRegistry);
}
}
diff --git a/docs/consumedapis/consumedapis.rst b/docs/consumedapis/consumedapis.rst
index e1c6bda6..6c5d33df 100755
--- a/docs/consumedapis/consumedapis.rst
+++ b/docs/consumedapis/consumedapis.rst
@@ -5,7 +5,7 @@ Consumed APIs
=============
-Policy Management Service application is interacting with two ONAP APIs and the A1-P API.
+The A1 Policy Management Service consumes two ONAP APIs and the A1-P API.
**********************
@@ -14,16 +14,18 @@ DMaaP API (deprecated)
The A1 Policy Management Service API can also be accessed using *ONAP DMaaP*. To support this the `DMaaP Message Router API <https://docs.onap.org/projects/onap-dmaap-messagerouter-messageservice/en/latest/offeredapis/api.html>`_ is used.
+Note: this functionality is deprecated, and will be removed in future versions.
+
*****************************************
O-RAN A1 Interface for A1 Policies (A1-P)
*****************************************
Southbound, the ONAP A1 Policy functions communicate with *near-RT-RIC* RAN functions using the **A1** interface, as defined by the `O-RAN Alliance <https://www.o-ran.org>`_
-The *A1 Interface - Application Protocol Specification (A1-AP)* describe this interface. The specification can be viewed from the `O-RAN Alliance <https://www.o-ran.org>`_ website.
+The *A1 Interface - Application Protocol Specification (A1-AP)* describes this interface. The specification can be viewed from the `O-RAN Alliance <https://www.o-ran.org>`_ website.
-The **Jakarta** ONAP A1 Policy functions implement the *A1 Policy* parts (*A1-P*) of A1-AP versions *v1.1*, *v2.0* and *v3.0*
+The **Kohn** ONAP A1 Policy functions implement the *A1 Policy* parts (*A1-P*) of A1-AP versions *v1.1*, *v2.0* and *v3.0*
-An opensource implementation of a `near-RT-RIC <https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=1179659>`_ is available from the `O-RAN Software Community <https://o-ran-sc.org>`_. It supports a pre-spec version of the A1-AP. The ONAP A1 Policy functions described here also supports this A1 version (A1-OSC).
+An opensource implementation of a `near-RT-RIC <https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=1179659>`_ is available from the `O-RAN Software Community <https://o-ran-sc.org>`_. It supports a pre-spec version of the A1-AP. The ONAP A1 Policy functions described here also supports this A1 version (*A1-OSC*).
An opensource implementation of an `A1 Simulator <https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=3604819>`_ is also available from the `O-RAN Software Community <https://o-ran-sc.org>`_. It supports all versions of A1-AP.
diff --git a/docs/guide/developer-guide.rst b/docs/guide/developer-guide.rst
index a7c5a835..3734d8fc 100644
--- a/docs/guide/developer-guide.rst
+++ b/docs/guide/developer-guide.rst
@@ -58,10 +58,10 @@ Configuration
-------------
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 (deprecated).
+The first (*config/application_configuration.json*) contains configuration needed by the application, such as which near-RT-RICs, or controller to use. DMaaP topic can also be configured, but is deprecated.
The second (*config/application.yaml*) contains logging and security configurations.
-For more information about these configuration files can be found as comments in the sample files provided with the source code, or on the `ONAP wiki <https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP+Jakarta>`_
+For more information about these configuration files can be found as comments in the sample files provided with the source code, or on the `ONAP wiki <https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP+Kohn>`_
Static configuration - Settings that cannot be changed at runtime (*application.yaml*)
--------------------------------------------------------------------------------------
@@ -84,12 +84,14 @@ The file *./config/application.yaml* is read by the application at startup. It p
For details about the parameters in this file, see documentation in the file.
Dynamic configuration - Settings that can be changed at runtime (*application_configuration.json* or REST or ConfigMap)
--------------------------------------------------------------------------------------------------------------------------------
-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.
+-----------------------------------------------------------------------------------------------------------------------
+The component has configuration that can be updated in runtime. This configuration can either be loaded from a file (accessible from the container), or using the Configuration REST API. The configuration is re-read and refreshed at regular intervals.
The configuration includes:
* Optional Controller configuration, e.g. an SDNC instance (with A1-Adapter)
+
+ * (If no 'Contoller' is configured, the A1 Policy Management Service will connect direct to near-RT-RICs, bypassing the SDNC controller)
* One entry for each near-RT-RIC, which includes:
* The base URL of the near-RT-RIC
@@ -107,7 +109,7 @@ Configuring certificates
The A1 Policy Management Service uses the default keystore and truststore that are built into the container. The paths and
passwords for these stores are located in a yaml file, with an example is provided in the source code repository *a1-policy-management/config/application.yaml*
-There is also Policy Management Service's own cert in the default truststore for mocking purposes and unit-testing
+There is also the A1 Policy Management Service's own cert in the default truststore for mocking purposes and unit-testing
(*ApplicationTest.java*).
The default keystore, truststore, and application.yaml files can be overridden by mounting new files using the the docker "volumes"
@@ -123,7 +125,7 @@ The target paths in the container should not be modified.
Example docker run command for mounting new files (assuming they are located in the current directory): ::
- docker run -p 8081:8081 -p 8433:8433 --name=policy-agent-container --network=nonrtric-docker-net --volume "$PWD/new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks" --volume "$PWD/new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks" --volume "$PWD/new_application.yaml:/opt/app/policy-agent/config/application.yaml" onap/ccsdk-oran-a1policymanagementservice:1.4.0-SNAPSHOT
+ docker run -p 8081:8081 -p 8433:8433 --name=policy-agent-container --network=nonrtric-docker-net --volume "$PWD/new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks" --volume "$PWD/new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks" --volume "$PWD/new_application.yaml:/opt/app/policy-agent/config/application.yaml" onap/ccsdk-oran-a1policymanagementservice:1.4.2-SNAPSHOT
A1 Adapter (Internal)
+++++++++++++++++++++
diff --git a/docs/releasenotes/release-notes.rst b/docs/releasenotes/release-notes.rst
index 5450e15f..4d3ac9df 100644
--- a/docs/releasenotes/release-notes.rst
+++ b/docs/releasenotes/release-notes.rst
@@ -55,12 +55,36 @@ Version history Policy Management Service
| 2021-09-16 | 1.2.1 | Dan Timoney | M4 version, |
| | | | Istanbul Release |
+------------+----------+-------------+-------------------+
-| 2021-08-31 | 1.2.0 | Dan Timoney | RC1 version, |
+| 2021-10-19 | 1.2.2 | Dan Timoney | RC version, |
| | | | Istanbul Release |
+------------+----------+-------------+-------------------+
-| 2022-03-28 | 1.3.0 | Dan Timoney | RC1 version, |
+| 2021-10-21 | 1.2.3 | Dan Timoney | Release version, |
+| | | | Istanbul Release |
++------------+----------+-------------+-------------------+
+| 2021-12-06 | 1.2.4 | Dan Timoney | Release version, |
+| | | | Istanbul Release |
++------------+----------+-------------+-------------------+
+| 2021-12-09 | 1.2.5 | Dan Timoney | Release version, |
+| | | | Istanbul Release |
++------------+----------+-------------+-------------------+
+| 2022-03-29 | 1.3.0 | Dan Timoney | M4 version, |
| | | | Jakarta Release |
+------------+----------+-------------+-------------------+
+| 2022-04-29 | 1.3.1 | Dan Timoney | RC1 version, |
+| | | | Jakarta Release |
++------------+----------+-------------+-------------------+
+| 2022-06-07 | 1.3.2 | Dan Timoney | Release version, |
+| | | | Jakarta Release |
++------------+----------+-------------+-------------------+
+| 2022-08-29 | 1.3.3 | John Keeney | Release version, |
+| | | | Jakarta Release |
++------------+----------+-------------+-------------------+
+| 2022-09-26 | 1.4.0 | Dan Timoney | M3 version, |
+| | | | Kohn Release |
++------------+----------+-------------+-------------------+
+| 2022-10-25 | 1.4.1 | Dan Timoney | RC (1) version, |
+| | | | Kohn Release |
++------------+----------+-------------+-------------------+
Version history A1 Adapter
==========================
@@ -69,7 +93,7 @@ Version history A1 Adapter
| **Date** | **Ver.** | **Author** | **Comment** |
| | | | |
+------------+----------+-------------+-------------------+
-| 2019-09-10 | 1.0.0 | Dan Timoney | M4 version, |
+| 2020-09-10 | 1.0.0 | Dan Timoney | M4 version, |
| | | | Guilin Release |
+------------+----------+-------------+-------------------+
| 2020-11-02 | 1.0.1 | Dan Timoney | RC1 version, |
@@ -99,12 +123,39 @@ Version history A1 Adapter
| 2021-09-02 | 1.2.0 | Dan Timoney | M3 version, |
| | | | Istanbul Release |
+------------+----------+-------------+-------------------+
-| 2021-08-31 | 1.2.0 | Dan Timoney | RC1 version, |
+| 2021-09-16 | 1.2.1 | Dan Timoney | M4 version, |
+| | | | Istanbul Release |
++------------+----------+-------------+-------------------+
+| 2021-10-19 | 1.2.2 | Dan Timoney | RC version, |
| | | | Istanbul Release |
+------------+----------+-------------+-------------------+
-| 2022-03-28 | 1.3.0 | Dan Timoney | RC1 version, |
+| 2021-10-21 | 1.2.3 | Dan Timoney | Release version, |
+| | | | Istanbul Release |
++------------+----------+-------------+-------------------+
+| 2021-12-06 | 1.2.4 | Dan Timoney | Release version, |
+| | | | Istanbul Release |
++------------+----------+-------------+-------------------+
+| 2021-12-09 | 1.2.5 | Dan Timoney | Release version, |
+| | | | Istanbul Release |
++------------+----------+-------------+-------------------+
+| 2022-03-29 | 1.3.0 | Dan Timoney | M4 version, |
+| | | | Jakarta Release |
++------------+----------+-------------+-------------------+
+| 2022-04-29 | 1.3.1 | Dan Timoney | RC1 version, |
| | | | Jakarta Release |
+------------+----------+-------------+-------------------+
+| 2022-06-07 | 1.3.2 | Dan Timoney | Release version, |
+| | | | Jakarta Release |
++------------+----------+-------------+-------------------+
+| 2022-08-29 | 1.3.3 | John Keeney | Release version, |
+| | | | Jakarta Release |
++------------+----------+-------------+-------------------+
+| 2022-09-26 | 1.4.0 | Dan Timoney | M3 version, |
+| | | | Kohn Release |
++------------+----------+-------------+-------------------+
+| 2022-10-25 | 1.4.1 | Dan Timoney | RC (1) version, |
+| | | | Kohn Release |
++------------+----------+-------------+-------------------+
Release Data
============
@@ -314,7 +365,102 @@ Istanbul, M4
| **Release date** | 2021-09-16 |
| | |
+-----------------------------+-----------------------------------------------------+
-| **Purpose of the delivery** | Improvements in ORAN, M4 version |
+| **Purpose of the delivery** | Improvements in ORAN, 1.2.1, M4 version |
+| | |
++-----------------------------+-----------------------------------------------------+
+
+Istanbul, RC
+------------
++-----------------------------+-----------------------------------------------------+
+| **Project** | CCSDK ORAN |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Repo/commit-ID** | ccsdk-oran/f726685a515dc9442887b2cea982604c0c459de7 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release designation** | Istanbul |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release date** | 2021-10-19 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Purpose of the delivery** | Improvements in ORAN, 1.2.2, RC version |
+| | |
++-----------------------------+-----------------------------------------------------+
+
+Istanbul, Release 1.2.3
+-----------------------
++-----------------------------+-----------------------------------------------------+
+| **Project** | CCSDK ORAN |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Repo/commit-ID** | ccsdk-oran/ddc61485ae3c9c856c1f7989515d60a800aba6b9 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release designation** | Istanbul |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release date** | 2021-10-21 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Purpose of the delivery** | Improvements in ORAN, 1.2.3, Release |
+| | |
++-----------------------------+-----------------------------------------------------+
+
+Istanbul, Release 1.2.4
+-----------------------
++-----------------------------+-----------------------------------------------------+
+| **Project** | CCSDK ORAN |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Repo/commit-ID** | ccsdk-oran/72d8a8abbe096a3e21c920abdc8034437d4b6f7f |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release designation** | Istanbul |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release date** | 2021-12-06 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Purpose of the delivery** | Improvements in ORAN, 1.2.4, Release |
+| | |
++-----------------------------+-----------------------------------------------------+
+
+Istanbul, Release 1.2.5
+-----------------------
++-----------------------------+-----------------------------------------------------+
+| **Project** | CCSDK ORAN |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Repo/commit-ID** | ccsdk-oran/b056353185760a887d4555c315e094436aaf0050 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release designation** | Istanbul |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release date** | 2021-12-09 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Purpose of the delivery** | Improvements in ORAN, 1.2.5, Release |
+| | |
++-----------------------------+-----------------------------------------------------+
+
+Jakarta, M4
+------------
++-----------------------------+-----------------------------------------------------+
+| **Project** | CCSDK ORAN |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Repo/commit-ID** | ccsdk-oran/75978a77bc2d332b23506bc3fc37cf34a809e277 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release designation** | Jakarta |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release date** | 2022-03-29 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Purpose of the delivery** | Improvements, M4 1.3.0 version |
| | |
+-----------------------------+-----------------------------------------------------+
@@ -324,15 +470,91 @@ Jakarta, RC1
| **Project** | CCSDK ORAN |
| | |
+-----------------------------+-----------------------------------------------------+
-| **Repo/commit-ID** | ccsdk-oran/4b6205245fd4839e4449e26aa4e3000ddb30ecc1 |
+| **Repo/commit-ID** | ccsdk-oran/f061e6cce023d789f2de4035b85e210496216c61 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release designation** | Jakarta |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release date** | 2022-04-29 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Purpose of the delivery** | Improvements, RC1 1.3.1 version |
+| | |
++-----------------------------+-----------------------------------------------------+
+
+Jakarta, Release 1.3.2
+----------------------
++-----------------------------+-----------------------------------------------------+
+| **Project** | CCSDK ORAN |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Repo/commit-ID** | ccsdk-oran/da4210def8b1eb998af881ff0cb275cc09449aac |
| | |
+-----------------------------+-----------------------------------------------------+
| **Release designation** | Jakarta |
| | |
+-----------------------------+-----------------------------------------------------+
-| **Release date** | 2022-02-28 |
+| **Release date** | 2022-06-07 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Purpose of the delivery** | Improvements, Release 1.3.2 version |
+| | |
++-----------------------------+-----------------------------------------------------+
+
+Jakarta, Release 1.3.3
+----------------------
++-----------------------------+-----------------------------------------------------+
+| **Project** | CCSDK ORAN |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Repo/commit-ID** | ccsdk-oran/97ace6245fb8b7238d2f7f871797ba03df2d435f |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release designation** | Jakarta |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release date** | 2022-08-29 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Purpose of the delivery** | Improvements, Release 1.3.3 version |
+| | |
++-----------------------------+-----------------------------------------------------+
+
+Kohn, M3
+--------
++-----------------------------+-----------------------------------------------------+
+| **Project** | CCSDK ORAN |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Repo/commit-ID** | ccsdk-oran/4e7d4dea70232b2e03a1f8e72d700698acf2bb47 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release designation** | Kohn |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release date** | 2022-09-26 |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Purpose of the delivery** | Improvements, Kohn M3 1.4.0 version |
+| | |
++-----------------------------+-----------------------------------------------------+
+
+Kohn, RC (1)
+------------
++-----------------------------+-----------------------------------------------------+
+| **Project** | CCSDK ORAN |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Repo/commit-ID** | ccsdk-oran/f2e9dce279d7db91645da4c5a19c81904d8cbb9a |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release designation** | Kohn |
+| | |
++-----------------------------+-----------------------------------------------------+
+| **Release date** | 2022-10-25 |
| | |
+-----------------------------+-----------------------------------------------------+
-| **Purpose of the delivery** | Improvements, RC1 version |
+| **Purpose of the delivery** | Improvements, Kohn RC 1.4.1 version |
| | |
+-----------------------------+-----------------------------------------------------+