Welcome to INF O2 documentation

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.

In the E release, the following APIs are supported by the INF O2 service:

  1. INF O2 service Infrastructure Management Service (IMS)

    • INF O2 service provisioning API

      • Provision SMO O2 endpoint into INF O2 service

      • O2 service discovers INF platform and registers INF platform to SMO via the provisioned SMO O2 endpoint

    • INF O2 service Inventory API

      • O2 service discovers following resources of INF platform to answer queries from SMO

        • INF platform information

        • Resource Pool of the INF platform

        • Resources of the Resource Pool, including pserver, cpu, memory, port, interface

        • Resource Types associated with Resources

    • INF platform Subscription and Notification

      • INF O2 service exposes Subscription API to enable SMO subscribes to Notification of changes of resources

    • INF platform Deployment Management Service Endpoint discovery API

      • 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

Developer-Guide

This project implements a reference implementation for O-RAN O2 IMS and DMS to expose the INF platform to SMO with the O2 interface.

To contribute to this project, you are supposed to be familiar with the INF platform as well as O-RAN O2 interface specifications:

1. Prerequisite for building environment

  • A ubuntu 18.04 host is sufficient to build o2 projects

# clone code from gerrit repo
$ git clone "https://gerrit.o-ran-sc.org/r/pti/o2" && (cd "o2" && mkdir -p .git/hooks && curl -Lo `git rev-parse --git-dir`/hooks/commit-msg https://gerrit.o-ran-sc.org/r/tools/hooks/commit-msg; chmod +x `git rev-parse --git-dir`/hooks/commit-msg)
# run unit tests
$ sudo apt-get install tox
$ tox -e flake8
$ tox -e code

2. Local test with docker-compose

  • To test with docker-compose, a docker engine is supposed to be installed as well

$ docker-compose build
$ docker-compose up -d
$ docker-compose run --rm --no-deps --entrypoint=pytest api /tests/unit /tests/integration

3. Test with INF platform

  • To test with INF platform, you should install INF platform first, by default you will be able to use the ‘admin’ user

$ source ./admin_openrc.sh
$ export |grep OS_AUTH_URL
$ export |grep OS_USERNAME
$ export |grep OS_PASSWORD
$ docker-compose run --rm --no-deps --entrypoint=pytest api /tests/integration-ocloud --log-level=DEBUG --log-file=/tests/debug.log

4. Tear down docker containers

$ docker-compose down --remove-orphans

Release-notes

This document provides the release notes for 1.0.0 of INF O2 service.

Version history

Date

Ver.

Author

Comment

2021-12-15

1.0.0

Bin Yang

E Release

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

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.

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.

INF O2 Service in E Release

1. Provision remote cli for kubernetes over INF platform

1.1 Setup Service Account over O-RAN INF platform

The following instruction must be done over INF platform controller host (controller-0)

  • Please see the O-RAN INF documentation to find out how to ssh to controller host of INF platform.

USER="admin-user"
NAMESPACE="kube-system"

cat <<EOF > 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

1.2 Setup remote cli over another linux host (ubuntu as example)

The following instruction should be done outside of INF platform controller host

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

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.

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/

source <(helm completion bash)
echo "source <(helm completion bash)" >> ~/.bashrc

OAM_IP=<INF OAM IP>
NAMESPACE=orano2
TOKEN_DATA=<TOKEN_DATA from INF>

USER="admin-user"

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

kubectl get pods -A

2. Deploy INF O2 service

2.1 Retrieve Helm chart for deploying of INF O2 service

git clone -b e-release "https://gerrit.o-ran-sc.org/r/pti/o2"

2.2 Prepare override yaml

export NAMESPACE=orano2
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=<INF OAM Auth URL e.g.: http://OAM_IP:5000/v3>
export OS_USERNAME=<INF username e.g.: admin>
export OS_PASSWORD=<INF password for user e.g.: adminpassword>

cat <<EOF>o2service-override.yaml
o2ims:
  imagePullSecrets: admin-orano2-registry-secret
  image:
    repository: nexus3.o-ran-sc.org:10004/o-ran-sc/pti-o2imsdms
    tag: 1.0.0
    pullPolicy: IfNotPresent
  logginglevel: "DEBUG"

ocloud:
  OS_AUTH_URL: "${OS_AUTH_URL}"
  OS_USERNAME: "${OS_USERNAME}"
  OS_PASSWORD: "${OS_PASSWORD}"
  K8S_KUBECONFIG: "/opt/k8s_kube.conf"
EOF

2.3 Deploy by helm cli

helm install o2service o2/charts/ -f o2service-override.yaml
helm list |grep o2service
kubectl -n ${NAMESPACE} get pods |grep o2service
kubectl -n ${NAMESPACE} get services |grep o2service

2.4 Verify INF O2 service

curl -k http(s)://<OAM IP>:30205/o2ims_infrastructureInventory/v1/

2.5 INF O2 Service API Swagger

  • Swagger UI can be found with URL: http(s)://<OAM IP>:30205

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

curl -X 'GET' \
'http(s)://<OAM IP>:30205/provision/v1/smo-endpoint' \
-H 'accept: application/json'

curl -k -X 'POST' \
  'http(s)://<OAM IP>:30205/provision/v1/smo-endpoint' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"endpoint": "<SMO O2 endpoint for registration>"}'

