vCPE Homing Use Case
- 1 vCPE Homing Use Case
- 1.1 vCPE Service Model
- 1.2 Homing Policies and information sources relevant to the policies
- 1.3 Homing Workflow
- 1.4 SO - HAS API (R) - before retrieving homing policies
- 1.4.1 SO - HAS API (R)
- 1.4.2 vCPE Homing Template (JSON)
- 1.4.3 vCPE Homing Template (YAML)
- 1.5 HAS Homing Response
- 1.5.1 State - Done
- 1.5.1.1 vCPE homing response (JSON)
- 1.5.2 State - Error
- 1.5.2.1 HAS Error Response
- 1.5.3 State - Template
- 1.5.3.1 HAS Plan in Template State
- 1.5.4 State - Solving
- 1.5.4.1 HAS Plan in Solving state
- 1.5.1 State - Done
vCPE Homing Use Case
This document describes the Homing Template Specifications for residential vCPE. It is a work in progress and subject to frequent revision.
vCPE Service Model
Homing Policies and information sources relevant to the policies
Homing Workflow
SO - HAS API (R) - before retrieving homing policies
SO - HAS API (R)
requestInfo:
callbackUrl: https://so:5000/callback
numSolutions: 1
optimizer:
- placement
requestId: yyy-yyy-yyyy
sourceId: so
timeout: 600
transactionId: xxx-xxx-xxxx
requestType: new
placementInfo:
orderInfo:
requestParameters:
customerLatitude: 32.897480
customerLongitude: -97.040443
customerName: some_company
demandInfo:
placementDemands:
- resourceName: vGMuxInfra
resourceId: some_resource_id
tenantId: some_tenant_id
resourceModelInfo:
modelId: vGMux_model_id
modelName: ''
modelType: allotted
modelVersion: '2.0'
existingPlacement:
serviceInstanceId: 87257b49-9602-4ca1-9817-094e52bc873b
excludedCandidates:
- candidateType: service
candidates:
- serviceInstanceId: 1ac71fb8-ad43-4e16-9459-c3f372b8236d
requiredCandidates:
- candidateType: service
candidates:
- serviceInstanceId: 7e6c3e57-62cd-44f6-aa88-d0896998f7ec
- resourceName: vG
tenantId: some_tenant_id
resourceId: 71d563e8-e714-4393-8f99-cc480144a05e
resourceModelInfo:
modelId: vG_model_id
modelName: ''
modelType: dedicated
modelVersion: '2.0'
existingPlacement:
serviceInstanceId: 21d5f3e8-e714-4383-8f99-cc480144505a
excludedCandidates:
- candidateType: service
candidates:
- serviceInstanceId: 1ac71fb8-ad43-4e16-9459-c3f372b8236d
requiredCandidates:
- candidateType: cloud
candidates:
- cloud-region-id: TXAUS219
otherInfo:
serviceInstanceId: d61b2543-5914-4b8f-8e81-81e38575b8ec
serviceModelInfo:
serviceName: Residential vCPE
service_id: vcpe_service_id
serviceType: service
serviceVersion: '1.0'
HAS Homing Specification (R') - after retrieving and translating homing policies
vCPE Homing Template (JSON)
{
"homing_template_version": "2017-10-10",
"parameters": {
"service_name": "Residential vCPE",
"service_id": "vcpe_service_id",
"customer_lat": 32.89748,
"customer_long": -97.040443,
"REQUIRED_MEM": 4,
"REQUIRED_DISK": 100
},
"locations": {
"customer_loc": {
"latitude": {
"get_param": "customer_lat"
},
"longitude": {
"get_param": "customer_long"
}
}
},
"demands": {
"vGMuxInfra": [
{
"inventory_provider": "aai",
"inventory_type": "service",
"attributes": {
"equipment_type": "vG_Mux",
"customer_id": "some_company"
},
"excluded_candidates": [
{
"candidate_id": "1ac71fb8-ad43-4e16-9459-c3f372b8236d"
}
],
"existing_placement": [
{
"candidate_id": "21d5f3e8-e714-4383-8f99-cc480144505a"
}
]
}
],
"vG": [
{
"inventory_provider": "aai",
"inventory_type": "cloud"
}
]
},
"constraints": {
"constraint_vgmux_customer": {
"type": "distance_to_location",
"demands": [
"vGMuxInfra"
],
"properties": {
"distance": "< 100 km",
"location": "customer_loc"
}
},
"colocation": {
"type": "zone",
"demands": [
"vGMuxInfra",
"vG"
],
"properties": {
"qualifier": "same",
"category": "region"
}
},
"hpa_constraint": {
"type": "hpa",
"demands": [
"vG"
],
"properties": {
"evaluate": [
{
"flavorLabel": "flavor_label_1",
"flavorProperties": [
{
"hpa-feature": "basicCapabilities",
"hpa-version": "v1",
"architecture": "generic",
"hpa-feature-attributes": [
{
"hpa-attribute-key": "numVirtualCpu",
"hpa-attribute-value": "4",
"operator": "="
},
{
"hpa-attribute-key": "virtualMemSize",
"hpa-attribute-value": "4",
"operator": "=",
"unit": "GB"
}
]
},
{
"hpa-feature": "numa",
"hpa-version": "v1",
"architecture": "generic",
"hpa-feature-attributes": [
{
"hpa-attribute-key": "numaNodes",
"hpa-attribute-value": "2",
"operator": "="
},
{
"hpa-attribute-key": "numaCpu-0",
"hpa-attribute-value": "2",
"operator": "="
},
{
"hpa-attribute-key": "numaCpu-1",
"hpa-attribute-value": "4",
"operator": "="
},
{
"hpa-attribute-key": "numaMem-0",
"hpa-attribute-value": "2",
"operator": "=",
"unit": "GB"
},
{
"hpa-attribute-key": "numaMem-1",
"hpa-attribute-value": "4",
"operator": "=",
"unit": "GB"
}
]
},
{
"hpa-feature": "cpuPinning",
"hpa-version": "v1",
"architecture": "generic",
"hpa-feature-attributes": [
{
"hpa-attribute-key": "logicalCpuThreadPinningPolicy",
"hpa-attribute-value": "prefer",
"operator": "="
},
{
"hpa-attribute-key": "logicalCpuPinningPolicy",
"hpa-attribute-value": "dedicated",
"operator": "="
}
]
}
]
},
{
"flavorLabel": "flavor_label_2",
"flavorProperties": [
{
"hpa-feature": "basicCapabilities",
"hpa-version": "v1",
"architecture": "generic",
"hpa-feature-attributes": [
{
"hpa-attribute-key": "numVirtualCpu",
"hpa-attribute-value": "8",
"operator": "="
},
{
"hpa-attribute-key": "virtualMemSize",
"hpa-attribute-value": "16",
"operator": "=",
"unit": "GB"
}
]
},
{
"hpa-feature": "numa",
"hpa-version": "v1",
"architecture": "generic",
"hpa-feature-attributes": [
{
"hpa-attribute-key": "numaNodes",
"hpa-attribute-value": "2",
"operator": "="
},
{
"hpa-attribute-key": "numaCpu-0",
"hpa-attribute-value": "2",
"operator": "="
},
{
"hpa-attribute-key": "numaCpu-1",
"hpa-attribute-value": "4",
"operator": "="
},
{
"hpa-attribute-key": "numaMem-0",
"hpa-attribute-value": "2",
"operator": "=",
"unit": "GB"
},
{
"hpa-attribute-key": "numaMem-1",
"hpa-attribute-value": "4",
"operator": "=",
"unit": "GB"
}
]
},
{
"hpa-feature": "memoryPageSize",
"hpa-version": "v1",
"architecture": "generic",
"hpa-feature-attributes": [
{
"hpa-attribute-key": "memoryPageSize",
"hpa-attribute-value": "2",
"operator": "=",
"unit": "GB"
}
]
}
]
}
]
}
},
"check_cloud_capacity": {
"type": "vim_fit",
"demands": [
"vG"
],
"properties": {
"controller": "multicloud",
"request": {
"vCPU": 10,
"Memory": {
"quantity": {
"get_param": "REQUIRED_MEM"
},
"unit": "GB"
},
"Storage": {
"quantity": {
"get_param": "REQUIRED_DISK"
},
"unit": "GB"
}
}
}
}
},
"optimization": {
"minimize": {
"sum": [
{
"distance_between": [
"customer_loc",
"vGMuxInfra"
]
},
{
"distance_between": [
"customer_loc",
"vG"
]
}
]
}
}
}
vCPE Homing Template (YAML)
---
homing_template_version: '2017-10-10'
parameters:
service_name: Residential vCPE
service_id: vcpe_service_id
customer_lat: 32.89748
customer_long: -97.040443
REQUIRED_MEM: 4
REQUIRED_DISK: 100
locations:
customer_loc:
latitude:
get_param: customer_lat
longitude:
get_param: customer_long
demands:
vGMuxInfra:
- inventory_provider: aai
inventory_type: service
attributes:
equipment_type: vG_Mux
customer_id: some_company
excluded_candidates:
- candidate_id: 1ac71fb8-ad43-4e16-9459-c3f372b8236d
existing_placement:
- candidate_id: 21d5f3e8-e714-4383-8f99-cc480144505a
vG:
- inventory_provider: aai
inventory_type: cloud
constraints:
constraint_vgmux_customer:
type: distance_to_location
demands:
- vGMuxInfra
properties:
distance: "< 100 km"
location: customer_loc
colocation:
type: zone
demands:
- vGMuxInfra
- vG
properties:
qualifier: same
category: region
hpa_constraint:
type: hpa
demands:
- vG
properties:
evaluate:
- flavorLabel: flavor_label_1
flavorProperties:
- hpa-feature: basicCapabilities
hpa-version: v1
architecture: generic
hpa-feature-attributes:
- hpa-attribute-key: numVirtualCpu
hpa-attribute-value: '4'
operator: "="
- hpa-attribute-key: virtualMemSize
hpa-attribute-value: '4'
operator: "="
unit: GB
- hpa-feature: numa
hpa-version: v1
architecture: generic
hpa-feature-attributes:
- hpa-attribute-key: numaNodes
hpa-attribute-value: '2'
operator: "="
- hpa-attribute-key: numaCpu-0
hpa-attribute-value: '2'
operator: "="
- hpa-attribute-key: numaCpu-1
hpa-attribute-value: '4'
operator: "="
- hpa-attribute-key: numaMem-0
hpa-attribute-value: '2'
operator: "="
unit: GB
- hpa-attribute-key: numaMem-1
hpa-attribute-value: '4'
operator: "="
unit: GB
- hpa-feature: cpuPinning
hpa-version: v1
architecture: generic
hpa-feature-attributes:
- hpa-attribute-key: logicalCpuThreadPinningPolicy
hpa-attribute-value: prefer
operator: "="
- hpa-attribute-key: logicalCpuPinningPolicy
hpa-attribute-value: dedicated
operator: "="
- flavorLabel: flavor_label_2
flavorProperties:
- hpa-feature: basicCapabilities
hpa-version: v1
architecture: generic
hpa-feature-attributes:
- hpa-attribute-key: numVirtualCpu
hpa-attribute-value: '8'
operator: "="
- hpa-attribute-key: virtualMemSize
hpa-attribute-value: '16'
operator: "="
unit: GB
- hpa-feature: numa
hpa-version: v1
architecture: generic
hpa-feature-attributes:
- hpa-attribute-key: numaNodes
hpa-attribute-value: '2'
operator: "="
- hpa-attribute-key: numaCpu-0
hpa-attribute-value: '2'
operator: "="
- hpa-attribute-key: numaCpu-1
hpa-attribute-value: '4'
operator: "="
- hpa-attribute-key: numaMem-0
hpa-attribute-value: '2'
operator: "="
unit: GB
- hpa-attribute-key: numaMem-1
hpa-attribute-value: '4'
operator: "="
unit: GB
- hpa-feature: memoryPageSize
hpa-version: v1
architecture: generic
hpa-feature-attributes:
- hpa-attribute-key: memoryPageSize
hpa-attribute-value: '2'
operator: "="
unit: GB
check_cloud_capacity:
type: vim_fit
demands:
- vG
properties:
controller: multicloud
request:
vCPU: 10
Memory:
quantity:
get_param: REQUIRED_MEM
unit: GB
Storage:
quantity:
get_param: REQUIRED_DISK
unit: GB
optimization:
minimize:
sum:
- distance_between:
- customer_loc
- vGMuxInfra
- distance_between:
- customer_loc
- vG