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.

...

modelType

Attribute

N

Required?

1

CardinalityContentValuesDescription

identifierType

Y

String


A model type as defined in a service model.

modelVersion

N

1

String

service_instance_id, vnf_name, cloud_region_id

The type of a candidate.

identifiers

Y

1..N

List of Strings

A list of identifiers.

...


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

AttributeRequired?CardinalityContentValuesDescription

serviceInstanceIdidentifierType

Y

1

String

A service instance id associated with a request.

serviceModelInfoserviceInstanceId, vnfName, cloudRegionId, vimId

The type of a candidate.

identifiers

Y

1ModelMetaData Object..N

List of Strings


A list of identifiers.

...

cloudOwner
AttributeRequired?CardinalityContentValuesDescription

licenseDemands

Y

1..N

List of LicenseDemands Object

A list of resources for license selection.

...

C1String
The name of a cloud owner. Only required if identifierType is cloud_region_id.

ServiceInfo Object

AttributeRequired?CardinalityContentValuesDescription
resourceModuleName

serviceInstanceId

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.

resourceModelInfo

service instance id associated with a request.

modelInfo

Y

1

ModelMetaData Object

Resource model information as defined in a service model

A list of identifiers.

existingLicenses
serviceName
N
Y1

LicenseModel Object

Existing license information assigned to a resource.

...

String
The name of a service.

LicenseInfo Object

AttributeRequired?CardinalityContentValuesDescription
entitlementPoolUUID

licenseDemands

Y

1..N

List of

Strings

Entitlement pool UUIDs associated with a resource.

licenseKeyGroupUUID

Y

1..N

List of Strings

License key groups associated with a resource.

Synchronous Response Body

LicenseDemands Object


A list of resources for license selection.

LicenseDemands Object

AttributeRequired?CardinalityContentValuesDescription
requestId

resourceModuleName

Y

1

UUID/

String


A

unique Id for an ONAP transaction

resource name as defined in a service model.

transactionId

serviceResourceId

Y

1

UUID/

String


A unique

ID to track multiple requests associated

resource Id with a

transaction

local scope between client and OOF.

statusMessage

resourceModelInfo

NY

Y

1

String

Reasoning if a requestStatus is failure.

requestStatus

ModelMetaData Object


Resource model information as defined in a service model.

existingLicenses

N

1

String

success, failure

The status of a request.

Asynchronous Response Header

Header Name

LicenseModel Object


Existing license information assigned to a resource.

LicenseModel Object

AttributeRequired?CardinalityContentValuesDescription

Accept

entitlementPoolUUID

Y

1..N

Determines the format of the body of the response. Valid value is “application/json”

Authorization

Y

Supplies Basic Authentication credentials for the request. If the Authorization header is missing, then an HTTP 400 Invalid Request response is returned. If the string supplied is invalid, then an HTTP 401 Unauthorized response is returned.

Content-Type

Y

Determines the format of the request content. Only application/json is supported.

AttributeNAttribute and respecrtive value that a client has sent in the callbackHeader field of a requerst.

Content-Length

N

Number of bytes in the body of the request. Note that content length is limited to 1 MB.

...

List of Strings


Entitlement pool UUIDs associated with a resource.

licenseKeyGroupUUID

Y

1..N

List of Strings


License key groups associated with a resource.

Synchronous Response Body

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

failure

failed.

requestStatus

Y

1

String

success

accepted,

failure, pending

failed

The status of a request.

solutions

Y

1

Solution Object

Solutions related to a request.

Solution Object

...

Asynchronous Response Header

Header NameRequired?Description
placementSolutions1..

Accept

Y

N

List of ComprehensiveSolution Object

A list of placement solutions.

licenseSolutions

Y

1..N

List of LicenseSolution Object

A list of license solutions

ComprehensiveSolution Object

...

Y

...

1..N

...

List of PlacementSolution Object

...

A list of placement solutions.

...

Determines the format of the body of the response. Valid value is “application/json”

Authorization

Y

