From 01875c1b6ef69fb03b19a47268940a3d27ea8518 Mon Sep 17 00:00:00 2001 From: "Zhang Rong(Jon)" Date: Thu, 29 Dec 2022 17:53:29 +0800 Subject: [PATCH] Docs: update release notes installation guide of G release Signed-off-by: Zhang Rong(Jon) Change-Id: Idac1d1e94e2c7fb24814d091a0b80de911f0c316 (cherry picked from commit 4e703c00f2f1a64d921646de001e2dfde392bbdf) --- docs/conf.py | 1 + docs/installation-guide.rst | 535 ++++++++++++++++++++++++-------------------- docs/overview.rst | 49 ++-- docs/release-notes.rst | 97 ++++++-- 4 files changed, 389 insertions(+), 293 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 68338b2..2f37573 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,6 +17,7 @@ linkcheck_ignore = [ 'http://localhost.*', 'http://127.0.0.1.*', 'https://gerrit.o-ran-sc.org.*', + 'http://put_your_*', './oran-o2-api.html', # Generated file that doesn't exist at link check. './api-docs.html' ] diff --git a/docs/installation-guide.rst b/docs/installation-guide.rst index c64535e..d1b76d1 100644 --- a/docs/installation-guide.rst +++ b/docs/installation-guide.rst @@ -1,6 +1,6 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. SPDX-License-Identifier: CC-BY-4.0 -.. Copyright (C) 2021 Wind River Systems, Inc. +.. Copyright (C) 2021-2022 Wind River Systems, Inc. Installation Guide @@ -13,321 +13,362 @@ Installation Guide Abstract -------- -This document describes how to install INF O2 service over O-RAN INF platform. - -The audience of this document is assumed to have basic knowledge in kubernetes cli, helm chart cli. +This document describes how to install INF O2 service over the O-RAN INF +platform. +The audience of this document is assumed to have basic knowledge of +kubernetes CLI, and helm chart cli. Preface ------- -Before starting the installation and deployment of O-RAN O2 service, you should have already deployed O-RAN INF platform, and you need to download the helm charts or build from source as described in developer-guide. +In the context of hosting a RAN Application on INF, the O-RAN O2 +Application provides and exposes the IMS and DMS service APIs of the O2 +interface between the O-Cloud (INF) and the Service Management & +Orchestration (SMO), in the O-RAN Architecture. + +The O2 interfaces enable the management of the O-Cloud (INF) +infrastructure and the deployment life-cycle management of O-RAN +cloudified NFs that run on O-Cloud (INF). See `O-RAN O2 General Aspects +and Principles +2.0 `__, and +`INF O2 +documentation `__. + +The O-RAN O2 application is integrated into INF as a system application. +The O-RAN O2 application package is saved in INF during system +installation, but it is not applied by default. + +System administrators can follow the procedures below to install and +uninstall the O-RAN O2 application. + +INF O2 Service Install +====================== + +1. Prerequisites +---------------- + +Configure the internal Ceph storage for the O2 application persistent +storage, see INF Storage Configuration and Management: `Configure the +Internal Ceph Storage +Backend `__. + +Enable PVC support in ``oran-o2`` namespace, see INF Storage +Configuration and Management: `Enable ReadWriteOnce PVC Support in +Additional +Namespaces `__. + +2. Procedure +------------ + +You can install O-RAN O2 application on INF from the command line. + +1. Locate the O2 application tarball in + ``/usr/local/share/applications/helm``. + + For example: + + :: + + /usr/local/share/applications/helm/oran-o2-.tgz + +2. Download ``admin_openrc.sh`` from the INF admin dashboard. + + - Visit http://put_your_OAM_IP_here:8080/project/api_access/ + - Click the **Download OpenStack RC File”/”OpenStack RC File** + button + +3. Copy the file to the controller host. + +4. Source the platform environment. + + :: + + $ source ./admin_openrc.sh + ~(keystone_admin)]$ + +5. Upload the application. + + :: + + ~(keystone_admin)]$ system application-upload /usr/local/share/applications/helm/oran-o2-.tgz +6. Prepare the override ``yaml`` file. -INF O2 Service in E Release -=========================== + 1. Create a service account for SMO application. -1. Provision remote cli for kubernetes over INF platform --------------------------------------------------------- + Create a ServiceAccount which can be used to provide SMO + application with minimal access permission credentials. + :: -1.1 Setup Service Account over O-RAN INF platform -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + export SMO_SERVICEACCOUNT=smo1 -The following instruction must be done over INF platform controller host (controller-0) + cat < smo-serviceaccount.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: Role + metadata: + namespace: default + name: pod-reader + rules: + - apiGroups: [""] # "" indicates the core API group + resources: ["pods"] + verbs: ["get", "watch", "list"] + --- + apiVersion: v1 + kind: ServiceAccount + metadata: + name: ${SMO_SERVICEACCOUNT} + namespace: default + --- + apiVersion: rbac.authorization.k8s.io/v1 + kind: RoleBinding + metadata: + name: read-pods + namespace: default + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-reader + subjects: + - kind: ServiceAccount + name: ${SMO_SERVICEACCOUNT} + namespace: default + EOF -- Please see the O-RAN INF documentation to find out how to ssh to controller host of INF platform. + kubectl apply -f smo-serviceaccount.yaml -.. code:: shell + 2. Create a secret for service account and obtain an access token. - USER="admin-user" - NAMESPACE="kube-system" + Create a secret with the type service-account-token and pass the + ServiceAccount in the annotation section as shown below: - cat < admin-login.yaml - apiVersion: v1 - kind: ServiceAccount - metadata: - name: ${USER} - namespace: kube-system - --- - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRoleBinding - metadata: - name: ${USER} - roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-admin - subjects: - - kind: ServiceAccount - name: ${USER} - namespace: kube-system - EOF + :: - kubectl apply -f admin-login.yaml - TOKEN_DATA=$(kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${USER} | awk '{print $1}') | grep "token:" | awk '{print $2}') - echo $TOKEN_DATA + export SMO_SECRET=smo1-secret + cat < smo-secret.yaml + apiVersion: v1 + kind: Secret + metadata: + name: ${SMO_SECRET} + annotations: + kubernetes.io/service-account.name: ${SMO_SERVICEACCOUNT} + type: kubernetes.io/service-account-token + EOF -1.2 Setup remote cli over another linux host (ubuntu as example) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + kubectl apply -f smo-secret.yaml -The following instruction should be done outside of INF platform controller host + export SMO_TOKEN_DATA=$(kubectl get secrets $SMO_SECRET -o jsonpath='{.data.token}' | base64 -d -w 0) -.. code:: shell + 3. Create certificates for the O2 service. - sudo apt-get install -y apt-transport-https - echo "deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main" | \ - sudo tee -a /etc/apt/sources.list.d/kubernetes.list - gpg --keyserver keyserver.ubuntu.com --recv-keys 836F4BEB - gpg --export --armor 836F4BEB | sudo apt-key add - - sudo apt-get update - sudo apt-get install -y kubectl + Obtain an intermediate or Root CA-signed certificate and key from + a trusted intermediate or Root Certificate Authority (CA). Refer + to the documentation for the external Root CA that you are using + on how to create a public certificate and private key pairs signed + by an intermediate or Root CA for HTTPS. - source <(kubectl completion bash) # setup autocomplete in bash into the current shell, bash-completion package should be installed first. - echo "source <(kubectl completion bash)" >> ~/.bashrc # add autocomplete permanently to your bash shell. + For lab purposes, see INF Security: `Create Certificates Locally + using + openssl `__ + to create an Intermediate or test Root CA certificate and key, and + use it to locally sign test certificates. - curl -O https://get.helm.sh/helm-v3.5.3-linux-amd64.tar.gz - tar xvf helm-v3.5.3-linux-amd64.tar.gz - sudo cp linux-amd64/helm /usr/local/bin/ + The resulting files, from either an external CA or locally + generated for the lab with openssl, should be: - source <(helm completion bash) - echo "source <(helm completion bash)" >> ~/.bashrc + - Local CA certificate - ``my-root-ca-cert.pem`` + - Server certificate - ``my-server-cert.pem`` + - Server key - ``my-server-key.pem`` - OAM_IP= - NAMESPACE=oran-o2 - TOKEN_DATA= + .. - USER="admin-user" + **Note** If using a server certificate signed by a local CA + (i.e. lab scenario above), this local CA certificate + (e.g. my-root-ca-cert.pem from lab scenario above) must be + shared with the SMO application for the O2 server certificate + verification. - kubectl config set-cluster inf-cluster --server=https://${OAM_IP}:6443 --insecure-skip-tls-verify - kubectl config set-credentials ${USER} --token=$TOKEN_DATA - kubectl config set-context ${USER}@inf-cluster --cluster=inf-cluster --user ${USER} --namespace=${NAMESPACE} - kubectl config use-context ${USER}@inf-cluster + 4. Prepare the O2 service application configuration file. - kubectl get pods -A + As per the Cloudification and Orchestration use case defined in + O-RAN Working Group 6, the following information should be + generated by SMO: + - O-Cloud Gload ID - ``OCLOUD_GLOBAL_ID`` + - SMO Register URL - ``SMO_REGISTER_URL`` -2. Deploy INF O2 service ------------------------- + See `O-RAN Cloudification and Orchestration Use Cases and + Requirements for O-RAN Virtualized + RAN `__. -2.1 Retrieve Helm chart for deploying of INF O2 service -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + :: -.. code:: shell + API_HOST_EXTERNAL_FLOATING=$(echo ${OS_AUTH_URL} | awk -F / '{print $3}' | cut -d: -f1) - git clone -b e-release "https://gerrit.o-ran-sc.org/r/pti/o2" + cat < app.conf + [DEFAULT] + ocloud_global_id = ${OCLOUD_GLOBAL_ID} + smo_register_url = ${SMO_REGISTER_URL} + smo_token_data = ${SMO_TOKEN_DATA} + [OCLOUD] + OS_AUTH_URL = ${OS_AUTH_URL} + OS_USERNAME = ${OS_USERNAME} + OS_PASSWORD = ${OS_PASSWORD} + API_HOST_EXTERNAL_FLOATING = ${API_HOST_EXTERNAL_FLOATING} -2.2 Prepare override yaml -~~~~~~~~~~~~~~~~~~~~~~~~~ + [API] -.. code:: shell - - export NAMESPACE=oran-o2 - kubectl create ns ${NAMESPACE} - - # default kube config location is ~/.kube/config - cp ~/.kube/config o2/charts/resources/scripts/init/k8s_kube.conf - - export OS_AUTH_URL= - export OS_USERNAME= - export OS_PASSWORD= - - # If the external OAM IP same as OS_AUTH_URL's IP address, you can use the below command to set the environment - # export API_HOST_EXTERNAL_FLOATING=$(echo ${OS_AUTH_URL} | sed -e s,`echo ${OS_AUTH_URL} | grep :// | sed -e's,^\(.*//\).*,\1,g'`,,g | cut -d/ -f1 | sed -e 's,:.*,,g') - export API_HOST_EXTERNAL_FLOATING= - - # please specify the smo service account yaml file - export SMO_SERVICEACCOUNT= - # service account and binding for smo yaml file - - cat <smo-serviceaccount.yaml - apiVersion: rbac.authorization.k8s.io/v1 - kind: Role - metadata: - namespace: default - name: pod-reader - rules: - - apiGroups: [""] # "" indicates the core API group - resources: ["pods"] - verbs: ["get", "watch", "list"] - --- - apiVersion: v1 - kind: ServiceAccount - metadata: - name: ${SMO_SERVICEACCOUNT} - namespace: default - --- - apiVersion: rbac.authorization.k8s.io/v1 - kind: RoleBinding - metadata: - name: read-pods - namespace: default - roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: pod-reader - subjects: - - kind: ServiceAccount - name: ${SMO_SERVICEACCOUNT} - namespace: default - - EOF - - kubectl apply -f smo-serviceaccount.yaml - - #export the smo account token data - export SMO_SECRET=$(kubectl -n default get serviceaccounts $SMO_SERVICEACCOUNT -o jsonpath='{.secrets[0].name}') - export SMO_TOKEN_DATA=$(kubectl -n default get secrets $SMO_SECRET -o jsonpath='{.data.token}') - - #prepare the application config file - cat <app.conf - [DEFAULT] - - ocloud_global_id = 4e24b97c-8c49-4c4f-b53e-3de5235a4e37 - - smo_register_url = http://127.0.0.1:8090/register - smo_token_data = ${SMO_TOKEN_DATA} + [WATCHER] - [OCLOUD] - OS_AUTH_URL: ${OS_AUTH_URL} - OS_USERNAME: ${OS_USERNAME} - OS_PASSWORD: ${OS_PASSWORD} - API_HOST_EXTERNAL_FLOATING: ${API_HOST_EXTERNAL_FLOATING} + [PUBSUB] + EOF - [API] + 5. Retrieve the CA certificate from your SMO vendor. - [WATCHER] + If the SMO application provides service via HTTPS, and the server + certificate is self-signed, the CA certficate should be retrieved + from the SMO. - [PUBSUB] + This procedure assumes that the name of the certificate is + ``smo-ca.pem`` - EOF + 6. Populate the override yaml file. - #prepare the ssl cert files or generate with below command. + Refer to the previous step for the required override values. - PARENT="imsserver" - openssl req \ - -x509 \ - -newkey rsa:4096 \ - -sha256 \ - -days 365 \ - -nodes \ - -keyout $PARENT.key \ - -out $PARENT.crt \ - -subj "/CN=${PARENT}" \ - -extensions v3_ca \ - -extensions v3_req \ - -config <( \ - echo '[req]'; \ - echo 'default_bits= 4096'; \ - echo 'distinguished_name=req'; \ - echo 'x509_extension = v3_ca'; \ - echo 'req_extensions = v3_req'; \ - echo '[v3_req]'; \ - echo 'basicConstraints = CA:FALSE'; \ - echo 'keyUsage = nonRepudiation, digitalSignature, keyEncipherment'; \ - echo 'subjectAltName = @alt_names'; \ - echo '[ alt_names ]'; \ - echo "DNS.1 = www.${PARENT}"; \ - echo "DNS.2 = ${PARENT}"; \ - echo '[ v3_ca ]'; \ - echo 'subjectKeyIdentifier=hash'; \ - echo 'authorityKeyIdentifier=keyid:always,issuer'; \ - echo 'basicConstraints = critical, CA:TRUE, pathlen:0'; \ - echo 'keyUsage = critical, cRLSign, keyCertSign'; \ - echo 'extendedKeyUsage = serverAuth, clientAuth') - - - applicationconfig=`base64 app.conf -w 0` - servercrt=`base64 imsserver.crt -w 0` - serverkey=`base64 imsserver.key -w 0` - smocacrt=`base64 smoca.crt -w 0` - - echo $applicationconfig - echo $servercrt - echo $serverkey - echo $smocacrt - - - cat <o2service-override.yaml - imagePullSecrets: - - default-registry-key + :: - o2ims: - serviceaccountname: admin-oran-o2 - images: - tags: - o2service: nexus3.o-ran-sc.org:10004/o-ran-sc/pti-o2imsdms:2.0.0 - postgres: docker.io/library/postgres:9.6 - redis: docker.io/library/redis:alpine - pullPolicy: IfNotPresent - logginglevel: "DEBUG" + APPLICATION_CONFIG=$(base64 app.conf -w 0) + SERVER_CERT=$(base64 my-server-cert.pem -w 0) + SERVER_KEY=$(base64 my-server-key.pem -w 0) + SMO_CA_CERT=$(base64 smo-ca.pem -w 0) - applicationconfig: ${applicationconfig} - servercrt: ${servercrt} - serverkey: ${serverkey} - smocacrt: ${smocacrt} + cat < o2service-override.yaml - EOF + applicationconfig: ${APPLICATION_CONFIG} + servercrt: ${SERVER_CERT} + serverkey: ${SERVER_KEY} + smocacrt: ${SMO_CA_CERT} - cat o2service-override.yaml + EOF + To deploy other versions of an image required for a quick + solution, to have early access to the features (eg. + oranscinf/pti-o2imsdms:2.0.0), and to authenticate images that are + hosted by a private registry, follow the steps below: -2.3 Deploy by helm cli -~~~~~~~~~~~~~~~~~~~~~~ + 1. Create a docker-registry secret in ``oran-o2`` namespace. -.. code:: shell + :: - helm install o2service o2/charts -f o2service-override.yaml - helm list |grep o2service - kubectl -n ${NAMESPACE} get pods |grep o2api - kubectl -n ${NAMESPACE} get services |grep o2api + export O2SERVICE_IMAGE_REG= + kubectl create secret docker-registry private-registry-key \ + --docker-server=${O2SERVICE_IMAGE_REG} --docker-username=${USERNAME} \ + --docker-password=${PASSWORD} -n oran-o2 -2.4 Verify INF O2 service -~~~~~~~~~~~~~~~~~~~~~~~~~ + 2. Refer to the ``imagePullSecrets`` in override file. -.. code:: shell + :: - curl -k http(s)://:30205/o2ims_infrastructureInventory/v1/ + cat < o2service-override.yaml + imagePullSecrets: + - private-registry-key + o2ims: + serviceaccountname: admin-oran-o2 + images: + tags: + o2service: ${O2SERVICE_IMAGE_REG}/docker.io/oranscinf/pti-o2imsdms:2.0.0 + postgres: ${O2SERVICE_IMAGE_REG}/docker.io/library/postgres:9.6 + redis: ${O2SERVICE_IMAGE_REG}/docker.io/library/redis:alpine + pullPolicy: IfNotPresent + logginglevel: "DEBUG" -2.5 INF O2 Service API Swagger -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + applicationconfig: ${APPLICATION_CONFIG} + servercrt: ${SERVER_CERT} + serverkey: ${SERVER_KEY} + smocacrt: ${SMO_CA_CERT} -- Swagger UI can be found with URL: http(s)://:30205 + EOF +7. Update the overrides for the oran-o2 application. -3. Register INF O2 Service to SMO ---------------------------------- + :: -- assumed you have setup SMO O2 endpoint for registration -- INF O2 service will post the INF platform registration data to that SMO O2 endpoint + ~(keystone_admin)]$ system helm-override-update oran-o2 oran-o2 oran-o2 --values o2service-override.yaml + # Check the overrides + ~(keystone_admin)]$ system helm-override-show oran-o2 oran-o2 oran-o2 -.. code:: shell +8. Run the **system application-apply** command to apply the updates. - curl -X 'GET' \ - 'http(s)://:30205/provision/v1/smo-endpoint' \ - -H 'accept: application/json' + :: - curl -k -X 'POST' \ - 'http(s)://:30205/provision/v1/smo-endpoint' \ - -H 'accept: application/json' \ - -H 'Content-Type: application/json' \ - -d '{"endpoint": ""}' + ~(keystone_admin)]$ system application-apply oran-o2 - # Confirm SMO endpoint provision status - curl -X 'GET' \ - 'http(s)://:30205/provision/v1/smo-endpoint' \ - -H 'accept: application/json' +9. Monitor the status using the command below. + :: -References + ~(keystone_admin)]$ watch -n 5 system application-list + + OR + + :: + + ~(keystone_admin)]$ watch kubectl get all -n oran-o2 + +3. Results ---------- -- `O-RAN-SC INF`_ +You have launched services in the above namespace. + +4. Postrequisites +----------------- + +You will need to integrate INF with an SMO application that performs +management of O-Cloud infrastructure and the deployment life cycle +management of O-RAN cloudified NFs. See the following API reference for +details: + +- `API O-RAN O2 + interface `__ + +INF O2 Service Uninstall +======================== + +.. _procedure-1: + +1. Procedure +------------ + +You can uninstall the O-RAN O2 application on INF from the command line. + +1. Uninstall the application. + + Remove O2 application related resources. + + :: + + ~(keystone_admin)]$ system application-remove oran-o2 + +2. Delete the application. + + Remove the uninstalled O2 application’s definition, including the + manifest and helm charts and helm chart overrides, from the system. + + :: + + ~(keystone_admin)]$ system application-delete oran-o2 + +.. _results-1: + +2. Results +---------- -.. _`O-RAN-SC INF`: https://docs.o-ran-sc.org/en/latest/projects.html#infrastructure-inf +You have uninstalled the O2 application from the system. diff --git a/docs/overview.rst b/docs/overview.rst index 00b9ea8..4ab4f1d 100644 --- a/docs/overview.rst +++ b/docs/overview.rst @@ -1,48 +1,45 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. SPDX-License-Identifier: CC-BY-4.0 -.. Copyright (C) 2021 Wind River Systems, Inc. +.. Copyright (C) 2021-2022 Wind River Systems, Inc. INF O2 Service Overview ======================= -This project implements a reference O-RAN O2 IMS and DMS service to expose the INF platform to SMO via the O-RAN O2 interface. +This project implements a reference O-RAN O2 IMS and DMS service to +expose the INF platform to SMO via the O-RAN O2 interface. -In the E release, the following APIs are supported by the INF O2 service: +In the G release, the following APIs are supported by the INF O2 +service: 1. INF O2 service Infrastructure Management Service (IMS) - - INF O2 service provisioning API + - INF O2 service Inventory API - - Provision SMO O2 endpoint into INF O2 service + - O2 service discovers following resources of INF platform to + answer queries from SMO - - O2 service discovers INF platform and registers INF platform to SMO via the provisioned SMO O2 endpoint + - INF platform information + - Resource Pool of the INF platform + - Resources of the Resource Pool, including pserver, cpu, memory, interface, accelerator + - Resource Types associated with Resources - - INF O2 service Inventory API + - INF platform Subscription and Notification - - O2 service discovers following resources of INF platform to answer queries from SMO + - INF O2 service exposes Subscription API to enable SMO + subscribes to Notification of changes of resources - - INF platform information + - INF platform Deployment Management Service profile queries API - - Resource Pool of the INF platform + - INF O2 service enables lookup of INF Native Kubernetes API information as part of inventory - - Resources of the Resource Pool, including pserver, cpu, memory, port, interface + - INF O2 service Monitoring API - - Resource Types associated with Resources + - O2 service discovers alarms of INF platform to answer queries from SMO - - INF platform Subscription and Notification + - INF alarm event record information - - INF O2 service exposes Subscription API to enable SMO subscribes to Notification of changes of resources + - INF alarm Subscription and Notification - - INF platform Deployment Management Service Endpoint discovery API + - INF O2 service exposes alarm Subscription API to enable SMO + subscribes to Notification of changes of alarms - - INF O2 service enables lookup of INF O2 DMS endpoints via DeploymentManagementService resource as part of inventory - -2. INF O2 service Deployment Management Service (DMS) - - - INF O2 service discovers kubernetes clusters hosted by INF platform, exposes them as Deployment Management Services via DMS endpoints - - - The exposed DMS endpoint supports Lifecycle Management of NfDeployment which represents CNF described in helm chart, the API supports APIs below: - - - Management of NfDeploymentDescriptor - - - Management of NfDeployment diff --git a/docs/release-notes.rst b/docs/release-notes.rst index 0f32172..4dcd037 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -1,39 +1,96 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. SPDX-License-Identifier: CC-BY-4.0 -.. Copyright (C) 2021 Wind River Systems, Inc. +.. Copyright (C) 2021-2022 Wind River Systems, Inc. Release-notes ============= -This document provides the release notes for 1.0.0 of INF O2 service. +This document provides the release notes for 2.0.1 of INF O2 service. .. contents:: :depth: 3 :local: -Version history +Version History --------------- -+--------------------+--------------------+--------------------+--------------------+ -| **Date** | **Ver.** | **Author** | **Comment** | -| | | | | -+--------------------+--------------------+--------------------+--------------------+ -| 2021-12-15 | 1.0.0 | Bin Yang | E Release | -| | | | | -+--------------------+--------------------+--------------------+--------------------+ ++------------+----------+----------------------------------------------+-------------+ +| **Date** | **Ver.** | **Author** | **Comment** | ++------------+----------+----------------------------------------------+-------------+ +| 2022-12-15 | 2.0.1 | Bin Yang, Jon Zhang, Jackie Huang, David Liu | G Release | ++------------+----------+----------------------------------------------+-------------+ +| 2022-06-15 | 1.0.1 | Bin Yang, Jon Zhang | F Release | ++------------+----------+----------------------------------------------+-------------+ +| 2021-12-15 | 1.0.0 | Bin Yang, Jon Zhang | E Release | ++------------+----------+----------------------------------------------+-------------+ + +Version 2.0.1, 2022-12-15 +------------------------- + +- Upgrade Inventory API, and add Monitoring API + + - Support HTTPS/TLS for API endpoint + - Support authentication with token of API + - Add "api_version" query in base API + - Add "O2IMS_InfrastructureMonitoring" API part + - Support Attribute-based selectors, and API query filter parameters + following the specification + - Updating error handling of all the API queries + +- Update the Subscription and Notification part + + - Notification SMO and register O-Cloud when the application starts + with SMO configuration + - Support subscription inventory change or alarm notification with + the filter parameter + +- Specification compliance + + - Compliance to "O-RAN.WG6.O2IMS-INTERFACEv03.0" + - Updating modeling, including ResourcePool, ResourceInfo, + DeploymentManager, ResourceType, Notification, O-Cloud, + AlarmEventRecord, AlarmDictorary, and AlarmDefinition + - Adding Accelerators as a resource; adding virtual resource type + +- Other updates + + - Add configuration file load at application starts + - Fix bugs + - Replace POC O2DMS APIs with Kubernetes Native API Profile + for Containerized NFs + +Version 1.0.1, 2022-06-15 +------------------------- + +- Add Distributed Cloud(DC) supported + + - Enable multiple ResourcePool support in DC mode + - Enable multiple DeploymentManager support in DC mode + +- Add O2 DMS profiles + + - Support native_k8sapi profile that can get native Kubernetes API information + - Support SOL018 specification, it includes native Kubernetes API profile and Helm CLI profile, "sol018", and "sol018_helmcli" Version 1.0.0, 2021-12-15 ------------------------- -- Initial version (E release) -- Add O2 IMS for INF platform - - Enable INF platform registration to SMO - - Enable O2 infrastructure inventory service API - - Enable O2 Subscription service API - - Enable O2 Notification service to notify SMO about the resource changes -- ADD O2 DMS for INF platform - - A PoC which enables Lifecycle management of NfDeployment represents CNF described with helm chart - - Add Lifecycle Management API for NfDeploymentDescriptor which represents a helm chart for NfDeployment - - Add Lifecycle Management API for NfDeployment + +- Initial version (E release) +- Add O2 IMS for INF platform + + - Enable INF platform registration to SMO + - Enable O2 infrastructure inventory service API + - Enable O2 Subscription service API + - Enable O2 Notification service to notify SMO about the resource + changes + +- ADD O2 DMS for INF platform + + - A PoC which enables Lifecycle management of NfDeployment + represents CNF described with helm chart + - Add Lifecycle Management API for NfDeploymentDescriptor which + represents a helm chart for NfDeployment + - Add Lifecycle Management API for NfDeployment -- 2.16.6