--- /dev/null
+---
+distribution_type: container
+container_release_tag: 1.0.0
+container_pull_registry: nexus3.o-ran-sc.org:10004
+container_push_registry: nexus3.o-ran-sc.org:10002
+project: nonrtric
+ref: fbccee5729fb23f3424046c1d122d29f0fec545a
+containers:
+ - name: nonrtric-plt-pmlog
+ version: 1.0.0
--- /dev/null
+---
+distribution_type: container
+container_release_tag: 1.0.0
+container_pull_registry: nexus3.o-ran-sc.org:10004
+container_push_registry: nexus3.o-ran-sc.org:10002
+project: nonrtric
+ref: fbccee5729fb23f3424046c1d122d29f0fec545a
+containers:
+ - name: nonrtric-plt-ranpm-datafilecollector
+ version: 1.0.0
--- /dev/null
+---
+distribution_type: container
+container_release_tag: 1.0.0
+container_pull_registry: nexus3.o-ran-sc.org:10004
+container_push_registry: nexus3.o-ran-sc.org:10002
+project: nonrtric
+ref: fbccee5729fb23f3424046c1d122d29f0fec545a
+containers:
+ - name: nonrtric-plt-ranpm-datafilecollector
+ version: 1.0.0
--- /dev/null
+---
+distribution_type: container
+container_release_tag: 1.0.0
+container_pull_registry: nexus3.o-ran-sc.org:10004
+container_push_registry: nexus3.o-ran-sc.org:10002
+project: nonrtric
+ref: fbccee5729fb23f3424046c1d122d29f0fec545a
+containers:
+ - name: nonrtric-plt-ranpm-pm-file-converter
+ version: 1.0.0
--- /dev/null
+## License
+
+Copyright (C) 2019 Nordix Foundation.
+Licensed under the Apache License, Version 2.0 (the "License")
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+For more information about license please see the [LICENSE](LICENSE.txt) file for details.
\ No newline at end of file
- **Stop DFC**: http://<container_address>:8100/**stopDatafile** or https://<container_address>:8433/**stopDatafile**
+The latest documentation can be found here:
+https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-ranpm/en/latest/datafilecollector/index.html
+
+
+The comonent is part of the RAM PM use case, which is described here:
+https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-ranpm/en/latest/overview.html#overview
+
## License
./overview.rst
./developer-guide.rst
./api-docs.rst
+ ./release-notes.rst
+
--- /dev/null
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2023 Nordix
+
+=============
+Release-Notes
+=============
+
+
+This document provides the release notes for the release of the Non-RT RIC - RAN PM - PM Data File Collector.
+
+Version history Non-RT RIC - RAN PM - PM Data File Collector
+============================================================
+
++------------+----------+------------------+--------------------+
+| **Date** | **Ver.** | **Author** | **Comment** |
+| | | | |
++------------+----------+------------------+--------------------+
+| 2023-06-16 | | John Keeney | H Release |
+| | | | |
++------------+----------+------------------+--------------------+
+
+
+Release Data
+============
+
+H Release
+---------
++-----------------------------+---------------------------------------------------+
+| **Project** | Non-RT RIC RAN PM |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Repo/commit-ID** | nonrtric/plt/ranpm/ |
+| | fbccee5729fb23f3424046c1d122d29f0fec545a |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Release designation** | H |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Release date** | 2023-06-16 |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Purpose of the delivery** | First release (H) of RAN PM Usecase/Functions |
+| | nonrtric-plt-ranpm-datafilecollector:1.0.0 |
+| | |
++-----------------------------+---------------------------------------------------+
</parent>
<groupId>org.o-ran-sc.nonrtric.plt.ranpm</groupId>
<artifactId>datafile-app-server</artifactId>
- <version>1.0.0-SNAPSHOT</version>
+ <version>1.1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<java.version>17</java.version>
}
String payloadStr = new String(decoder.decode(chunks[1]));
- JwtTokenBody token = gson.fromJson(payloadStr, JwtTokenBody.class);
+ JwtTokenBody token = gson.fromJson(payloadStr, JwtTokenBody.class);
return new OAuthBearerTokenJwt(token, tokenRaw);
}
"app.auth-token-file=src/test/resources/jwtToken.b64", //
"app.kafka.use-oath-token=false"})
@SuppressWarnings("squid:S3577") // Not containing any tests since it is a mock.
-class MockDatafile {
+class Integration {
private static final int LAST_EPOCH_MICROSEC = 151983;
private static final String SOURCE_NAME = "5GRAN_DU";
private static final String CHANGE_IDENTIFIER = "PM_MEAS_FILES";
private static final String CHANGE_TYPE = "FileReady";
- private static final Logger logger = LoggerFactory.getLogger(MockDatafile.class);
+ private static final Logger logger = LoggerFactory.getLogger(Integration.class);
private static Gson gson = new GsonBuilder() //
.disableHtmlEscaping() //
.create(); //
private static class KafkaReceiver {
public final String topic;
private DataFromTopic receivedKafkaOutput;
- private final Logger logger = LoggerFactory.getLogger(MockDatafile.class);
+ private final Logger logger = LoggerFactory.getLogger(Integration.class);
int count = 0;
********
The OSC Non-RT RIC provides a high performing, fully scalable end-to-end solution for handling
-PM Mesurements. A PM report (containing aggregated PM measurements over a time interval) is
+PM Measurements. A PM report (containing aggregated PM measurements over a time interval) is
an XML file. The format is defined by 3GPP (TS 32.432 and 3GPP TS 32.435).
The files are collected from the RAN and stored. An rApp can subscribe for chosen measurement types from
measured resources in the network.
* The PM File Converter converts these to a Json format. The structure and the contents
is the same as the XML format.
* The PM Producer handles filtering and distribution of PM data to subscribers. These subscribers can be rApps.
-* The Influx Logger stores selected PM mesurements into a time series database.
+* The Influx Logger stores selected PM measurements into a time series database.
* HTTPS-SERVER is for testing and implements functionality to simulate file transfer from RAN nodes.
The third party products used are:
* Minio object storage, for storing of files.
* Kafka for transferring of data (not the full PM reports, though)
-* Influx time series database for storing of selected PM mesurements over time.
+* Influx time series database for storing of selected PM measurements over time.
.. image:: ./Components.png
:width: 500pt
PM Data Subscription
********************
PM measurement data is subscribed by creating an Information Job using the Information Coordination Service (ICS).
-This a subscription broker and is part of what is called Data Managament an Exposure (DME) in O-RAN.
+This a subscription broker and is part of what is called Data Management an Exposure (DME) in O-RAN.
The ICS makes sure that all data producers gets its data subscriptions (jobs).
In the picture below, an rApp and the Influx Logger are consumers of PM data.
:width: 500pt
The PM Data Influx logger will create a PM data subscription based on a configuration file. An rApp can create
-PM data subscpition. The PM Data producer will deliver received PM measurements according to the subscriptions.
+PM data subscription. The PM Data producer will deliver received PM measurements according to the subscriptions.
The PM Data file collector will fetch all PM measurement files. The PM Data Converted will convert all fetched xml files
to json. So these does not use any subscriptions.
**************************************
An rApp uses the ICS API to create and manage the subscription of PM Measurements.
-The API documentation is avaiable in `Non-RT RIC - Information Coordinator Service (Documentation site) <https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-informationcoordinatorservice/en/latest/>`_.
+The API documentation is available in `Non-RT RIC - Information Coordinator Service (Doc site) <https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-informationcoordinatorservice/en/latest/>`_.
-The schema for the PM Mesaurement information jobs is defined in :doc:`Non-RT RIC - RAN PM - PM Producer (Documentation site) <pmproducer:index>`.
+The schema for the PM Measurement information jobs is defined in :doc:`Non-RT RIC - RAN PM - PM Producer (Documentation <pmproducer:index>`.
This schema defines parameters used in the subscription (info job) and defines which measurements to subscribe for and on which
kafka topic the information shall be delivered to.
An application retrieving logged PM data from the Influx database needs to consider how the data is stored (the schema). That is
-defined in :doc:`Non-RT RIC - RAN PM - Influx Logger (Documentation site) <influxlogger:index>`.
+defined in :doc:`Non-RT RIC - RAN PM - Influx Logger (Documentation) <influxlogger:index>`.
.. image:: ./DesignTimeDependencies.png
:width: 500pt
This document provides the release notes for the release of the Non-RT RIC RAN PM Usecase/Functions.
+More detailed Release Notes for individual functions can be found in:
+* :doc:`Non-RT RIC - RAN PM - PM Data File Collector (Doc site) <datafilecollector:index>`.
+* :doc:`Non-RT RIC - RAN PM - PM File Converter (Doc site) <pm-file-converter:index>`.
+* :doc:`Non-RT RIC - RAN PM - PM Producer (Doc site) <pmproducer:index>`.
+* :doc:`Non-RT RIC - RAN PM - Influx Logger (Doc site) <influxlogger:index>`.
Version history RAN PM Usecase/Functions
========================================
| **Date** | **Ver.** | **Author** | **Comment** |
| | | | |
+------------+----------+------------------+--------------------+
-| 2023-04-21 | 0.0.0 | John Keeney | Started Docs. |
-| | | | Remove this row |
+| 2023-06-16 | | John Keeney | H Release |
+| | | | |
+------------+----------+------------------+--------------------+
Release Data
============
-H
--
+H Release
+---------
+-----------------------------+---------------------------------------------------+
| **Project** | Non-RT RIC RAN PM |
| | |
+-----------------------------+---------------------------------------------------+
-| **Repo/commit-ID** | |
+| **Repo/commit-ID** | nonrtric/plt/ranpm/ |
+| | fbccee5729fb23f3424046c1d122d29f0fec545a |
| | |
+-----------------------------+---------------------------------------------------+
| **Release designation** | H |
| | |
+-----------------------------+---------------------------------------------------+
-| **Release date** | 2023-06-xx |
+| **Release date** | 2023-06-16 |
| | |
+-----------------------------+---------------------------------------------------+
-| **Purpose of the delivery** | First release of RAN PM Usecase/Functions |
+| **Purpose of the delivery** | First release (H) of RAN PM Usecase/Functions |
+| | nonrtric-plt-ranpm-datafilecollector:1.0.0 |
+| | nonrtric-plt-pmlog:1.0.0 |
+| | nonrtric-plt-ranpm-pm-file-converter:1.0.0 |
+| | nonrtric-plt-pmproducer:1.0.0 |
| | |
+-----------------------------+---------------------------------------------------+
-TODO
\ No newline at end of file
+# O-RAN-SC Non-RealTime RIC Influx Logger
+
+
+This product receives PM data and stores it in an influx datbase.
+
+The component is a springboot service and is configured as any springboot service through the file `config/application.yaml`. The component log can be retrieved and logging can be controled by means of REST call. See the API documentation (api/api.yaml).
+
+The latest documentation can be found here:
+https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-ranpm/en/latest/influxlogger/index.html
+
+
+The comonent is part of the RAM PM use case, which is described here:
+https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-ranpm/en/latest/overview.html#overview
+
+## License
+
+Copyright (C) 2023 Nordix Foundation. Licensed under the Apache License, Version 2.0 (the "License") you may not use this file except in compliance with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+For more information about license please see the [LICENSE](LICENSE.txt) file for details.
./overview.rst
./developer-guide.rst
./api-docs.rst
+ ./release-notes.rst
--- /dev/null
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2023 Nordix
+
+=============
+Release-Notes
+=============
+
+
+This document provides the release notes for the release of the Non-RT RIC - RAN PM - Influx Logger (pmlog).
+
+Version history Non-RT RIC - RAN PM - Influx Logger
+===================================================
+
++------------+----------+------------------+--------------------+
+| **Date** | **Ver.** | **Author** | **Comment** |
+| | | | |
++------------+----------+------------------+--------------------+
+| 2023-06-16 | | John Keeney | H Release |
+| | | | |
++------------+----------+------------------+--------------------+
+
+
+Release Data
+============
+
+H Release
+---------
++-----------------------------+---------------------------------------------------+
+| **Project** | Non-RT RIC RAN PM |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Repo/commit-ID** | nonrtric/plt/ranpm/ |
+| | fbccee5729fb23f3424046c1d122d29f0fec545a |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Release designation** | H |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Release date** | 2023-06-16 |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Purpose of the delivery** | First release (H) of RAN PM Usecase/Functions |
+| | nonrtric-plt-pmlog:1.0.0 |
+| | |
++-----------------------------+---------------------------------------------------+
</parent>
<groupId>org.o-ran-sc.nonrtric.plt</groupId>
<artifactId>pmlog</artifactId>
- <version>1.0.0-SNAPSHOT</version>
+ <version>1.1.0-SNAPSHOT</version>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
final String PM_REPORT_FILE_BIG = "./src/test/resources/A20000626.2315+0200-2330+0200_HTTPS-6-73.json";
final String PM_REPORT_FILE = "./src/test/resources/pm_report.json";
+ /**
+ * Generate a PM report
+ *
+ * @param sequenceValue used for generating counter values
+ * @param noOfObjects used for generating counter values
+ * @return
+ */
String pmReport(int sequenceValue, int noOfObjects) {
try {
String str = Files.readString(Path.of(PM_REPORT_FILE), Charset.defaultCharset());
}
+ // Store PM data for 24 hours in influx. The the data contains genenerated
+ // counter values
+ // that varies over time.
@Test
void testStoreReportsInflux() throws Exception {
final int NO_OF_OBJECTS = 24 * 4;
## PM Data Producer
+The latest documentation can be found here:
+https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-ranpm/en/latest/pm-file-converter/index.html
+
+
+The comonent is part of the RAM PM use case, which is described here:
+https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-ranpm/en/latest/overview.html#overview
+
### Manual build, tag and push to image repo
Build for docker or local kubernetes\
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
-limitations under the License.
\ No newline at end of file
+limitations under the License.
# By default this file is in the docker build directory,
# but the location can configured in the JJB template.
---
-tag: 1.0.0
\ No newline at end of file
+tag: 1.1.0
\ No newline at end of file
:caption: Contents:
./overview.rst
+ ./release-notes.rst
The XML file is read from the storage, converted to Json, gzipped and stored.
-A Json object indicating that a new Json PM Mesurement report is available is sent on
+A Json object indicating that a new Json PM Measurement report is available is sent on
a Kafka topic to be picked up by other components for further processing,
.. image:: ./Architecture.png
Output PM Measurement
*********************
-The Json format of the PM mesaurememt follows the same structure as the input XML format (defined by 3GPP).
+The Json format of the PM measurement follows the same structure as the input XML format (defined by 3GPP).
Here follows an example:
************************
Below follows an example of an input File Ready Message. The
-message is sent by the Data File Collector. The only elemts used by this component are sourceName, name and
+message is sent by the Data File Collector. The only elements used by this component are sourceName, name and
objectStoreBucket.
.. code-block:: javascript
--- /dev/null
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2023 Nordix
+
+=============
+Release-Notes
+=============
+
+
+This document provides the release notes for the release of the Non-RT RIC - RAN PM - PM File Converter.
+
+Version history Non-RT RIC - RAN PM - PM File Converter
+=======================================================
+
++------------+----------+------------------+--------------------+
+| **Date** | **Ver.** | **Author** | **Comment** |
+| | | | |
++------------+----------+------------------+--------------------+
+| 2023-06-16 | | John Keeney | H Release |
+| | | | |
++------------+----------+------------------+--------------------+
+
+
+Release Data
+============
+
+H Release
+---------
++-----------------------------+---------------------------------------------------+
+| **Project** | Non-RT RIC RAN PM |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Repo/commit-ID** | nonrtric/plt/ranpm/ |
+| | fbccee5729fb23f3424046c1d122d29f0fec545a |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Release designation** | H |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Release date** | 2023-06-16 |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Purpose of the delivery** | First release (H) of RAN PM Usecase/Functions |
+| | nonrtric-plt-ranpm-pm-file-converter:1.0.0 |
+| | |
++-----------------------------+---------------------------------------------------+
# O-RAN-SC Non-RealTime RIC PM Producer
-
This product is a PM data information producer (as defined by the Information Coordinator Service (ICS)). Its main tasks is to distribute PM data to PM data consumers (using Kafka topics).
This service will receive File Ready Events or PM Data from the Kafka streaming platform and will filter the information and distribute it further to the data consumers (information job owners).
}
```
+The latest documentation can be found here:
+https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-ranpm/en/latest/pmproducer/index.html
+
+
+The comonent is part of the RAM PM use case, which is described here:
+https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-ranpm/en/latest/overview.html#overview
+
## License
./overview.rst
./developer-guide.rst
./api-docs.rst
+ ./release-notes.rst
Configuration
*************
-The component is configured by a configuration file and by the normal spring boot configuration file (apoplication.yaml).
+The component is configured by a configuration file and by the normal spring boot configuration file (application.yaml).
==================
Configuration file
--- /dev/null
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2023 Nordix
+
+=============
+Release-Notes
+=============
+
+
+This document provides the release notes for the release of the Non-RT RIC - RAN PM - PM Producer.
+
+Version history Non-RT RIC - RAN PM - PM Producer
+=================================================
+
++------------+----------+------------------+--------------------+
+| **Date** | **Ver.** | **Author** | **Comment** |
+| | | | |
++------------+----------+------------------+--------------------+
+| 2023-06-16 | | John Keeney | H Release |
+| | | | |
++------------+----------+------------------+--------------------+
+
+
+Release Data
+============
+
+H Release
+---------
++-----------------------------+---------------------------------------------------+
+| **Project** | Non-RT RIC RAN PM |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Repo/commit-ID** | nonrtric/plt/ranpm/ |
+| | fbccee5729fb23f3424046c1d122d29f0fec545a |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Release designation** | H |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Release date** | 2023-06-16 |
+| | |
++-----------------------------+---------------------------------------------------+
+| **Purpose of the delivery** | First release (H) of RAN PM Usecase/Functions |
+| | nonrtric-plt-pmproducer:1.0.0 |
+| | |
++-----------------------------+---------------------------------------------------+
</parent>
<groupId>org.o-ran-sc.nonrtric.plt</groupId>
<artifactId>pmproducer</artifactId>
- <version>1.0.0-SNAPSHOT</version>
+ <version>1.1.0-SNAPSHOT</version>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
}
String payloadStr = new String(decoder.decode(chunks[1]));
- JwtTokenBody token = gson.fromJson(payloadStr, JwtTokenBody.class);
+ JwtTokenBody token = gson.fromJson(payloadStr, JwtTokenBody.class);
return new OAuthBearerTokenJwt(token, tokenRaw);
}
"app.configuration-filepath=./src/test/resources/test_application_configuration.json", //
"app.ics-base-url=https://localhost:8434" //
})
+/**
+ * Tests that the interwork with ICS works.
+ * ICS must be running.
+ */
class IntegrationWithIcs {
private static final String JOB_ID = "JOB_ID";
"app.s3.bucket=pmproducertest", //
"app.auth-token-file=src/test/resources/jwtToken.b64", //
"app.kafka.use-oath-token=false"}) //
+/**
+ * Tests interwork with Kafka and Minio
+ * Requires that Kafka and ICS is started.
+ */
class IntegrationWithKafka {
final static String PM_TYPE_ID = "PmDataOverKafka";
@Test
void testHistoricalData() throws Exception {
- // test
+ // test that it works to get already fetched data
final String JOB_ID = "testHistoricalData";
DataStore fileStore = dataStore();