# Confirm SMO endpoint provision status
curl -X 'GET' \
'http(s)://<OAM IP>:30205/provision/v1/smo-endpoint' \
-H 'accept: application/json'

References

INF O2 Service User Guide

This guide will introduce the process that make INF O2 interface work with SMO.

  • Assume you have an O2 service with INF platform environment

    export OAM_IP=<INF_OAM_IP>
    
  • Discover INF platform inventory

    • INF platform auto discovery

      After you installed the INF O2 service, it will automatically discover the INF through the parameters that you give from the “o2service-override.yaml

      Below command can get the INF platform information as O-Cloud

      curl -X 'GET' \
        "http://${OAM_IP}:30205/o2ims_infrastructureInventory/v1/" \
        -H 'accept: application/json'
      
    • Resource pool

      One INF platform have one resource pool, all the resources that belong to this INF platform will be organized into this resource pool

      Get the resource pool information through this interface

      curl -X 'GET' \
        "http://${OAM_IP}:30205/o2ims_infrastructureInventory/v1/resourcePools" \
        -H 'accept: application/json'
      
      # export resource pool id
      export resourcePoolId=`curl -X 'GET'   "http://${OAM_IP}:30205/o2ims_infrastructureInventory/v1/resourcePools"   -H 'accept: application/json' -H 'X-Fields: resourcePoolId' 2>/dev/null | jq .[].resourcePoolId | xargs echo`
      
      echo ${resourcePoolId} # check the exported resource pool id
      
    • Resource type

      Resource type defined what type is the specified resource, like a physical machine, memory, or CPU

      Show all resource type

      curl -X 'GET' \
        "http://${OAM_IP}:30205/o2ims_infrastructureInventory/v1/resourceTypes" \
        -H 'accept: application/json'
      
    • Resource

      Get the list of all resources, the value of resourcePoolId from the result of resource pool interface

      curl -X 'GET' \
        "http://${OAM_IP}:30205/o2ims_infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources" \
        -H 'accept: application/json'
      

      Get detail of one resource, need to export one specific resource id that wants to check

      curl -X 'GET' \
        "http://${OAM_IP}:30205/o2ims_infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources/${resourceId}" \
        -H 'accept: application/json'
      
    • Deployment manager services endpoint

      The Deployment Manager Service (DMS) that related to this IMS information you can use below API to check

      curl -X 'GET' \
        "http://${OAM_IP}:30205/o2ims_infrastructureInventory/v1/deploymentManagers" \
        -H 'accept: application/json'
      
  • Provisioning INF platform with SMO endpoint configuration

    Assume you have an SMO, then configure INF platform with SMO endpoint address. This provisioning of INF O2 service will make a request from INF O2 service to SMO, that make SMO know the O2 service is working.

    It needs SMO to have an API like “http(s)://SMO_HOST:SMO_PORT/registration”, which can accept JSON format data.

    curl -X 'POST' \
      'http://'${OAM_IP}':30205/provision/v1/smo-endpoint' \
      -H 'accept: application/json' \
      -H 'Content-Type: application/json' \
      -d '{
      "endpoint": "http://<SMO_HOST>:<SMO_PORT>/registration"
    }'
    
  • Subscribe to the INF platform resource change notification

    Assume you have an SMO, and the SMO have an API can be receive callback request

    • Create subscription in the INF O2 IMS

      curl -X 'POST' \
        "http://${OAM_IP}:30205/o2ims_infrastructureInventory/v1/subscriptions" \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -d '{
        "callback": "http://SMO/address/to/callback",
        "consumerSubscriptionId": "<ConsumerIdHelpSmoToIdentify>",
        "filter": "<ResourceTypeNameSplitByComma,EmptyToGetAll>"
      }'
      
    • Handle resource change notification

      When the SMO callback API get the notification that the resource of INF platform changing, use the URL to get the latest resource information to update its database

  • Orchestrate CNF in helm chart

    On this sample, we prepare a firewall chart to test the orchestration.

    We need to do some preparation to make the helm repo work and include our firewall chart inside of the repository.

    Get the DMS Id in the INF O2 service, and set it into bash environment

    curl --location --request GET "http://${OAM_IP}:30205/o2ims_infrastructureInventory/v1/deploymentManagers"
    
    export dmsId=`curl --location --request GET "http://${OAM_IP}:30205/o2ims_infrastructureInventory/v1/deploymentManagers" 2>/dev/null | jq .[].deploymentManagerId | xargs echo`
    
    echo ${dmsId} # check the exported DMS id
    

    Using helm to deploy a chartmuseum to the INF platform

    helm repo add chartmuseum https://chartmuseum.github.io/charts
    helm repo update
    helm pull chartmuseum/chartmuseum # download chartmuseum-3.4.0.tgz to local
    tar zxvf chartmuseum-3.4.0.tgz
    cat <<EOF>chartmuseum-override.yaml
    env:
      open:
        DISABLE_API: false
    service:
      type: NodePort
      nodePort: 30330
    EOF
    
    helm install chartmuseumrepo chartmuseum/chartmuseum -f chartmuseum-override.yaml
    kubectl get pods
    Kubectl get services
    

    Update the helm repo and add the chartmusem into the repository

    helm repo add o2imsrepo http://${NODE_IP}:30330
    helm repo update
    

    Download the firewall chart and push it into the repository

    git clone https://github.com/biny993/firewall-host-netdevice.git
    tar -zcvf firewall-host-netdevice-1.0.0.tgz firewall-host-netdevice/
    helm plugin install https://github.com/chartmuseum/helm-push.git
    helm cm-push firewall-host-netdevice-1.0.0.tgz o2imsrepo
    helm repo update
    helm search repo firewall
    

    Setup host net device over INF node

    ssh sysadmin@<INF OAM IP>
    sudo ip link add name veth11 type veth peer name veth12
    sudo ip link add name veth21 type veth peer name veth22
    sudo ip link |grep veth
    exit
    
    • Create NfDeploymentDescriptor on the INF O2 DMS

      curl --location --request POST "http://${OAM_IP}:30205/o2dms/${dmsId}/O2dms_DeploymentLifecycle/NfDeploymentDescriptor" \
      --header 'Content-Type: application/json' \
      --data-raw '{
        "name": "cfwdesc1",
        "description": "demo nf deployment descriptor",
        "artifactRepoUrl": "http://'${NODE_IP}':30330",
        "artifactName": "firewall-host-netdevice",
        "inputParams":
        "{\n  \"image\": {\n    \"repository\": \"ubuntu\",\n    \"tag\": 18.04,\n    \"pullPolicy\": \"IfNotPresent\"\n  },\n  \"resources\": {\n    \"cpu\": 2,\n    \"memory\": \"2Gi\",\n    \"hugepage\": \"0Mi\",\n    \"unprotectedNetPortVpg\": \"veth11\",\n    \"unprotectedNetPortVfw\": \"veth12\",\n    \"unprotectedNetCidr\": \"10.10.1.0/24\",\n    \"unprotectedNetGwIp\": \"10.10.1.1\",\n    \"protectedNetPortVfw\": \"veth21\",\n    \"protectedNetPortVsn\": \"veth22\",\n    \"protectedNetCidr\": \"10.10.2.0/24\",\n    \"protectedNetGwIp\": \"10.10.2.1\",\n    \"vfwPrivateIp0\": \"10.10.1.1\",\n    \"vfwPrivateIp1\": \"10.10.2.1\",\n    \"vpgPrivateIp0\": \"10.10.1.2\",\n    \"vsnPrivateIp0\": \"10.10.2.2\"\n  }\n}",
        "outputParams": "{\"output1\": 100}"
      }'
      
      curl --location --request GET "http://${OAM_IP}:30205/o2dms/${dmsId}/O2dms_DeploymentLifecycle/NfDeploymentDescriptor"
      
      export descId=` curl -X 'GET'   "http://${OAM_IP}:30205/o2dms/${dmsId}/O2dms_DeploymentLifecycle/NfDeploymentDescriptor"   -H 'accept: application/json'   -H 'X-Fields: id' 2>/dev/null | jq .[].id | xargs echo`
      
      echo ${descId} # check the exported descriptor id
      
    • Create NfDeployment on the INF O2 DMS

      When you have an descriptor of deployment, you can create a NfDeployment, it will trigger an event inside of the IMS/DMS, and use the K8S API to create a real pod of the firewall sample

      curl --location --request POST "http://${OAM_IP}:30205/o2dms/${dmsId}/O2dms_DeploymentLifecycle/NfDeployment" \
      --header 'Content-Type: application/json' \
      --data-raw '{
        "name": "cfw100",
        "description": "demo nf deployment",
        "descriptorId": "'${descId}'",
        "parentDeploymentId": ""
      }'
      
      curl --location --request GET "http://${OAM_IP}:30205/o2dms/${dmsId}/O2dms_DeploymentLifecycle/NfDeployment"
      
    • Check pods of the firewall sample

      kubectl get pods
      
    • Delete the deployment we just created

      export NfDeploymentId=`curl --location --request GET "http://${OAM_IP}:30205/o2dms/${dmsId}/O2dms_DeploymentLifecycle/NfDeployment" 2>/dev/null | jq .[].id | xargs echo`
      
      echo ${NfDeploymentId} # Check the exported deployment id
      
      curl --location --request DELETE "http://${OAM_IP}:30205/o2dms/${dmsId}/O2dms_DeploymentLifecycle/NfDeployment/${NfDeploymentId}"
      

