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
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 (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 pnf_id: some_pnf_id locations: customer_loc: latitude: get_param: customer_lat longitude: get_param: customer_long brg_loc: pnf_host_name: get_param: pnf_id 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: - label: flavor_label_1 features: - 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: "=" - label: flavor_label_2 features: - 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 - cloud_min_guarantee: type: attribute demands: - vG properties: evaluate: cpu_min_guarantee: true mem_min_guarantee: true - check_cloud_capacity: type: vim_fit demands: - vG properties: vim-controller: multicloud request: vCPU: 10 mem: quantity: get_param: REQUIRED_MEM unit: GB disk: quantity: get_param: REQUIRED_DISK unit: GB optimization: minimize: sum: - distance_between: - customer_loc - vGMuxInfra - distance_between: - customer_loc - vG
# sample homing template for vCPE
homing_template_version: '2017-10-10'
parameters:
service_name: Residential vCPE
service_id: vcpe_service_id
customer_lat: 32.897480
customer_long: -97.040443
REQUIRED_MEM: 4
REQUIRED_DISK: 100
pnf_id: some_pnf_id
# List of geographical locations
locations:
customer_loc:
latitude: {get_param: customer_lat}
longitude: {get_param: customer_long}
brg_loc:
pnf_host_name: {get_param: pnf_id}
# List of VNFs (demands) to be homed
demands:
vGMuxInfra:
- inventory_provider: aai
inventory_type: service
attributes:
equipment_type: vG_Mux
customer_id: some_company
orchestration-status: Activated
model-invariant-id: d4da47f8-df13-4c94-9ecf-5c417bf53e27
model-version-id: 80ca8d06-d770-4803-9186-a0f8a3091fee
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:
# distance between the customer and vGMuxInfra
- constraint_vgmux_customer:
type: distance_to_location
demands: [vGMuxInfra]
properties:
distance: < 100 km
location: customer_loc
# cloud region co-location constraint
- colocation:
type: zone
demands: [vGMuxInfra, vG]
properties:
qualifier: same
category: region
# required HPA features, grouped by label.
# Each label corresponds to a flavor mapped by Conductor
- hpa_constraint:
type: hpa
demands: [vG]
properties:
evaluate:
- label: flavor_label_1
features:
- 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: "="
- label: flavor_label_2
features:
- 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"
# min guarantee constraints
- cloud_min_guarantee:
type: attribute
demands: [vG]
properties:
evaluate:
cpu_min_guarantee: true
mem_min_guarantee: true
# check capacity
- check_cloud_capacity:
type: vim_fit
demands: [vG]
properties:
vim-controller: multicloud
request:
vCPU: 10
mem:
quantity: {get_param: REQUIRED_MEM}
unit: GB
disk:
quantity: {get_param: REQUIRED_DISK}
unit: GB
# objective function
optimization:
minimize:
sum:
- distance_between:
- customer_loc
- vGMuxInfra
- distance_between:
- customer_loc
- vG