...
Base Candidate Class
Attribute | Required | Content | Values | Description |
---|---|---|---|---|
inventory_provider | Y | Stringaai | ||
inventory_type | Y | String | ||
candidate_id | Y | StringCloud, Service, Vfmodule, Transport, NSSI | ||
candidate_idtype | Y | String | ||
uniqueness | Y | Boolean | ||
cost | Y | String |
...
3) Vfmodule
4) Transport 5) NSSI
All the candidate for every inventory types extend from the candidate base class.
(Should the fields in models (cloud_info, complex_info, location_info ..) come from the configuration (or) should be defined in the models itself as instance variables (or) should the fields be derived from AAI)Following are the AAI objects from which the respective candidates takes the required data:
Cloud object
EXAMPLE
...
language | js |
---|---|
collapse | true |
: https://docs.onap.org/projects/onap-optf-has/en/latest/sections/homingspecification.html
MODEL
Attribute | Required | Content |
---|---|---|
cloud-region | Y | dict |
complex | Y | dict |
flavors | Y | dict |
sriov_automation* | N | boolean |
Service object
EXAMPLE : https://docs.onap.org/projects/onap-optf-has/en/latest/sections/homingspecification.html
...
MODEL
Attribute | Required | Content |
---|
generic-vnf | Y | dict |
vlan_info* | Y |
location_id, location_type
dict | ||
cloud-region | Y | dict |
service-instance |
Y |
Object
Service object
EXAMPLE
dict | ||
complex | Y | dict |
sriov_automation* | N | boolean |
Vfmodule object
EXAMPLE : https://docs.onap.org/projects/onap-optf-has/en/latest/sections/homingspecification.html
MODEL
Attribute | Required | Content |
---|---|---|
generic-vnf | Y | dict |
cloud-region | Y | dict |
vlan_info* | Y | dict |
vserver | Y | dict |
service-instance | Y | dict |
vf-module | Y | dict |
complex | Y | dict |
l-interfaces | Y | dict |
sriov_automation* | N | boolean |
Transport object
EXAMPLE : https://docs.onap.org/projects/onap-optf-has/en/latest/sections/homingspecification.html
...
language | js |
---|---|
collapse | true |
...
MODEL
Attribute | Required | Content |
---|
service-instance | Y |
location_id, location_type
dict |
complex |
Y |
Object
Vfmodule object
EXAMPLE
Code Block | ||||
---|---|---|---|---|
| ||||
{
"inventory_provider" : "",
"inventory_type" : "",
"candidate_id" : "",
"uniqueness" : "",
"cost" : "",
"service_resource_id" : "",
"location_id" : "",
"location_type" : "",
"physical_location_id" : "",
"complex_name" : "",
"latitude" : "",
"longitude" : "",
"city" : "",
"state" : "",
"region" : "",
"country" : "",
"vim-id" : "",
"cloud_region_version" : "",
"cloud_owner" : "",
"host_id" : "",
"vlan_key" : "",
"port_key" : "",
"sriov_automation" : "",
"nf-name" : ""
"nf-id" : ""
"nf-type" : ""
"vnf-type" : ""
"ipv4-oam-address" : ""
"ipv6-oam-address" : ""
"vf-module-name" : ""
"vf-module-id" : ""
"service_instance_id" : ""
"sriov_automation" : ""
"vservers" : [
{
"vserver-id" : ""
"vserver-name" : ""
"l-interfaces" : [
{
"interface-id" : ""
"interface-name" : ""
"macaddr" : ""
"network-id" : ""
"network-name" : ""
"ipv4-addresses" : ""
"ipv6-addresses" : ""
}
]
}
]
} |
MODEL
...
location_id, location_type
...
Object
...
Transport object
EXAMPLE
Code Block | ||||
---|---|---|---|---|
| ||||
{
"inventory_provider" : "",
"inventory_type" : "",
"candidate_id" : "",
"uniqueness" : "",
"cost" : "",
"service_resource_id" : "",
"location_id" : "",
"location_type" : "",
"physical_location_id" : "",
"complex_name" : "",
"latitude" : "",
"longitude" : "",
"city" : "",
"state" : "",
"region" : "",
"country" : "",
"vim-id" : "",
"cloud_region_version" : "",
"cloud_owner" : "",
"zone_id" : "",
"zone_name" : "",
"sriov_automation" : "",
} |
MODEL
...
location_id, location_type
...
Object
...
NSSI object
EXAMPLE
Code Block | ||||
---|---|---|---|---|
| ||||
{
"inventory_provider" : "",
"inventory_type" : "",
"candidate_id" : "",
"uniqueness" : "",
"cost" : "",
"service_resource_id" : "",
} |
MODEL
...
Object
CONFIGURATION
Applicable fields of all the models should be present in the configuration
location_info = ["location_id", "location_type"]
zone_info = ["zone_id", "zone_name"]
cloud_info = ["vim_id". "cloud_region_version", "cloud_owner"]
vlan_info = ["host_id", "vlan_key", "port_key"]
complex_info = ["physical_location_id". "complex_name", "latitude", "longitude", "state", "country", "city", "region", ]
Base candidate class
inventory_provider, inventory_type, candidate_id, uniqueness, cost, service_resource_id
Example of how a cloud inventory type should be defined
...
dict | ||
zone | Y | dict |
Design
In the data module, after fetching the data from AAI the candidate gets populated like this
JSON Viewer | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"candidate_id":"1ac71fb8-ad43-4e16-9459-c3f372b8236d",
"candidate_type":"service",
"inventory_type":"service",
"inventory_provider":"aai",
"cost":"100",
"cloud_region":{
"location_id":"DLLSTX9A",
"location_type":"azure",
"cloud_owner":"att-aic",
"cloud_region_version":"1.1"
},
"generic_vnf":{
"host_id":"vnf_123456"
},
"complex":{
"latitude":"32.897480",
"longitude":"-97.040443",
"city":"Dallas",
"state":"TX",
"country":"USA",
"region":"US",
"complex_name":"dalls_one",
"physical_location_id":"DLLSTX9A"
}
}
|
While returning to solver;
JSON Viewer | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"candidate_id": "1ac71fb8-ad43-4e16-9459-c3f372b8236d",
"candidate_type": "service",
"inventory_type": "service",
"inventory_provider": "aai",
"host_id": "vnf_123456",
"cost": "100",
"location_id": "DLLSTX9A",
"location_type": "azure",
"latitude": "32.897480",
"longitude": "-97.040443",
"city": "Dallas",
"state": "TX",
"country": "USA",
"region": "US",
"complex_name": "dalls_one",
"cloud_owner": "att-aic",
"cloud_region_version": "1.1",
"physical_location_id": "DLLSTX9A"
} |
...