INF O2 Services API 1.0.0

Description

Swagger OpenAPI document for INF O2 Services

Base URL

http(s)://<OAM IP>:30205/

O2DMS_LCM

DMS LCM related operations.

POST /o2dms/{deploymentManagerID}/O2dms_DeploymentLifecycle/NfDeployment

Parameters

Name

Located in

Required

Type

Format

Properties

Description

deploymentManagerID

path

Yes

string

ID of the deployment manager

Request
Headers
X-Fields: An optional fields mask
Body

Name

Required

Type

Format

Properties

Description

description

No

string

descriptorId

No

string

name

No

string

parentDeploymentId

No

string

{
    "description": "somestring",
    "descriptorId": "somestring",
    "name": "somestring",
    "parentDeploymentId": "somestring"
}
Responses
201

Success

Type: NfDeploymentCreateRespDto

Example:

{
    "id": "somestring"
}
404

DMS LCM not found

POST /o2dms/{deploymentManagerID}/O2dms_DeploymentLifecycle/NfDeploymentDescriptor

Parameters

Name

Located in

Required

Type

Format

Properties

Description

deploymentManagerID

path

Yes

string

ID of the deployment manager

Request
Headers
X-Fields: An optional fields mask
Body

Name

Required

Type

Format

Properties

Description

