Table of Contents |
---|
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 size 1200 name vCPEPoliciesAndInformationSources pagePin 18
Homing Workflow
SO - HAS API (R) -
...
before retrieving homing policies
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
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
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "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"
]
}
]
}
}
}
|
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
---
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
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"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
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"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
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"status": "template",
"name": "Plan Name 1",
"links": [
[
{
"href": "http://conductor:8091/v1/plans/plan_id",
"rel": "self"
}
]
],
"id": "plan_id"
}
|
State - Solving
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "plans": [ { "status": "solving", "name": "Plan Name 1", "links": [ [ |
...
{ |
...
|
...
"href": "http://conductor:8091/v1/plans/plan_id", |
...
|
...
"rel": "self" } |
...
|
...
|
...
|
...
|
...
|
...
|
...
] |
...
|
...
], |
...
|
...
"id": |
...
"plan_id" } |
...
|
...
] } |