...
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. |
PlacementDemand Object
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 ObjectObjects | The existing placement information of a resource. | |
excludedCandidates | N | 1..N | List of Candidates ObjectObjects | Candidates that need to be excluded from solutions. | |
requiredCandidates | N | 1..N | List of Candidates ObjectObjects | Candidates that must be included in solutions. |
...
SubscriberInfo Object
Attribute | Required? | Cardinality | Content | Values | Description |
---|
globalSubscriberId | Y | 1 | String |
A model invariant Id as defined in a service model.
An ID of a subscriber. | |||
subscriberName | Y | 1. | String |
A unique model Id as defined in a service model.
modelType
N
The name of a subscriber. If the name is not known, the value must be 'unknown'. | |||
subscriberCommonSiteId | N | 1 | String |
A model name as defined in a service model.
Id representing a subscriber location. |
ModelMetaData Object
Attribute | Required? | Cardinality | Content | Values | Description |
---|---|---|---|---|---|
modelInvariantId | Y | 1 | String | A model type invariant Id as defined in a service model. | |
modelVersionmodelVersionId | NY | 1 | String | A unique model version Id as defined in a service model. | |
modelCustomizationNamemodelName | N | 1 | String | A model customization name as defined in a service model. |
Candidates Object
identifierType
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. |
Candidates Object
Attribute | Required? | Cardinality | Content | Values | Description |
---|---|---|---|---|---|
identifierType | Y | 1 | String | serviceInstanceId, vnfName, cloudRegionId, vimId | The type of a candidate. |
identifiers | Y | 1..N | List of Strings | A list of identifiers. |
...
cloudOwner | AttributeC | Required?1 | Cardinality | Content | Values | String | The name of a cloud owner. Only required if identifierType is cloud_region_id. |
---|
ServiceInfo Object
Attribute | Required? | Cardinality | Content | Values | Description |
---|---|---|---|---|---|
serviceInstanceId | Y | 1 | String | A service instance id associated with a request. | |
serviceModelInfomodelInfo | Y | 1 | ModelMetaData Object | A list of identifiers. | |
serviceName | Y | 1 | String | The name of a service. |
LicenseInfo Object
Attribute | Required? | Cardinality | Content | Values | Description |
---|---|---|---|---|---|
licenseDemands | Y | 1..N | List of LicenseDemands Object | A list of resources for license selection. |
...
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" }, "placementDemandssubscriberInfo": [ {"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" } }, { "existingCandidatesresourceModuleName": { "identifierType"vG", "serviceResourceId": "service_instance_id71d563e8-e714-4393-8f99-cc480144a05e", "identifiers "tenantId": ["87257b49-9602-4ca1-9817-094e52bc873b"] }vG-tenant", "excludedCandidatesresourceModelInfo": { "identifierType "modelInvariantId": "service_instance_idvG-modelInvariantId", "identifiers "modelVersionId": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d"] },vG-versionId", "requiredCandidatesmodelName": { "identifierTypevG-model": "service_instance_id", "identifiers": ["7e6c3e57-62cd-44f6-aa88-d0896998f7ec"] }, } "modelType": "resource", { "resourceModuleNamemodelVersion": "vG1.0", "serviceResourceIdmodelCustomizationName": "71d563e8-e714-4393-8f99-cc480144a05e",vG-customeModelName" "tenantId": "vG-tenant", }, "resourceModelInfoexistingCandidates": {[ { "modelInvariantIdidentifierType": "vG-modelInvariantIdserviceInstanceId", "modelVersionIdcloudOwner": "vG-versionId", "modelNameidentifiers": ["vG-model", gjhd-098-fhd-987"] } ], "excludedCandidates": [ { "modelTypeidentifierType": "resourceserviceInstanceId", "modelVersioncloudOwner": "1.0", "modelCustomizationNameidentifiers": ["vG-customeModelName" gjhd-098-fhd-987"] }, // "existingCandidates": { "identifierType { "identifierType": "vimId", "cloudOwner": "service_instance_idvmware", "identifiers": ["21d5f3e8-e714-4383-8f99-cc480144505aNYMDT67"] }, ], // "excludedCandidatesrequiredCandidates": [ { "identifierType": "service_instance_idvimId", "identifierscloudOwner": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d"] }, "amazon", // "requiredCandidates": { "identifierType": "cloud_region_id", " "identifiers": ["TXAUS219"] } ] } "existingCandidates] }, "serviceInfo": [{ { "identifier_type"serviceInstanceId": "service_instance_idd61b2543-5914-4b8f-8e81-81e38575b8ec", "cloud_owner"serviceName": "vCPE", "modelInfo": "identifiers{ "modelInvariantId": ["gjhd-098-fhd-987"] }vCPE-invariantId", ] "excludedCandidatesmodelVersionId": [ { "identifier_type "vCPE-versionId", "modelName": "service_instance_idvCPE-model", "cloud_owner "modelType": "service", "identifiers "modelVersion": ["gjhd-098-fhd-987"] }, { "identifier_type": "vim_id", "cloud_owner": "vmware", "identifiers": ["NYMDT67"] } ] "requiredCandidates": [ { "identifier_type": "vim_id", "cloud_owner": "amazon", "identifiers": ["TXAUS219"] } ] } ] }, "serviceInfo": { "serviceInstanceId": "d61b2543-5914-4b8f-8e81-81e38575b8ec"1.0", "modelCustomizationName": "vCPE-customeModelName" } }, "licenseInfo": { "licenseDemands": [ { "resourceModuleName": "vGMuxInfra", "serviceResourceId": "vGMuxInfra-xx", "resourceModelInfo": { "modelInvariantId": "vGMuxInfra-modelInvariantId", "serviceModelInfo": { "modelInvariantIdmodelVersionId": "vCPEvGMuxInfra-invariantIdversionId", "modelVersionId "modelName": "vCPEvGMuxInfra-versionIdmodel", "modelName": "vCPE-model", "modelType": "serviceresource", "modelVersion": "1.0", "modelCustomizationName": "vCPEvGMuxInfra-customeModelName" } }, "licenseDemands": [ }, { "resourceModuleNameexistingLicenses": "vGMuxInfra",{ "serviceResourceId": "vGMuxInfra-xx", "tenantIdentitlementPoolUUID": ["vGMuxInfra-tenant87257b49-9602-4ca1-9817-094e52bc873b", "43257b49-9602-4fe5-9337-094e52bc9435"], "resourceModelInfo": { "modelInvariantIdlicenseKeyGroupUUID": "vGMuxInfra-modelInvariantId",["87257b49-9602-4ca1-9817-094e52bc873b", "43257b49-9602-4fe5-9337-094e52bc9435"] "modelVersionId": "vGMuxInfra-versionId", } "modelName": "vGMuxInfra-model", } ] } "modelType} |
Synchronous Response Example
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "transactionId": "resourcexxx-xxx-xxxx", "modelVersion"requestId": "1.0yyy-yyy-yyyy", "requestStatus": "accepted", "modelCustomizationNamestatusMessage": "vGMuxInfra-customeModelName" }" } |
Asynchronous Response Example
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "transactionId": "xxx-xxx-xxxx", "existingLicensesrequestId": {"yyy-yyy-yyyy", "requestStatus": "completed", "entitlementPoolUUIDstatusMessage": ["87257b49-9602-4ca1-9817-094e52bc873b", "43257b49-9602-4fe5-9337-094e52bc9435"], "solutions": { "licenseKeyGroupUUIDplacementSolutions": ["87257b49-9602-4ca1-9817-094e52bc873b", "43257b49-9602-4fe5-9337-094e52bc9435"] [ }{ } ] } |
Synchronous Response Example
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "transactionId"resourceModuleName": "xxx-xxx-xxxxvGMuxInfra", "requestId "serviceResourceId": "yyy-yyy-yyyy""someResourceId", "requestStatussolution": "completed",{ "statusMessage": "Success!" } |
Asynchronous Response Example
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "transactionIdidentifierType": "xxx-xxx-xxxxserviceInstanceId", "requestIdidentifiers": ["yyygjhd-098-yyyfhd-yyyy987", "requestStatus": "completed"] }, "statusMessage": "Success!", "solutions": { "placementSolutionsassignmentInfo": [ { { "key": "cloudOwner", "resourceModuleNamevalue": "vGMuxInfraamazon" }, { "serviceResourceIdkey": "some_resource_idvnfHostName", "solutionvalue": { "ahr344gh" }, { "key": "isRehome", "identifierTypevalue": "service_instance_id",False" }, "identifier{ "key": "cloudRegionId", "value": "1ac71fb8-ad43-4e16-9459-c3f372b8236d" } ] "assignmentInfo": [ }, { "key": "cloudOwner", "value "resourceModuleName": "amazonvG" }, { "keyserviceResourceId": "vnfHostNamesomeResourceId", "value": "ahr344gh" }, "solution": { { "keyidentifierType": "isRehomecloudRegionId", "valuecloudOwner": "Falseamazon" }, "identifiers": ["gjhd-098-fhd-987"] }, { "key": "cloud_region_id", "valueassignmentInfo": "1ac71fb8-ad43-4e16-9459-c3f372b8236d" }[ ] { "key": "cloudOwner", "value": "amazon" }, { { "resourceModuleNamekey": "vGcloudRegionId", "value": "1ac71fb8-ad43-4e16-9459-c3f372b8236d" } ] } "serviceResourceId": "some_resource_id", ] ], "solutionlicenseSolutions": [ { "identifierTyperesourceModuleName": "service_instance_idvGMuxInfra", "identifierserviceResourceId": "someResourceId", "entitlementPoolUUID": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d" }, "834fc71fb8-ad43-4fh7-9459-c3f372b8236f"], "assignmentInfolicenseKeyGroupUUID": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "834fc71fb8-ad43-4fh7-9459-c3f372b8236f"], { "keyentitlementPoolInvariantUUID": "cloudOwner["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "value": "amazon" }, 834fc71fb8-ad43-4fh7-9459-c3f372b8236f"], { "keylicenseKeyGroupInvariantUUID": "cloud_region_id["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "value": "1ac71fb8834fc71fb8-ad43-4e164fh7-9459-c3f372b8236d" } c3f372b8236f"] } ], } "licenseSolutions": [} |
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", "resourceModuleNameip":, "vGMuxInfra", "vG"], "serviceResourceIdtype": "some_resource_idoptimizationQueryPolicy", } } |
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "orderInfo": { "customerLocation": { "entitlementPoolUUIDlatitude": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d"30.98", "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"] } ] "longitude": "34.23", "locationId": "NJBD34" }, "vpnInfo": { [ "id": 200, "upsteamBW": "10Gbps", "downstreamBW": "100Gbps" ], [ "id": 200, "upsteamBW": "10Gbps", "downstreamBW": "100Gbps" ] } } } |
OOF/HAS API document (pdf format)
...