artifactName

No

string

artifactRepoUrl

No

string

description

No

string

inputParams

No

string

name

No

string

outputParams

No

string

{
    "artifactName": "somestring",
    "artifactRepoUrl": "somestring",
    "description": "somestring",
    "inputParams": "somestring",
    "name": "somestring",
    "outputParams": "somestring"
}
Responses
201

Success

Type: NfDeploymentDescriptorCreateRespDto

Example:

{
    "id": "somestring"
}
404

DMS LCM not found

DELETE /o2dms/{deploymentManagerID}/O2dms_DeploymentLifecycle/NfDeployment/{nfDeploymentId}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

nfDeploymentId

path

Yes

string

ID of the NfDeployment

deploymentManagerID

path

Yes

string

ID of the deployment manager

Request
Responses
204

NfDeployment deleted

404

DMS LCM not found

DELETE /o2dms/{deploymentManagerID}/O2dms_DeploymentLifecycle/NfDeploymentDescriptor/{nfDeploymentDescriptorId}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

nfDeploymentDescriptorId

path

Yes

string

ID of the NfDeploymentDescriptor

deploymentManagerID

path

Yes

string

ID of the deployment manager

Request
Responses
204

NfDeploymentDescriptor deleted

404

DMS LCM not found

GET /o2dms/{deploymentManagerID}/O2dms_DeploymentLifecycle/NfDeployment/{nfDeploymentId}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

nfDeploymentId

path

Yes

string

ID of the NfDeployment

deploymentManagerID

path

Yes

string

ID of the deployment manager

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: NfDeploymentGetDto

Example:

{
    "description": "somestring",
    "descriptorId": "somestring",
    "id": "somestring",
    "name": "somestring",
    "parentDeploymentId": "somestring",
    "status": 1
}
404