Supplies Basic Authentication credentials for the request. If the Authorization header is missing, then an HTTP 400 Invalid Request response is returned. If the string supplied is invalid, then an HTTP 401 Unauthorized response is returned.

Content-Type

Y

Determines the format of the request content. Only application/json is supported.

AttributeNAttribute and respecrtive value that a client has sent in the callbackHeader field of a requerst.

Content-Length

N

Number of bytes in the body of the request. Note that content length is limited to 1 MB.

Asynchronous Response Body

AttributeRequired?CardinalityContentValuesDescription
resourceModuleName

requestId

Y

1

String

The name of a resource as defined in the service model.

serviceResourceId

UUID/String


A unique Id for an ONAP transaction.

transactionId

Y

1

UUID/String


A

resource Id as defined in a service model.

identifierType

Y

unique ID to track multiple requests associated with a transaction.

statusMessage

N

1

String

service_instance_id, cloud_region_id

The type of a candidate.

identifier

Reasoning if requestStatus is failed.

requestStatus

Y

1

String

The id

completed, failed, pending

The status of a

candidate

request.

assignmentInfo

solutions

N

Y

1

..N

List of AssignmentInfo object

Additional information

Solution Object


Solutions related to a

candidate

request.

...

Solution Object

AttributeRequired?CardinalityContentValuesDescription

keyplacementSolutions

Y

1

String

An attribute name.

value..N

List of ComprehensiveSolution Object


A list of placement solutions.

licenseSolutions

Y

1

String

An attribute value.

...

..N

List of LicenseSolution Object


A list of license solutions

ComprehensiveSolution Object

AttributeRequired?CardinalityContentValuesDescription
resourceModuleName
-

Y

1

String

A resource name as defined in a service

..N

List of PlacementSolution Object


A list of placement solutions.

PlacementSolution Object

AttributeRequired?CardinalityContentValuesDescription

resourceModuleName

Y

1

String


The name of a resource as defined in the service model.

serviceResourceId

Y

1

String


A resource Id as defined in a service model.

entitlementPoolUUIDsolution

Y

1..N

List of String

A list of entitlementPoolUUIDs.

licenseKeyGroupUUID

Y

Candidates Object


The placement solution

assignmentInfo

N

1..N

List of String

A list of licenseKeyGroupUUID.

entitlementPoolInvariantUUIDAssignmentInfo object


Additional information related to a candidate.

AssignmentInfo Object

AttributeRequired?CardinalityContentValuesDescription

key

Y

1

..N

List of

String

A list of entitlementPoolInvariantUUID

An attribute name.

licenseKeyGroupInvariantUUID

value

Y

1

..N

List of

String

A list of licenseKeyGroupInvariantUUID

An attribute value.

HTTP Response Code

...

201

...

Created

...

An optimization solution is found.

...

202

...

Accepted

...

An optimization request is accepted.

...

400

...

Bad request

...

Bad request.

...

401

...

Unauthorized

...

Request body is not compliant with the API definition.

...

404

...

Not found

...

The server cannot find the requested URI.

...

405

...

Method not found

...

The requested method is not supported by a server.

...

500

...

Internal server error

...

The server encountered an internal server error or timed out.

Request Example

...

languagejs
themeEclipse
titleSO-OOF/HAS Request Example
linenumberstrue
collapsetrue

...

LicenseSolutions Object

AttributeRequired?CardinalityContentValuesDescription

resourceModuleName

Y

1

String


A resource name as defined in a service.

serviceResourceId

Y

1

String


A resource Id as defined in a service.

entitlementPoolUUID

Y

1..N

List of String


A list of entitlementPoolUUIDs.

licenseKeyGroupUUID

Y

1..N

List of String


A list of licenseKeyGroupUUID.

entitlementPoolInvariantUUID

Y

1..N

List of String


A list of entitlementPoolInvariantUUID .

licenseKeyGroupInvariantUUID

Y

1..N

List of String


A list of licenseKeyGroupInvariantUUID .

HTTP Response Code

HTTP CodeResponse PhraseDescription

201

Created

An optimization solution is found.

