Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

AttributeRequired?CardinalityContentValuesDescription

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.

callbackHeaderN1JSON 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

AttributeRequired?CardinalityContentValuesDescription

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.

subscriberInfoN1SubscriberInfo Object
The information of a service subscriber.

PlacementDemand Object

AttributeRequired?CardinalityContentValuesDescription

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

AttributeRequired?CardinalityContentValuesDescription
modelInvariantId

globalSubscriberId

Y

1

String

A model invariant Id as defined in a service model.

modelVersionId

An ID of a subscriber.

subscriberName

Y

1.

String

A unique model Id as defined in a service model.

modelName

modelType

N


The name of a subscriber. If the name is not known, the value must be 'unknown'.

subscriberCommonSiteIdN1String

A model name as defined in a service model.


Id representing a subscriber location.

ModelMetaData Object

AttributeRequired?CardinalityContentValuesDescription

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

AttributeRequired?CardinalityContentValuesDescription

identifierType

Y

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

service_instance_id, vnf_name, cloud_region_id

A model customization name as defined in a service model.

Candidates Object

AttributeRequired?CardinalityContentValuesDescription

identifierType

Y

1

String

serviceInstanceId, vnfName, cloudRegionId, vimId

The type of a candidate.

identifiers

Y

1..N

List of Strings


A list of identifiers.

...

AttributeRequired?
cloudOwnerC1CardinalityContentValuesString
The name of a cloud owner. Only required if identifierType is cloud_region_id.

ServiceInfo Object

AttributeRequired?CardinalityContentValuesDescription

serviceInstanceId

Y

1

String


A service instance id associated with a request.

serviceModelInfomodelInfo

Y

1

ModelMetaData Object


A list of identifiers.

serviceNameY1String
The name of a service.

LicenseInfo Object

AttributeRequired?CardinalityContentValuesDescription

licenseDemands

Y

1..N

List of LicenseDemands Object


A list of resources for license selection.

...

AttributeRequired?CardinalityContentValuesDescription

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

...

AttributeRequired?CardinalityContentValuesDescription

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
languagejs
themeEclipse
titleSO-OOF/HAS Request Example
linenumberstrue
collapsetrue
{
  "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
languagejs
themeEclipse
titleSO-OOF/HAS Response Example
linenumberstrue
collapsetrue
{
  "transactionId": "resourcexxx-xxx-xxxx",
        "modelVersion"requestId": "1.0yyy-yyy-yyyy",
     "requestStatus": "accepted",
  "modelCustomizationNamestatusMessage": "vGMuxInfra-customeModelName"
      }"
}

Asynchronous Response Example


Code Block
languagejs
themeEclipse
titleSO-OOF/HAS Response Example
linenumberstrue
collapsetrue
{
  "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
languagejs
themeEclipse
titleSO-OOF/HAS Response Example
linenumberstrue
collapsetrue
{
  "transactionId"resourceModuleName": "xxx-xxx-xxxxvGMuxInfra",
  "requestId      "serviceResourceId": "yyy-yyy-yyyy""someResourceId",
  		"requestStatussolution": "completed",{
   "statusMessage": "Success!" }

Asynchronous Response Example

Code Block
languagejs
themeEclipse
titleSO-OOF/HAS Response Example
linenumberstrue
collapsetrue
{   	"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
languagejs
themeEclipse
titleOptimization Query Policy Example
linenumberstrue
collapsetrue
{
  "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
languagejs
themeEclipse
titlerequestParameter JSON blob Example
linenumberstrue
collapsetrue
{
  	"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)

...