DMS LCM not found

GET /o2dms/{deploymentManagerID}/O2dms_DeploymentLifecycle/NfDeploymentDescriptor/{nfDeploymentDescriptorId}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

nfDeploymentDescriptorId

path

Yes

string

ID of the NfDeploymentDescriptor

deploymentManagerID

path

Yes

string

ID of the deployment manager

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: NfDeploymentDescriptorGetDto

Example:

{
    "artifactName": "somestring",
    "artifactRepoUrl": "somestring",
    "description": "somestring",
    "id": "somestring",
    "inputParams": "somestring",
    "name": "somestring",
    "outputParams": "somestring"
}
404

DMS LCM not found

GET /o2dms/{deploymentManagerID}/O2dms_DeploymentLifecycle/NfDeployment

Parameters

Name

Located in

Required

Type

Format

Properties

Description

deploymentManagerID

path

Yes

string

ID of the deployment manager

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: array of NfDeploymentGetDto

Example:

[
    {
        "description": "somestring",
        "descriptorId": "somestring",
        "id": "somestring",
        "name": "somestring",
        "parentDeploymentId": "somestring",
        "status": 1
    },
    {
        "description": "somestring",
        "descriptorId": "somestring",
        "id": "somestring",
        "name": "somestring",
        "parentDeploymentId": "somestring",
        "status": 1
    }
]
404

DMS LCM not found

GET /o2dms/{deploymentManagerID}/O2dms_DeploymentLifecycle/NfDeploymentDescriptor

Parameters

Name

Located in

Required

Type

Format

Properties

Description

deploymentManagerID

path

Yes

string

ID of the deployment manager

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: array of NfDeploymentDescriptorGetDto

Example:

[
    {
        "artifactName": "somestring",
        "artifactRepoUrl": "somestring",
        "description": "somestring",
        "id": "somestring",
        "inputParams": "somestring",
        "name": "somestring",
        "outputParams": "somestring"
    },
    {
        "artifactName": "somestring",
        "artifactRepoUrl": "somestring",
        "description": "somestring",
        "id": "somestring",
        "inputParams": "somestring",
        "name": "somestring",
        "outputParams": "somestring"
    }
]
404

DMS LCM not found

GET /o2dms/{deploymentManagerID}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

deploymentManagerID

path

Yes

string

ID of the deployment manager

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: DmsGetDto

Example:

{
    "capabilities": "somestring",
    "capacity": "somestring",
    "deploymentManagerId": "somestring",
    "description": "somestring",
    "name": "somestring",
    "supportedLocations": "somestring"
}
404

Deployment manager not found

PUT /o2dms/{deploymentManagerID}/O2dms_DeploymentLifecycle/NfDeployment/{nfDeploymentId}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

nfDeploymentId

path

Yes

string

ID of the NfDeployment

deploymentManagerID

path

Yes

string

ID of the deployment manager

Request
Body

Name

Required

Type

Format

Properties

Description

description

No

string

name

No

string

parentDeploymentId

No

string

{
    "description": "somestring",
    "name": "somestring",
    "parentDeploymentId": "somestring"
}
Responses
404

DMS LCM not found

PUT /o2dms/{deploymentManagerID}/O2dms_DeploymentLifecycle/NfDeploymentDescriptor/{nfDeploymentDescriptorId}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

nfDeploymentDescriptorId

path

Yes

string

ID of the NfDeploymentDescriptor

deploymentManagerID

path

Yes

string

ID of the deployment manager

Request
Body

Name

Required

Type

Format

Properties

Description

artifactName

No

string

artifactRepoUrl

No

string

description

No

string

inputParams

No

string

name

No

string

outputParams

No

string

{
    "artifactName": "somestring",
    "artifactRepoUrl": "somestring",
    "description": "somestring",
    "inputParams": "somestring",
    "name": "somestring",
    "outputParams": "somestring"
}
Responses
404

DMS LCM not found

O2IMS_INVENTORY

IMS Inventory related operations.

POST /o2ims_infrastructureInventory/v1/subscriptions

Request
Headers
X-Fields: An optional fields mask
Body

Name

Required

Type

Format

Properties

Description

callback

Yes

string

Subscription callback address

consumerSubscriptionId

No

string

filter

No

string

{
    "callback": "somestring",
    "consumerSubscriptionId": "somestring",
    "filter": "somestring"
}
Responses
201

Success

Type: SubscriptionCreatedRespDto

Example:

{
    "subscriptionId": "somestring"
}

