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.

...

AttributeRequired?CardinalityContentValuesDescription

globalSubscriberId

Y

1

String


An ID of a subscriber.

subscriberName

NY

1.

String


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

subscriberCommonSiteIdN1String
Id representing a subscriber location.

...

AttributeRequired?CardinalityContentValuesDescription

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.

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

...

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" },
    "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": [ 
				{
					"identifierType"identifier_type": "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
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": {
        	"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

The To enable service-agnostic API for the OOF/HAS application, the requestParameters object is of type 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.

...