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 |
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] |