DELETE /o2ims_infrastructureInventory/v1/subscriptions/{subscriptionID}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

subscriptionID

path

Yes

string

ID of the subscription

Request
Responses
204

Subscription deleted

404

Subscription not found

GET /o2ims_infrastructureInventory/v1/deploymentManagers/{deploymentManagerID}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

deploymentManagerID

path

Yes

string

ID of the deployment manager

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: DeploymentManagerGetDto

Example:

{
    "capabilities": "somestring",
    "capacity": "somestring",
    "deploymentManagementServiceEndpoint": "somestring",
    "deploymentManagerId": "somestring",
    "description": "somestring",
    "name": "somestring",
    "supportedLocations": "somestring"
}
404

Deployment manager not found

GET /o2ims_infrastructureInventory/v1/resourcePools/{resourcePoolID}/resources/{resourceID}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

resourceID

path

Yes

string

ID of the resource

resourcePoolID

path

Yes

string

ID of the resource pool

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: ResourceGetDto2

Example:

{
    "children": [
        {
            "children": [
                {
                    "description": "somestring",
                    "elements": "somestring",
                    "name": "somestring",
                    "parentId": "somestring",
                    "resourceId": "somestring",
                    "resourcePoolId": "somestring",
                    "resourceTypeId": "somestring"
                },
                {
                    "description": "somestring",
                    "elements": "somestring",
                    "name": "somestring",
                    "parentId": "somestring",
                    "resourceId": "somestring",
                    "resourcePoolId": "somestring",
                    "resourceTypeId": "somestring"
                }
            ],
            "description": "somestring",
            "elements": "somestring",
            "name": "somestring",
            "parentId": "somestring",
            "resourceId": "somestring",
            "resourcePoolId": "somestring",
            "resourceTypeId": "somestring"
        },
        {
            "children": [
                {
                    "description": "somestring",
                    "elements": "somestring",
                    "name": "somestring",
                    "parentId": "somestring",
                    "resourceId": "somestring",
                    "resourcePoolId": "somestring",
                    "resourceTypeId": "somestring"
                },
                {
                    "description": "somestring",
                    "elements": "somestring",
                    "name": "somestring",
                    "parentId": "somestring",
                    "resourceId": "somestring",
                    "resourcePoolId": "somestring",
                    "resourceTypeId": "somestring"
                }
            ],
            "description": "somestring",
            "elements": "somestring",
            "name": "somestring",
            "parentId": "somestring",
            "resourceId": "somestring",
            "resourcePoolId": "somestring",
            "resourceTypeId": "somestring"
        }
    ],
    "description": "somestring",
    "elements": "somestring",
    "name": "somestring",
    "parentId": "somestring",
    "resourceId": "somestring",
    "resourcePoolId": "somestring",
    "resourceTypeId": "somestring"
}
404

Resource not found

GET /o2ims_infrastructureInventory/v1/resourcePools/{resourcePoolID}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

resourcePoolID

path

Yes

string

ID of the resource pool

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: ResourcePoolGetDto

Example:

{
    "description": "somestring",
    "globalLocationId": "somestring",
    "location": "somestring",
    "name": "somestring",
    "resourcePoolId": "somestring"
}
404

Resource pool not found

GET /o2ims_infrastructureInventory/v1/resourceTypes/{resourceTypeID}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

resourceTypeID

path

Yes

string

ID of the resource type

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: ResourceTypeGetDto

Example:

{
    "description": "somestring",
    "name": "somestring",
    "resourceTypeId": "somestring",
    "vendor": "somestring",
    "version": "somestring"
}
404

Resource type not found

GET /o2ims_infrastructureInventory/v1/subscriptions/{subscriptionID}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

subscriptionID

path

Yes

string

ID of the subscription

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: SubscriptionGetDto

Example:

{
    "callback": "somestring",
    "consumerSubscriptionId": "somestring",
    "filter": "somestring",
    "subscriptionId": "somestring"
}
404

Subscription not found

GET /o2ims_infrastructureInventory/v1/subscriptions

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: array of SubscriptionGetDto

Example:

[
    {
        "callback": "somestring",
        "consumerSubscriptionId": "somestring",
        "filter": "somestring",
        "subscriptionId": "somestring"
    },
    {
        "callback": "somestring",
        "consumerSubscriptionId": "somestring",
        "filter": "somestring",
        "subscriptionId": "somestring"
    }
]

GET /o2ims_infrastructureInventory/v1/deploymentManagers

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: array of DeploymentManagerGetDto