202

Accepted

An optimization request is accepted.

400

Bad request

Bad request.

401

Unauthorized

Request body is not compliant with the API definition.

404

Not found

The server cannot find the requested URI.

405

Method not found

The requested method is not supported by a server.

500

Internal server error

The server encountered an internal server error or timed out.

520Solver errorRequested number of solutions cannot be found.

Request Example


Code Block
languagejs
themeEclipse
titleSO-OOF/HAS Request Example
linenumberstrue
collapsetrue
{
  "requestInfo": {
    "transactionId": "xxx-xxx-xxxx",
    "optimizersrequestId": ["placementyyy-yyy-yyyy"],
    "timeoutcallbackUrl": 600"https://wiki.onap.org:5000/callbackUrl/",
  },  "sourceId": "placementInfoSO":,
 {   	"requestParametersrequestType": { "customerLatitude": 32.89748, "customerLongitudecreate",
    "numSolutions": -97.0404431,
    "customerNameoptimizers": ["xyzplacement"],
},    	"placementDemandstimeout": [600
  },
 	{    "placementInfo": {
  		"resourceModuleNamerequestParameters": { "vGMuxInfracustomerLatitude": 32.89748, "customerLongitude":      		"serviceResourceId-97.040443, "customerName": "vGMuxInfra-xxxyz" },
      		"tenantId"subscriberInfo": {"globalSubscriberId": "vGMuxInfraxxx-xx-tenantxxx",   "subscriberName": "subscriber_x"},
   		"resourceModelInfoplacementDemands": [
  {  	{
      		"modelInvariantIdresourceModuleName": "vGMuxInfra-modelInvariantId",
 
      		"modelVersionIdserviceResourceId": "vGMuxInfra-versionIdxx",
        		"modelNametenantId": "vGMuxInfra-modeltenant",
        		"modelTyperesourceModelInfo": "resource",{
        		"modelVersionmodelInvariantId": "1.0vGMuxInfra-modelInvariantId",
        		"modelCustomizationNamemodelVersionId": "vGMuxInfra-customeModelNameversionId",
        		}"modelName": "vGMuxInfra-model",
        		"existingCandidatesmodelType": { "identifierType": "service_instance_id", "identifiersresource",
        		"modelVersion": ["87257b49-9602-4ca1-9817-094e52bc873b"] },"1.0",
        		"excludedCandidatesmodelCustomizationName": { "identifierType "vGMuxInfra-customeModelName"
      		}
    	},
    	{
      		"resourceModuleName": "service_instance_idvG",
"identifiers      		"serviceResourceId": ["1ac71fb871d563e8-ad43e714-4e164393-94598f99-c3f372b8236dcc480144a05e"] },
      		"requiredCandidatestenantId": { "identifierType": "service_instance_id", "identifiers": ["7e6c3e57-62cd-44f6-aa88-d0896998f7ec"] }"vG-tenant",
      	},
	"resourceModelInfo": {
   	{       		"resourceModuleNamemodelInvariantId": "vG-modelInvariantId",
        		"serviceResourceIdmodelVersionId": "71d563e8-e714-4393-8f99-cc480144a05evG-versionId",
        		"tenantIdmodelName": "vG-tenantmodel",
        		"resourceModelInfomodelType": {"resource",
        		"modelInvariantIdmodelVersion": "vG-modelInvariantId1.0",
        		"modelVersionIdmodelCustomizationName": "vG-versionIdcustomeModelName",
      		},
 			"modelNameexistingCandidates": "vG-model",[ 
       				{
					"modelTypeidentifierType": "resourceserviceInstanceId", 
       					"modelVersioncloudOwner": "1.0"", 
       					"modelCustomizationNameidentifiers": ["vG-customeModelName"
 gjhd-098-fhd-987"]
				}
    		}],
      			"existingCandidatesexcludedCandidates": [ 
				{
					"identifierType": "service_instance_idserviceInstanceId", "identifiers
					"cloudOwner": ["21d5f3e8-e714-4383-8f99-cc480144505a"] },
      		"excludedCandidates": { "identifierType": "service_instance_id", "", 
					"identifiers": ["gjhd-098-fhd-987"]
				},
				{
					"identifierType": "vimId", 
					"cloudOwner": "vmware", 
					"identifiers": ["1ac71fb8-ad43-4e16-9459-c3f372b8236dNYMDT67"]
				},
    		],
 			"requiredCandidates": [ 
				{
					"identifierType": "vimId", 
					"cloudOwner": "cloud_region_idamazon", 
					"identifiers": ["TXAUS219"]
				}
    		]
		}
  	]
  },
  "serviceInfo": {
    "serviceInstanceId": "d61b2543-5914-4b8f-8e81-81e38575b8ec",
	"serviceName": "vCPE",
    "serviceModelInfomodelInfo": {
      "modelInvariantId": "vCPE-invariantId",
      "modelVersionId": "vCPE-versionId",
      "modelName": "vCPE-model",
      "modelType": "service",
      "modelVersion": "1.0",
      "modelCustomizationName": "vCPE-customeModelName"
    }
  },
  "licenseInfo": {
      "licenseDemands": [
        {
          "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"
          },
          "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
languagejs
themeEclipse
titleSO-OOF/HAS Response Example
linenumberstrue
collapsetrue
{
  "transactionId": "xxx-xxx-xxxx",
  "requestId": "yyy-yyy-yyyy",
  "requestStatus": "completedaccepted",
  "statusMessage": "Success!"
}

Asynchronous Response Example

...

Code Block
languagejs
themeEclipse
titleSO-OOF/HAS Response Example
linenumberstrue
collapsetrue
{
  "transactionId": "xxx-xxx-xxxx",
  "requestId": "yyy-yyy-yyyy",
  "requestStatus": "completed",
  "statusMessage": "Success!",
  "solutions": {
    "placementSolutions": [
     [
      {
        "resourceModuleName": "vGMuxInfra",
        "serviceResourceId": "some_resource_idsomeResourceId",
		"solution": {
        	"identifierType": "service_instance_idserviceInstanceId", 
       "identifier			"identifiers": ["1ac71fb8gjhd-ad43098-4e16fhd-9459-c3f372b8236d"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_id",
        "identifierType": "cloud_region_id",
        "identifier": "2ac71fb8-ad43-4e16-9459-c3f372b8236d",
        "assignmentInfo": [
          { "key": "cloudOwner", "value": "amazon" },
   c3f372b8236d" }
        ]
      },
      {
        "resourceModuleName": "vG",
        "serviceResourceId": "someResourceId",
        "solution": {
        	"identifierType": "cloudRegionId", 
			"cloudOwner": "amazon", 
			"identifiers": ["gjhd-098-fhd-987"]
		},
        "assignmentInfo": [
          { "key": "cloudOwner", "value": "amazon" },
          { "key": "cloudRegionId", "value": "1ac71fb8-ad43-4e16-9459-c3f372b8236d" }
        ]
      }
     ]
    ],
    "licenseSolutions": [
      {
        "resourceModuleName": "vGMuxInfra",
        "serviceResourceId": "someResourceId",
        "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
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": [
      { "keyattribute": "cloud_region_idlocationId", "value": "1ac71fb8-ad43-4e16-9459-c3f372b8236d" }
     orderInfo.customerLocation"},
  ]    {"attribute":"id",   }"value": "orderInfo.vpnInfo"},
    ],    {"attribute":"upstreamBW", "licenseSolutionsvalue": ["orderInfo,vpnInfo"}
    ],
 {         "resourceModuleName"policyScope": ["vGMuxInfravCPE",         "serviceResourceId": "some_resource_id",
"US", "INTERNATIONAL", "ip", "vGMuxInfra", "vG"],
       "entitlementPoolUUIDtype": ["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"]
      }
    ]
  "optimizationQueryPolicy"
  }
}
Code Block
languagejs
themeEclipse
titlerequestParameter JSON blob Example
linenumberstrue
collapsetrue
{
  	"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)

...