vCPE Homing Use Case
May 25, 2018
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
Gliffy Diagram is only supported by the cloud editor
Because Forge macros arent supported by the legacy editor, you'll need to convert this content to the cloud editor to display this macro properly. Find out more about converting to the cloud editor
Homing Workflow
SO - HAS API (R) - before retrieving homing policies
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
{
"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"
]
}
]
}
}
}
---
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
HAS Homing Response
State - Done
{
"plans": [
{
"status": "done",
"id": "plan_id",
"name": "Plan Name 1",
"links": [
[
{
"href": "http://conductor:8091/v1/plans/plan_id",
"rel": "self"
}
]
],
"recommendations": [
{
"vG": {
"inventory_provider": "aai",
"candidate": {
"candidate_id": "DLLSTX1A",
"cloud_owner": "CloudOwner1",
"inventory_type": "cloud",
"location_id": "DLLSTX1A",
"location_type": "openstack-cloud"
},
"attributes": {
"flavors": {
"flavor_label_1": "vim_flavor_X",
"flavor_label_2": "vim_flavor_Y"
},
"cloud_owner": "CloudOwner1",
"physical-location-id": "DLLSTX1A",
"cloud_version": "3.0",
"vim-id": "CloudOwner1_DLLSTX1A"
}
}
},
{
"vGMuxInfra": {
"attributes": {
"host_id": "vgmux_host_name",
"cloud_owner": "CloudOwner1",
"physical-location-id": "DLLSTX1A",
"service_instance_id": "21d5f3e8-e714-4383-8f99-cc480144505a",
"cloud_version": "3.0",
"vim-id": "CloudOwner1_DLLSTX1A"
},
"inventory_provider": "aai",
"service_resource_id": "12345",
"candidate": {
"is_rehome": "false",
"location_id": "DLLSTX1A",
"inventory_type": "service",
"candidate_id": "21d5f3e8-e714-4383-8f99-cc480144505a",
"host_id": "vgmux_host_name",
"cloud_owner": "CloudOwner1",
"location_type": "openstack-cloud"
}
}
}
]
}
]
}
State - Error
{
"plans": [
{
"status": "error",
"message": "Some error message",
"name": "Plan Name 1",
"links": [
[
{
"href": "http://conductor:8091/v1/plans/plan_id",
"rel": "self"
}
]
],
"id": "plan_id"
}
]
}
State - Template
{
"status": "template",
"name": "Plan Name 1",
"links": [
[
{
"href": "http://conductor:8091/v1/plans/plan_id",
"rel": "self"
}
]
],
"id": "plan_id"
}
State - Solving
{
"plans": [
{
"status": "solving",
"name": "Plan Name 1",
"links": [
[
{
"href": "http://conductor:8091/v1/plans/plan_id",
"rel": "self"
}
]
],
"id": "plan_id"
}
]
}