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:
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
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
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"
}
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"
}
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
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
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 |
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 |
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 |
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 |
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 |
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 |
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"
}
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
DELETE /o2ims_infrastructureInventory/v1/subscriptions/{subscriptionID}
Parameters
Name |
Located in |
Required |
Type |
Format |
Properties |
Description |
---|---|---|---|---|---|---|
subscriptionID |
path |
Yes |
string |
ID of the subscription |
Request
GET /o2ims_infrastructureInventory/v1/deploymentManagers/{deploymentManagerID}
Parameters
Name |
Located in |
Required |
Type |
Format |
Properties |
Description |
---|---|---|---|---|---|---|
deploymentManagerID |
path |
Yes |
string |
ID of the deployment manager |
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 |
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 |
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 |
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 |
Responses
200
Success
Type: SubscriptionGetDto
Example:
{
"callback": "somestring",
"consumerSubscriptionId": "somestring",
"filter": "somestring",
"subscriptionId": "somestring"
}
404
Subscription not found
GET /o2ims_infrastructureInventory/v1/subscriptions
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
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/
GET /o2ims_infrastructureInventory/v1/resourcePools
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
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 |
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
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
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 |
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
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 |