Example:

[
    {
        "capabilities": "somestring",
        "capacity": "somestring",
        "deploymentManagementServiceEndpoint": "somestring",
        "deploymentManagerId": "somestring",
        "description": "somestring",
        "name": "somestring",
        "supportedLocations": "somestring"
    },
    {
        "capabilities": "somestring",
        "capacity": "somestring",
        "deploymentManagementServiceEndpoint": "somestring",
        "deploymentManagerId": "somestring",
        "description": "somestring",
        "name": "somestring",
        "supportedLocations": "somestring"
    }
]

GET /o2ims_infrastructureInventory/v1/

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: OcloudDto

Example:

{
    "description": "somestring",
    "globalCloudId": "somestring",
    "infrastructureManagementServiceEndpoint": "somestring",
    "name": "somestring",
    "oCloudId": "somestring"
}
404

oCloud not found

GET /o2ims_infrastructureInventory/v1/resourcePools

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: array of ResourcePoolGetDto

Example:

[
    {
        "description": "somestring",
        "globalLocationId": "somestring",
        "location": "somestring",
        "name": "somestring",
        "resourcePoolId": "somestring"
    },
    {
        "description": "somestring",
        "globalLocationId": "somestring",
        "location": "somestring",
        "name": "somestring",
        "resourcePoolId": "somestring"
    }
]

GET /o2ims_infrastructureInventory/v1/resourceTypes

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: array of ResourceTypeGetDto

Example:

[
    {
        "description": "somestring",
        "name": "somestring",
        "resourceTypeId": "somestring",
        "vendor": "somestring",
        "version": "somestring"
    },
    {
        "description": "somestring",
        "name": "somestring",
        "resourceTypeId": "somestring",
        "vendor": "somestring",
        "version": "somestring"
    }
]

GET /o2ims_infrastructureInventory/v1/resourcePools/{resourcePoolID}/resources

Parameters

Name

Located in

Required

Type

Format

Properties

Description

resourcePoolID

path

Yes

string

ID of the resource pool

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: array of ResourceListDto

Example:

[
    {
        "description": "somestring",
        "name": "somestring",
        "parentId": "somestring",
        "resourceId": "somestring",
        "resourcePoolId": "somestring",
        "resourceTypeId": "somestring"
    },
    {
        "description": "somestring",
        "name": "somestring",
        "parentId": "somestring",
        "resourceId": "somestring",
        "resourcePoolId": "somestring",
        "resourceTypeId": "somestring"
    }
]

PROVISION

Provision related operations.

POST /provision/v1/smo-endpoint

Request
Headers
X-Fields: An optional fields mask
Body

Name

Required

Type

Format

Properties

Description

endpoint

Yes

string

Configuration SMO callback address

{
    "endpoint": "somestring"
}
Responses
201

Success

Type: SmoEndpointCreatedRespDto

Example:

{
    "id": "somestring"
}

DELETE /provision/v1/smo-endpoint/{configurationID}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

configurationID

path

Yes

string

ID of the SMO endpoint configuration

Request
Responses
204

Configuration deleted

404

SMO Endpoint configuration not found

GET /provision/v1/smo-endpoint/{configurationID}

Parameters

Name

Located in

Required

Type

Format

Properties

Description

configurationID

path

Yes

string

ID of the SMO endpoint configuration

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: SmoEndpointGetDto

Example:

{
    "comments": "somestring",
    "endpoint": "somestring",
    "id": "somestring",
    "status": "somestring"
}
404

SMO Endpoint configuration not found

GET /provision/v1/smo-endpoint

Request
Headers
X-Fields: An optional fields mask
Responses
200

Success

Type: array of SmoEndpointGetDto

Example:

[
    {
        "comments": "somestring",
        "endpoint": "somestring",
        "id": "somestring",
        "status": "somestring"
    },
    {
        "comments": "somestring",
        "endpoint": "somestring",
        "id": "somestring",
        "status": "somestring"
    }
]

Data Structures

DeploymentManagerGetDto Model Structure

Name

Required

Type

Format

Properties

Description

capabilities

No

string

capacity

No

string

deploymentManagementServiceEndpoint

No

string

deploymentManagerId

Yes

string

Deployment manager ID

description

No

string

name

No

string

supportedLocations

No

string

DmsGetDto Model Structure

Name

Required

Type

Format

Properties

Description

capabilities

No

string

capacity

No

string

deploymentManagerId

Yes

string

Deployment manager ID

description

No

string

name

No

