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" } |
...
|
...
] } |