...
Attribute | Required? | Cardinality | Content | Values | Description |
---|---|---|---|---|---|
transactionId | Y | 1 | UUID/String | A unique ID to track an ONAP transaction. | |
requestId | Y | 1 | UUID/String | A unique ID to track multiple requests associated with a transaction. | |
callbackUrl | Y | 1 | URL | The end point of a callback service where recommendations are posted. | |
callbackHeader | N | 1 | JSON blob | The header information a client expecting in a async callback. | |
sourceId | Y | 1 | String | The unique ID of a client making an optimization call. | |
requestType | Y | 1 | String | create, update, delete | The type of a request |
numSolutions | N | 1 | Integer | Expected number of solutions. numSolution can also be specified using an optimization query policies, where the default configured value is 1. The value from a request gets higher precedence over the value defined in a policy. | |
optimizers | Y | 1..N | List of Strings | placement | A list of optimization services. |
timeout | YN | 1 | Integer | A tolerance window (in secs) for expecting solutions. Default is 600 secs. |
PlacementInfo Object
Attribute | Required? | Cardinality | Content | Values | Description |
---|---|---|---|---|---|
requestParameters | YC | 1 | JSON BLOB | A JSON object conaining service and customer-specific data. A client or service designer is required to specify the location of information parameters of interest for a given service and their location in the JSON blob through optimization query policies. This attribute is only required if a request contains service or customer-specific information. | |
placementDemands | Y | 1..N | List of PlacementDemand Object | The resource information for a placement service. | |
subscriberInfo | N | 1 | SubscriberInfo Object | The information of a service subscriber. |
...
Attribute | Required? | Cardinality | Content | Values | Description |
---|---|---|---|---|---|
resourceModuleName | Y | 1 | String | A resource name as defined in a service model. | |
serviceResourceId | Y | 1 | String | A unique resource Id with a local scope between client and OOF. | |
tenantId | N | 1 | String | A tenant Id as defined in the ordering system. | |
resourceModelInfo | Y | 1 | ModelMetaData Object | Resource model information as defined in SDC. | |
existingCandidates | N | 1..N | List of Candidates Objects | The existing placement information of a resource. | |
excludedCandidates | N | 1..N | List of Candidates Objects | Candidates that need to be excluded from solutions. | |
requiredCandidates | N | 1..N | List of Candidates Objects | Candidates that must be included in solutions. |
SubscriberInfo Object
Attribute | Required? | Cardinality | Content | Values | Description |
---|---|---|---|---|---|
globalSubscriberId | Y | 1 | String | An ID of a subscriber. | |
subscriberName |
Y | 1. | String | The name of a subscriber. If the name is not known, the value must be 'unknown'. | ||
subscriberCommonSiteId | N | 1 | String | Id representing a subscriber location. |
ModelMetaData Object
Attribute | Required? | Cardinality | Content | Values | Description |
---|---|---|---|---|---|
modelInvariantId | Y | 1 | String | A model invariant Id as defined in a service model. | |
modelVersionId | Y | 1 | String | A unique model Id as defined in a service model. | |
modelName | N | 1 | String | A model name as defined in a service model. | |
modelType | N | 1 | String | A model type as defined in a service model. | |
modelVersion | N | 1 | String | A model version as defined in a service model. | |
modelCustomizationName | N | 1 | String | A model customization name as defined in a service model. |
...
Attribute | Required? | Cardinality | Content | Values | Description |
---|---|---|---|---|---|
identifierType | Y | 1 | String | service_instance_id, vnf_name, cloud_region_id, vm_idserviceInstanceId, vnfName, cloudRegionId, vimId | The type of a candidate. |
identifiers | Y | 1..N | List of Strings | A list of identifiers. | |
cloudOwner | C | 1 | String | The name of a cloud owner. Only required if identifierType is cloud_region_id. |
...
Attribute | Required? | Cardinality | Content | Values | Description |
---|---|---|---|---|---|
requestId | Y | 1 | UUID/String | A unique Id for an ONAP transaction. | |
transactionId | Y | 1 | UUID/String | A unique ID to track multiple requests associated with a transaction. | |
statusMessage | N | 1 | String | Reasoning if a requestStatus is failurefailed. | |
requestStatus | Y | 1 | String | successaccepted, failurefailed | The status of a request. |
Asynchronous Response Header
...
Attribute | Required? | Cardinality | Content | Values | Description |
---|---|---|---|---|---|
requestId | Y | 1 | UUID/String | A unique Id for an ONAP transaction. | |
transactionId | Y | 1 | UUID/String | A unique ID to track multiple requests associated with a transaction. | |
statusMessage | N | 1 | String | Reasoning if requestStatus is failurefailed. | |
requestStatus | Y | 1 | String | successcompleted, failurefailed, pending | The status of a request. |
solutions | Y | 1 | Solution Object | Solutions related to a request. |
...
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "requestInfo": { "transactionId": "xxx-xxx-xxxx", "requestId": "yyy-yyy-yyyy", "callbackUrl": "https://sowiki.onap.org:5000/callbackUrl/", "sourceId": "SO", "requestType": "create", "numSolutions": 1, "optimizers": ["placement"], "timeout": 600 }, "placementInfo": { "requestParameters": { "customerLatitude": 32.89748, "customerLongitude": -97.040443, "customerName": "xyz" }, "subscriberInfo": {"globalSubscriberId": "xxx-xx-xxx", "subscriberName": "subscriber_x"}, "placementDemands": [ { "resourceModuleName": "vGMuxInfra", "serviceResourceId": "vGMuxInfra-xx", "tenantId": "vGMuxInfra-tenant", "resourceModelInfo": { "modelInvariantId": "vGMuxInfra-modelInvariantId", "modelVersionId": "vGMuxInfra-versionId", "modelName": "vGMuxInfra-model", "modelType": "resource", "modelVersion": "1.0", "modelCustomizationName": "vGMuxInfra-customeModelName" } }, { "resourceModuleName": "vG", "serviceResourceId": "71d563e8-e714-4393-8f99-cc480144a05e", "tenantId": "vG-tenant", "resourceModelInfo": { "modelInvariantId": "vG-modelInvariantId", "modelVersionId": "vG-versionId", "modelName": "vG-model", "modelType": "resource", "modelVersion": "1.0", "modelCustomizationName": "vG-customeModelName" }, "existingCandidates": [ { "identifier_typeidentifierType": "service_instance_idserviceInstanceId", "cloud_ownercloudOwner": "", "identifiers": ["gjhd-098-fhd-987"] } ], "excludedCandidates": [ { "identifier_typeidentifierType": "service_instance_idserviceInstanceId", "cloud_ownercloudOwner": "", "identifiers": ["gjhd-098-fhd-987"] }, { "identifier_typeidentifierType": "vim_idvimId", "cloud_ownercloudOwner": "vmware", "identifiers": ["NYMDT67"] } ], "requiredCandidates": [ { "identifier_typeidentifierType": "vim_idvimId", "cloud_ownercloudOwner": "amazon", "identifiers": ["TXAUS219"] } ] } ] }, "serviceInfo": { "serviceInstanceId": "d61b2543-5914-4b8f-8e81-81e38575b8ec", "serviceName": "vCPE", "modelInfo": { "modelInvariantId": "vCPE-invariantId", "modelVersionId": "vCPE-versionId", "modelName": "vCPE-model", "modelType": "service", "modelVersion": "1.0", "modelCustomizationName": "vCPE-customeModelName" } }, "licenseInfo": { "licenseDemands": [ { "resourceModuleName": "vGMuxInfra", "serviceResourceId": "vGMuxInfra-xx", "resourceModelInfo": { "modelInvariantId": "vGMuxInfra-modelInvariantId", "modelVersionId": "vGMuxInfra-versionId", "modelName": "vGMuxInfra-model", "modelType": "resource", "modelVersion": "1.0", "modelCustomizationName": "vGMuxInfra-customeModelName" }, "existingLicenses": { "entitlementPoolUUID": ["87257b49-9602-4ca1-9817-094e52bc873b", "43257b49-9602-4fe5-9337-094e52bc9435"], "licenseKeyGroupUUID": ["87257b49-9602-4ca1-9817-094e52bc873b", "43257b49-9602-4fe5-9337-094e52bc9435"] } } ] } } |
Synchronous Response Example
...
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "transactionId": "xxx-xxx-xxxx", "requestId": "yyy-yyy-yyyy", "requestStatus": "completedaccepted", "statusMessage": "Success!" } |
Asynchronous Response Example
...
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "transactionId": "xxx-xxx-xxxx", "requestId": "yyy-yyy-yyyy", "requestStatus": "completed", "statusMessage": "Success!", "solutions": { "placementSolutions": [ [ { "resourceModuleName": "vGMuxInfra", "serviceResourceId": "some_resource_idsomeResourceId", "solution": { "identifier_typeidentifierType": "service_instance_idserviceInstanceId", "identifiers": ["gjhd-098-fhd-987"] }, "assignmentInfo": [ { "key": "cloudOwner", "value": "amazon" }, { "key": "vnfHostName", "value": "ahr344gh" }, { "key": "isRehome", "value": "False" }, { "key": "cloud_region_idcloudRegionId", "value": "1ac71fb8-ad43-4e16-9459-c3f372b8236d" } ] }, { "resourceModuleName": "vG", "serviceResourceId": "some_resource_idsomeResourceId", "solution": { "identifier_typeidentifierType": "cloud_region_idcloudRegionId", "cloud_ownercloudOwner": "amazon", "identifiers": ["gjhd-098-fhd-987"] }, "assignmentInfo": [ { "key": "cloudOwner", "value": "amazon" }, { "key": "cloud_region_idcloudRegionId", "value": "1ac71fb8-ad43-4e16-9459-c3f372b8236d" } ] } ] ], "licenseSolutions": [ { "resourceModuleName": "vGMuxInfra", "serviceResourceId": "some_resource_idsomeResourceId", "entitlementPoolUUID": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "834fc71fb8-ad43-4fh7-9459-c3f372b8236f"], "licenseKeyGroupUUID": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "834fc71fb8-ad43-4fh7-9459-c3f372b8236f"], "entitlementPoolInvariantUUID": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "834fc71fb8-ad43-4fh7-9459-c3f372b8236f"], "licenseKeyGroupInvariantUUID": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "834fc71fb8-ad43-4fh7-9459-c3f372b8236f"] } ] } } |
Optimization Query Policies
To enable service-agnostic API for the OOF/HAS application, the requestParameters object is modeled as JSON blob. An OOF/HAS client is expected to send service-specific and customer-specific information in a JSON format. The API allows a client to define any object structure in a JSON blob; however, the naming conventions used in the JSON blob must be the same as defined in a service model or customer order. Which information of a JSON blob is relevant for a service and where the information is located in the JSON blob should be captured through query policies. The location of an object in a JSON blob can be specified using an xpath with dot notations as shown in the following example. These optimization query policies can be configured by either a service provider or a client.
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{
"service": "optimizationQueryPolicy",
"policyName": "oofBeijing.queryPolicy_vCPE",
"description": "Optimization query policy for vCPE",
"templateVersion": "0.0.1",
"version": "oofBeijing",
"priority": "3",
"riskType": "test",
"riskLevel": "2",
"guard": "False",
"content": {
"queryProperties": [
{"attribute":"locationId", "value": "orderInfo.customerLocation"},
{"attribute":"id", "value": "orderInfo.vpnInfo"},
{"attribute":"upstreamBW", "value": "orderInfo,vpnInfo"}
],
"policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "vG"],
"type": "optimizationQueryPolicy"
}
} |
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{
"orderInfo": {
"customerLocation": {
"latitude": "30.98",
"longitude": "34.23",
"locationId": "NJBD34"
},
"vpnInfo": {
[
"id": 200,
"upsteamBW": "10Gbps",
"downstreamBW": "100Gbps"
],
[
"id": 200,
"upsteamBW": "10Gbps",
"downstreamBW": "100Gbps"
]
}
}
} |
OOF/HAS API document (pdf format)
...