string

supportedLocations

No

string

NfDeploymentCreateDto Model Structure

Name

Required

Type

Format

Properties

Description

description

No

string

descriptorId

No

string

name

No

string

parentDeploymentId

No

string

NfDeploymentCreateRespDto Model Structure

Name

Required

Type

Format

Properties

Description

id

Yes

string

NfDeployment ID

NfDeploymentDescriptorCreateDto Model Structure

Name

Required

Type

Format

Properties

Description

artifactName

No

string

artifactRepoUrl

No

string

description

No

string

inputParams

No

string

name

No

string

outputParams

No

string

NfDeploymentDescriptorCreateRespDto Model Structure

Name

Required

Type

Format

Properties

Description

id

Yes

string

NfDeploymentDescriptor ID

NfDeploymentDescriptorGetDto Model Structure

Name

Required

Type

Format

Properties

Description

artifactName

No

string

artifactRepoUrl

No

string

description

No

string

id

Yes

string

NfDeploymentDescriptor ID

inputParams

No

string

name

No

string

outputParams

No

string

NfDeploymentDescriptorUpdateDto Model Structure

Name

Required

Type

Format

Properties

Description

artifactName

No

string

artifactRepoUrl

No

string

description

No

string

inputParams

No

string

name

No

string

outputParams

No

string

NfDeploymentGetDto Model Structure

Name

Required

Type

Format

Properties

Description

description

No

string

descriptorId

No

string

id

Yes

string

NfDeployment ID

name

No

string

parentDeploymentId

No

string

status

No

integer

NfDeploymentUpdateDto Model Structure

Name

Required

Type

Format

Properties

Description

description

No

string

name

No

string

parentDeploymentId

No

string

OcloudDto Model Structure

Name

Required

Type

Format

Properties

Description

description

No

string

globalCloudId

No

string

infrastructureManagementServiceEndpoint

No

string

name

No

string

oCloudId

Yes

string

ResourceGetDto0 Model Structure

Name

Required

Type

Format

Properties

Description

description

No

string

elements

No

string

name

No

string

parentId

No

string

resourceId

Yes

string

Resource ID

resourcePoolId

No

string

resourceTypeId

No

string

ResourceGetDto1 Model Structure

Name

Required

Type

Format

Properties

Description

children

No

array of ResourceGetDto0

description

No

string

elements

No

string

name

No

string

parentId

No

string

resourceId

Yes

string

Resource ID

resourcePoolId

No

string

resourceTypeId

No

string

ResourceGetDto2 Model Structure

Name

Required

Type

Format

Properties

Description

children

No

array of ResourceGetDto1

description

No

string

elements

No

string

name

No

string

parentId

No

string

resourceId

Yes

string

Resource ID

resourcePoolId

No

string

resourceTypeId

No

string

ResourceListDto Model Structure

Name

Required

Type

Format

Properties

Description

description

No

string

name

No

string

parentId

No

string

resourceId

Yes

string

Resource ID

resourcePoolId

No

string

resourceTypeId

No

string

ResourcePoolGetDto Model Structure

Name

Required

Type

Format

Properties

Description

description

No

string

globalLocationId

No

string

location

No

string

name

No

string

resourcePoolId

Yes

string

Resource pool ID

ResourceTypeGetDto Model Structure

Name

Required

Type

Format

Properties

Description

description

No

string

name

No

string

resourceTypeId

Yes

string

Resource type ID

vendor

No

string

version

No

string

SmoEndpointCreateDto Model Structure

Name

Required

Type

Format

Properties

Description

endpoint

Yes

string

Configuration SMO callback address

SmoEndpointCreatedRespDto Model Structure

Name

Required

Type

Format

Properties

Description

id

Yes

string

SMO Endpoint Configuration ID

SmoEndpointGetDto Model Structure

Name

Required

Type

Format

Properties

Description

comments

No

string

endpoint

No

string

id

Yes

string

SMO Endpoint Configuration ID

status

No

string

SubscriptionCreateDto Model Structure

Name

Required

Type

Format

Properties

Description

callback

Yes

string

Subscription callback address

consumerSubscriptionId

No

string

filter

No

string

SubscriptionCreatedRespDto Model Structure

Name

Required

Type

Format

Properties

Description

subscriptionId

Yes

string

Subscription ID

SubscriptionGetDto Model Structure

Name

Required

Type

Format

Properties

Description

callback

No

string

consumerSubscriptionId

No

string

filter

No

string

subscriptionId

Yes

string

Subscription ID