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

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

subscriberCommonSiteIdN1String
Id representing a subscriber location.

ModelMetaData Object

AttributeRequired?CardinalityContentValuesDescription

modelInvariantId

Y

A model name as defined in a service model.

modelType

N

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

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

AttributeRequired?CardinalityContentValuesDescription

identifierType

Y

1

String


A model customization name as defined in a service model.

Candidates Object

AttributeRequired?CardinalityContentValuesDescription

identifierType

Y

1

String

serviceInstanceId, vnfName, cloudRegionId, vimIdservice_instance_id, vnf_name, cloud_region_id

The type of a candidate.

identifiers

Y

1..N

List of Strings


A list of identifiers.

...

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

ServiceInfo Object

AttributeRequired?CardinalityContentValuesCardinalityContentValuesDescription

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": { "identifierType": "service_instance_id", "identifiers": ["7e6c3e57-62cd-44f6-aa88-d0896998f7ec"] }
    	}vG-model",
    	{
      		"resourceModuleNamemodelType": "vGresource",
        		"serviceResourceIdmodelVersion": "71d563e8-e714-4393-8f99-cc480144a05e1.0",
        		"tenantIdmodelCustomizationName": "vG-tenantcustomeModelName",
      		"resourceModelInfo},
			"existingCandidates": [ {
        
				{
					"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": "service_instance_idvimId", 
					"cloudOwner": "vmware", 
					"identifiers": ["21d5f3e8-e714-4383-8f99-cc480144505aNYMDT67"] 
				},
      	//		],
			"excludedCandidatesrequiredCandidates": [ { 
				{
					"identifierType": "service_instance_idvimId", "identifiers
					"cloudOwner": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d"] },
      	//	"requiredCandidates": { "identifierType": "cloud_region_id", ""amazon", 
					"identifiers": ["TXAUS219"] }
			
			"existingCandidates": [ 
				{
					"identifier_type": "service_instance_id", 
					"cloud_owner": "", 
					"identifiers": ["gjhd-098-fhd-987"]
				}
    		]
			"excludedCandidates": [ 
				{
					"identifier_type": "service_instance_id", 
					"cloud_owner": "", 
					"identifiers": ["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",
    "serviceModelInfo": {
      "modelInvariantId": "vCPE-invariantId	}
    		]
		}
  	]
  },
  "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": "vCPEvGMuxInfra-versionId",
            "modelName": "vCPEvGMuxInfra-model",
            "modelType": "serviceresource",
            "modelVersion": "1.0",
            "modelCustomizationName": "vCPEvGMuxInfra-customeModelName"
    }
  },
  "licenseDemands": [  },
    {
      "resourceModuleNameexistingLicenses": "vGMuxInfra",{
      "serviceResourceId": "vGMuxInfra-xx",
     "entitlementPoolUUID": "tenantId": "vGMuxInfra-tenant"["87257b49-9602-4ca1-9817-094e52bc873b", "43257b49-9602-4fe5-9337-094e52bc9435"],
      "resourceModelInfo": {
        "modelInvariantIdlicenseKeyGroupUUID": ["vGMuxInfra-modelInvariantId87257b49-9602-4ca1-9817-094e52bc873b",
        "modelVersionId": "vGMuxInfra-versionId","43257b49-9602-4fe5-9337-094e52bc9435"]
        "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": "completed",
  "statusMessage": "Success!"
}

Asynchronous Response Example

}
}

Synchronous Response Example


Code Block
languagejs
themeEclipse
titleSO-OOF/HAS Response Example
linenumberstrue
collapsetrue
{
  "transactionId": "xxx-xxx-xxxx",
  "requestId": "yyy-yyy-yyyy",
  "requestStatus": "accepted",
  "statusMessage": ""
}

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": "",
  "solutions": {
    "placementSolutions": [
     [
      {
        "resourceModuleName": "vGMuxInfra",
        "serviceResourceId": "someResourceId",
		"solution": {
        	"identifierType": "serviceInstanceId", 
			"identifiers": ["gjhd-098-fhd-987"]
		},
        "assignmentInfo": [
          { "key": "cloudOwner", "value": "amazon" },
          { "key": "vnfHostName", "value": "ahr344gh" },
  
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{ "key": "some_resource_idisRehome",
		 "solutionvalue": {
 "False" },
          { 	"identifierTypekey": "service_instance_idcloudRegionId",
        	"identifiervalue": "1ac71fb8-ad43-4e16-9459-c3f372b8236d"
		 }
        "assignmentInfo": [
]
      },
      {
  "key": "cloudOwner",      "valueresourceModuleName": "amazonvG" },
          { "keyserviceResourceId": "vnfHostNamesomeResourceId",
        "valuesolution": "ahr344gh" },{
          { "key	"identifierType": "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": "1ac71fb8-ad43-4e16-9459-c3f372b8236d"
		}
someResourceId",
        "assignmentInfoentitlementPoolUUID": [
          { "key": "cloudOwner"1ac71fb8-ad43-4e16-9459-c3f372b8236d", "value": "amazon" },
   834fc71fb8-ad43-4fh7-9459-c3f372b8236f"],
       { "keylicenseKeyGroupUUID": "cloud_region_id["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "value": "1ac71fb8834fc71fb8-ad43-4e164fh7-9459-c3f372b8236dc3f372b8236f" }],
        ]
      }"entitlementPoolInvariantUUID": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "834fc71fb8-ad43-4fh7-9459-c3f372b8236f"],
    ],
    "licenseSolutionslicenseKeyGroupInvariantUUID": [
      {
        "resourceModuleName": "vGMuxInfra",
        "serviceResourceId": "some_resource_id",
        "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": [
      {"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
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)

...