Network Discovery Microservice (Dublin release)



Casablanca Release

The Network Discovery microservice was first introduced in Casablanca but had no southbound integration. The Dublin release introduces the integration of Network Discovery with the Openstack API.



Overview

The Network Discovery microservice allows clients to get specified network resource information. For each request received, the Network Discovery micro service collects information from the network (i.e., OpenStack API) and returns it to the client.

Use in POMBA

The initial use case for the microservice is to provide support for the Network Discovery Context Builder, which was introduced as part of the POMBA project.



Configuration

Application Properties

Update

The openstack.xxx properties must be adjusted to match your own OpenStack environment.



Application Properties
spring.jersey.type=filter #Enable HTTPS server.port=8443 server.ssl.key-store=config/auth/client-cert-onap.p12 server.ssl.key-store-password=password(OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10) server.ssl.keyStoreType=JKS server.ssl.keyAlias=tomcat server.ssl.client-auth=want server.ssl.enabled=true server.ssl.enabled-protocols=TLSv1.1,TLSv1.2 # Basic Authentication basicAuth.username=admin basicAuth.password=OBF:1u2a1toa1w8v1tok1u30 openstack.identity.url = http://10.69.36.11:5000/v3/auth/tokens openstack.identity.user = ralph openstack.identity.password = OBF:1w951ugg1vun1uha1w8l openstack.types = vserver, l3-network, port openstack.type.vserver.url = http://10.69.100.11:8774/v2.1/servers/{0} openstack.type.l3-network.url = http://10.69.100.11:9696/v2.0/networks/{0} openstack.type.port.url = http://10.69.100.11:9696/v2.0/ports/{0} openstack.api.microversion = 2.42



Swagger API documentation



The swagger UI is available at https://<host>:<port>/swagger/index.html

Example URL/port for OOM deployments

https://10.69.102.6:30299/swagger/index.html



Alternatively, copy and paste the following swagger.json into https://editor.swagger.io/ to browse the API documentation offline:

swagger.json
{ "swagger" : "2.0", "info" : { "version" : "1.4.1-SNAPSHOT", "title" : "Network Discovery API", "termsOfService" : "http://onap.org" }, "basePath" : "/network-discovery", "tags" : [ { "name" : "resource" } ], "paths" : { "/{version}/network/resource" : { "get" : { "tags" : [ "resource" ], "summary" : "Get Network Information", "description" : "Retrieve information from primary data sources", "operationId" : "findbyResourceIdAndType", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { "name" : "version", "in" : "path", "required" : true, "type" : "string", "default" : "v1", "pattern" : "v1", "enum" : [ "v1" ] }, { "name" : "X-ONAP-PartnerName", "in" : "header", "required" : true, "type" : "string" }, { "name" : "X-ONAP-RequestID", "in" : "header", "required" : false, "type" : "string" }, { "name" : "requestId", "in" : "query", "required" : true, "type" : "string" }, { "name" : "resourceType", "in" : "query", "required" : true, "type" : "string" }, { "name" : "resourceId", "in" : "query", "required" : true, "type" : "array", "items" : { "type" : "string" }, "collectionFormat" : "multi" } ], "responses" : { "200" : { "description" : "Request has completed.", "schema" : { "$ref" : "#/definitions/NetworkDiscoveryNotification" } }, "400" : { "description" : "Missing mandatory field in the request or HTTP header." }, "401" : { "description" : "Missing basicAuth header." }, "404" : { "description" : "Requested resource was not found." }, "500" : { "description" : "Request failed due to internal error" } }, "security" : [ { "basicAuth" : [ ] } ] } } }, "securityDefinitions" : { "basicAuth" : { "type" : "basic" } }, "definitions" : { "Attribute" : { "type" : "object", "properties" : { "name" : { "type" : "string" }, "value" : { "type" : "string" }, "dataQuality" : { "$ref" : "#/definitions/DataQuality" } } }, "DataQuality" : { "type" : "object", "properties" : { "status" : { "type" : "string", "enum" : [ "ok", "error" ] }, "errorText" : { "type" : "string" } } }, "NetworkDiscoveryNotification" : { "type" : "object", "properties" : { "requestId" : { "type" : "string" }, "code" : { "type" : "integer", "format" : "int32" }, "message" : { "type" : "string" }, "ackFinalIndicator" : { "type" : "boolean" }, "resources" : { "type" : "array", "items" : { "$ref" : "#/definitions/Resource" } } } }, "Resource" : { "type" : "object", "properties" : { "id" : { "type" : "string" }, "name" : { "type" : "string" }, "type" : { "type" : "string" }, "dataQuality" : { "$ref" : "#/definitions/DataQuality" }, "attributeList" : { "type" : "array", "items" : { "$ref" : "#/definitions/Attribute" } } } } } }



Examples



Query Openstack server

Network Discovery Micro Service URI example
https://10.69.102.6:30299/network-discovery/v1/network/resource?requestId=88001&resourceType=vserver&resourceId=645a12dc-09b5-45cb-8ab1-a0ce41b7200a



Response example

Network Discovery Micro Service response



Query Openstack network

Network Discovery Micro Service URI example

Response example:

Network Discovery Micro Service response



Query Openstack port

Network Discovery Micro Service URI example



Response example:

Network Discovery Micro Service response





Model Mapping of Openstack attributes

VM (resourceType=vserver, Openstack type = server)



Openstack Attribute

Optional/Mandatory

Name on Network Discovery API

Note



Mandatory

"type": "vserver"



Id

Mandatory

id



name

Mandatory

name



locked

Mandatory

attributeList[name=inMaintenance]



OS-EXT-SRV-ATTR:hostname

Mandatory

attributeList[name=hostname]

Requires admin-level Openstack API user

image.id

Mandatory

attributeList[name=imageId]



status

Optional

attributeList[name=status]



OS-EXT-STS:vm_state 

Optional

attributeList[name=vmState]



user-id

Optional

attributeList[name=userId]



tenant_id

Optional

attributeList[name=tenantId]



hostId

Optional

attributeList[name=hostId]



OS-EXT-SRV-ATTR:host

Optional

attributeList[name=host]

Requires admin-level Openstack API user

host_status

Optional

attributeList[name=hostStatus]

Requires admin-level Openstack API user



Network (resourceType=l3-network, Openstack type = network)

Openstack Attribute

Optional/Mandatory

Name on Network Discovery API

Note



Mandatory

"type": "l3-network"



Id

Mandatory

id



name

Mandatory

name



admin_state_up

Mandatory

attributeList[name=adminStateUp]



shared

Mandatory

attributeList[name=sharedNetwork]



status

Optional

attributeList[name=status]



subnets

Optional

attributeList[name=subnets]



tenant_id

Optional

attributeList[name=tenantId]





Port (resourceType=port, Openstack type = port)

Openstack Attribute

Optional/Mandatory

Name on Network Discovery API

Note



Mandatory

"type": "port"



Id

Mandatory

id



name

Mandatory

name



admin_state_up

Mandatory

attributeList[name=adminStateUp]



mac_address

Mandatory

attributeList[name=macAddress]



description

Mandatory

attributeList[name=description]