From: lapentafd Date: Fri, 28 Jun 2024 08:59:33 +0000 (+0100) Subject: ICS README style check X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=24fa97314da190f97b08dcf46127fe4579f89398;p=nonrtric%2Fplt%2Finformationcoordinatorservice.git ICS README style check Issue-ID: NONRTRIC-966 Change-Id: Ifad4197addb0bc036cbcb47b93e9105499218eca Signed-off-by: lapentafd --- diff --git a/README.md b/README.md new file mode 100644 index 0000000..e3bfa75 --- /dev/null +++ b/README.md @@ -0,0 +1,63 @@ +# Data Management and Exposure API: Information Coordination Service (ICS) + +## Overview + +The Information Coordination Service (ICS) is a generic service designed to manage data subscriptions in a multi-vendor environment. It facilitates decoupling between data consumers and producers, allowing seamless interaction without consumers needing knowledge of specific producers. + +## Key Concepts + +- **Data Consumer**: Subscribes to data by creating an "Information Job". Examples include R-Apps using the R1 API or NearRT-RIC using the A1-EI API. + +- **Information Type**: Defines the interface between consumers and producers, specifying parameters for subscription creation via a JSON schema. Parameters include data delivery details, filtering criteria, periodicity, and aggregation information. + +- **Data Producer**: Generates data and receives notifications about relevant information jobs. Filtering ideally occurs at the producer's source. + +## Persistence and Security + +Information Jobs and types are persistently stored using Amazon S3 or a local file system. Fine-grained access control supports secure data consumption by enforcing access checks during job modifications or reads. External authorization services like Open Policy Agent (OPA) can be integrated for access token-based authorization. + +## Requirements + +- Support for multiple data producers, potentially from different vendors, producing the same data type. + +- Flexible installation, upgrade, scaling, and restarting of software components independently. + +- Decoupling of data producers from consumers, ensuring consumer operations remain unaffected by producer changes. + +- Ability for consumers to initiate subscriptions independently of producer status changes (e.g., upgrades, restarts). + +## Principles + +- ICS manages data subscriptions but doesn't handle data delivery protocols, enabling flexibility in implementation. + +- Data filtering is managed by producers, allowing unrestricted methods for data selection. + +- Consumers create subscriptions regardless of producer status, ensuring continuous service without consumer intervention. + +## Implementation Details + +- **Language**: Java +- **Framework**: Spring Boot + +## Configuration + +Configuration details can be found in the standard `application.yaml` file. + +## Documentation + +For detailed API documentation and further information, refer to the NONRTRIC documentation at [NONRTRIC Documentation](https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric/en/latest/overview.html#information-coordination-service). + +## License + +Copyright (C) 2024 Nordix Foundation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/config/README b/config/README.md similarity index 77% rename from config/README rename to config/README.md index cfde02e..36bcb4e 100644 --- a/config/README +++ b/config/README.md @@ -1,30 +1,35 @@ -The keystore.jks and truststore.jks files are created by using the following commands (note that this is an example): +# Keystore and Truststore Setup Guide -1) Create a CA certificate and a private key: +This guide provides step-by-step instructions for creating `keystore.jks` and `truststore.jks` files. Follow the commands carefully to ensure proper setup. +## 1. Create a CA certificate and a private key: + +```sh openssl genrsa -des3 -out CA-key.pem 2048 openssl req -new -key CA-key.pem -x509 -days 3600 -out CA-cert.pem - -2) Create a keystore with a private key entry that is signed by the CA: +``` +## 2. Create a keystore with a private key entry that is signed by the CA: Note: your name must be "localhost" - +```sh keytool -genkeypair -alias policy_agent -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 3650 -storepass policy_agent keytool -certreq -alias policy_agent -file request.csr -keystore keystore.jks -ext san=dns:your.domain.com -storepass policy_agent openssl x509 -req -days 3650 -in request.csr -CA CA-cert.pem -CAkey CA-key.pem -CAcreateserial -out ca_signed-cert.pem keytool -importcert -alias ca_cert -file CA-cert.pem -keystore keystore.jks -trustcacerts -storepass policy_agent keytool -importcert -alias policy_agent -file ca_signed-cert.pem -keystore keystore.jks -trustcacerts -storepass policy_agent +``` - -3) Create a trust store containing the CA cert (to trust all certs signed by the CA): - +## 3. Create a trust store containing the CA cert (to trust all certs signed by the CA): +```sh keytool -genkeypair -alias not_used -keyalg RSA -keysize 2048 -keystore truststore.jks -validity 3650 -storepass policy_agent keytool -importcert -alias ca_cert -file CA-cert.pem -keystore truststore.jks -trustcacerts -storepass policy_agent +``` - -4) Command for listing of the contents of jks files, examples: +## 4. Command for listing of the contents of jks files, examples: +```sh keytool -list -v -keystore keystore.jks -storepass policy_agent keytool -list -v -keystore truststore.jks -storepass policy_agent +``` ## License @@ -40,4 +45,3 @@ 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. -