diff options
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 | | | | +-----------------------------+-----------------------------------------------------+ |